K8s-控制器
一 为什么使用控制器
pod控制器
作用:1.pod类型资源删除,不会重建
2.控制器可以帮助用户监控,并保证节点上运行定义好的pod副本数
3.pod超过或低于用户期望,控制器会创建、删除pod副本数量
控制器类型:
- RS控制器:按照用户期望的副本数量,创建pod, 用户写yaml,定义RS控制器,去定义pod模板,pod按照这个模板去运行
- deployment控制器
- DaemonSet
二 详解rs控制器原理
RS控制器原理:副本数保障、标签选择器
2.1 创建RS控制器
[root@k8s-master ~]# cat rs-nginx.yml
apiVersion: apps/v1
kind: ReplicaSet
metadata:name: nginx-rsnamespace: lxyspec:replicas: 3selector:matchLabels:app: nginxtemplate:metadata:name: nginx-podlabels:app: nginxspec:containers:- name: nginx-containersimage: nginx:1.14.0imagePullPolicy: IfNotPresentports:- name: httpcontainerPort: 80
kubectl create -f rs-nginx.yml
kubectl -n lxy get rs -owide
kubectl -n lxy get pods -l app=nginx -owide

2.2 删除Pod,查看rs如何保障副本数
删掉一个pod,但是会马上创建一个

2.3 pod和rs关系
kubectl -n lxy describe rs nginx-rs

2.4 修改RS控制器
1.对yaml修改副本数,修改资源配置:kubectl apply -f rs-nginx.yml
2.编辑RS控制器:kubectl -n lxy edit rs nginx-rs (有些是无法修改)
三 Deploy控制器与弹性扩缩容
kubectl scale --help
kubectl -n lxy scale --replicas=X rs nginx-rs
root@k8s-master ~]# kubectl -n lxy get pods -owide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-2 1/1 Running 2 5d17h 10.2.20.143 k8s-node13 <none> <none>
nginx-rs-2zhzn 1/1 Running 0 7h25m 10.2.231.96 k8s-node12 <none> <none>
nginx-rs-7p64w 1/1 Running 0 7h25m 10.2.20.146 k8s-node13 <none> <none>
[root@k8s-master ~]# kubectl -n lxy scale --replicas=4 rs nginx-rs
replicaset.apps/nginx-rs scaled
[root@k8s-master ~]# kubectl -n lxy get pods -owide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-2 1/1 Running 2 5d17h 10.2.20.143 k8s-node13 <none> <none>
nginx-rs-2zhzn 1/1 Running 0 7h34m 10.2.231.96 k8s-node12 <none> <none>
nginx-rs-7p64w 1/1 Running 0 7h34m 10.2.20.146 k8s-node13 <none> <none>
nginx-rs-8jf8p 1/1 Running 0 4s 10.2.20.150 k8s-node13 <none> <none>
nginx-rs-k9dvr 1/1 Running 0 4s 10.2.20.149 k8s-node13 <none> <none>
[root@k8s-master ~]# kubectl -n lxy scale --replicas=2 rs nginx-rs
replicaset.apps/nginx-rs scaled
[root@k8s-master ~]# kubectl -n lxy get pods -owide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-2 1/1 Running 2 5d17h 10.2.20.143 k8s-node13 <none> <none>
nginx-rs-2zhzn 1/1 Running 0 7h34m 10.2.231.96 k8s-node12 <none> <none>
nginx-rs-7p64w 1/1 Running 0 7h34m 10.2.20.146 k8s-node13 <none> <none>
nginx-rs-8jf8p 0/1 Terminating 0 12s 10.2.20.150 k8s-node13 <none> <none>
nginx-rs-k9dvr 0/1 Terminating 0 12s 10.2.20.149 k8s-node13 <none> <none>
获取当前rs资源的Yaml: kubectl -n lxy get rs nginx-rs -oyaml
四 Deploy与rs原理
Deployments | Kubernetes
kubectl -n kube-system get deploy coredns -o yaml
[root@k8s-master ~]# cat deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:name: nginx-deploymentnamespace: lxy
spec:replicas: 2selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:containers:- name: nginximage: nginx:1.14.2ports:- containerPort: 80resources:limits:cpu: 100mmemory: 200Mirequests:cpu: 100mmemory: 200Mi
[root@k8s-master ~]# kubectl get deployments.apps -owide -n lxy
NAME READY UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR
nginx-deployment 2/2 2 2 110s nginx nginx:1.14.2 app=nginx
[root@k8s-master ~]# kubectl get rs -n lxy
NAME DESIRED CURRENT READY AGE
nginx-deployment-58df99679c 2 2 2 115s
nginx-rs 2 2 2 8h
[root@k8s-master ~]# kubectl get pods -l app=nginx -n lxy
NAME READY STATUS RESTARTS AGE
nginx-deployment-58df99679c-tqxps 1/1 Running 0 119s
nginx-deployment-58df99679c-zhvcj 1/1 Running 0 119s
nginx-rs-2zhzn 1/1 Running 0 8h
nginx-rs-7p64w 1/1 Running 0 8h
pod和rs和deployment关系
kubectl describe pods nginx-deployment-AAA-XX
kubectl describe rs nginx-deployment-AAA
五 滚动更新详解原理
蓝绿更新:起一个新的Pod+删除一个旧pod,接替就是滚动更新
六 更新镜像版本其他玩法
1.kubectl edit rs资源
2.kubectl scale --replicas=xxx rs rs名
3.edit 编辑deployment资源
4.deployment提供了 修改镜像版本 参数 kubectl set image
七 版本更新与回滚详解
因为rs控制器还在,数据还在 kubectl get rs -owide -w / kubectl get rs -owide -n lxy

#查看版本是1.14.2
kubectl get deployments.apps -n lxy -owide
#修改版本为1.14.1
kubectl -n lxy set image deployment nginx-deployment nginx=nginx:1.14.1
#这时候在查看是1.14.1,使用命令回归后,恢复成1.14.2
kubectl rollout undo deployment nginx-deployment -n lxy
八 详解版本记录号玩法
1.kubectl create -f last-deploy-nginx.yml --record ----创建的时候,记录版本号
2.查看deploy版本信息
kubectl rollout history deployment last-nginx-deployment
kubectl rollout status deployment last-nginx-deployment
kubectl rollout history deployment last-nginx-deployment --revision=2(指定那个版本的镜像信息)
3.指定回滚到哪个版本
kubectl rollout undo deployment last-nginx-deployment --to-revision=1
相关文章:
K8s-控制器
一 为什么使用控制器 pod控制器 作用:1.pod类型资源删除,不会重建 2.控制器可以帮助用户监控,并保证节点上运行定义好的pod副本数 3.pod超过或低于用户期望,控制器会创建、删除pod副本数量 控制器类型&am…...
Meta 发布 LLAMA 3.1;特斯拉无人出租车推迟至 10 月;谷歌将向 Waymo 再投 50 亿美元
先瞧一下 Chat 和 Agent 的差异。 Chat(聊天):纯粹的 Chat,宛如一个主要由“大脑与嘴”组成的智能体,着重于信息处置和语言沟通。诸如 ChatGPT 这般的系统,其能够领会用户的询问,给出有益且连贯…...
C 语言基础概念总结
C 语言基础概念总结 一、数据类型 目录 C 语言基础概念总结 一、数据类型 基本数据类型 构造数据类型 二、变量与常量 三、运算符与表达式 算术运算符 关系运算符 逻辑运算符 赋值运算符 自增自减运算符 四、控制流语句 顺序结构 选择结构 循环结构 五、函数 …...
Django教程(000):初识Django
Django 是一个高级 Python Web 框架,旨在快速开发、简洁、实用。Django 提供了众多内置功能,使得开发者可以专注于编写应用程序的业务逻辑,而不需要过多关注底层细节。以下是 Django 的详细介绍: 1. Django 简介 Django 是一个开放源代码的 Web 框架,由 Python 编写,最…...
SQLynx数据库管理工具
背景:业主对网络安全要求比较高,不提供VPN等远程工具,也不能开放3306端口到互联网。那怎么样运维数据库就是个难题?找到了SQLynx这个可以网页访问的数据库管理工具,给大家分享一下。 1.介绍 SQLynx原名SQL Studio&…...
Java基础06:变量,常量,作用域(狂神说Java)
一.变量 有了static,即类变量,就可以不用new了可以直接调用,类变量之后再细讲 二.常量 三.变量的命名规范...
inflight 守恒建模
去上海博物馆参观古埃及文物展,人太多,体验很差,我可以当讲解员的,但没人听,都只为拍照发圈。 平心而论,老家殷墟可与之一战,建议将殷墟交给国家运营,而不是一个地级市文旅。 无心…...
HarmonyOS NEXT星河版零基础入门到实战
文章目录 一、HarmonyOS NEXT介绍学习内容1、鸿蒙APP开发2、能力套件开发3、全场景开发适合人群 持续更新中✒️总结 一、HarmonyOS NEXT介绍 放弃安卓框架之后,HarmonyOS NEXT成为真正独立于安卓、iOS的操作系统,堪称是一场史无前例的脱胎换骨。在其众多…...
测试开发面试题---JVM
JAVA的内存区域 程序计数器:线程私有的,保存当前线程的字节码文件。JAVA虚拟机栈:包含局部变量信息,用于方法的调用和执行。本地方法栈:与JAVA虚拟机栈类似,但只服务于本地方法。堆:所有线程共…...
python库 - jsonpath
JSONPath 是一种用于从 JSON 数据中提取数据的查询语言,类似于 XML 中的 XPath。它允许通过路径表达式来导航和查询 JSON 结构中的数据。JSONPath 在处理 API 响应、配置文件和复杂数据结构时非常有用。 以下是一些常用的 JSONPath 表达式及其功能: $&…...
[RK3588][Android12] Android->OTA包超过4个G导致打包失败
测试平台 Platform: RK3588 OS: Android12 问题说明: 有的客户需要往系统中内置大量apk,这样就导致最终打包的OTA包超过4个G,从而导致打包OTA的时候报错:Zipfile size would require ZIP64 extensions 解决方法: 可能…...
(雷达数据处理中的)跟踪算法(3) – 可用于目标跟踪实践的数据集介绍解析
说明 本博文作为跟踪算法系列博文的第3篇,对可用于目标跟踪的一份数据集进行了介绍,本文介绍的这份数据集将用于后续博文的目标跟踪实践。读者在阅读本博文前,建议先看看本系列的第一篇博文[1]:(雷达数据处理中的)跟踪…...
【C语言报错已解决】Use of Uninitialized Variable
🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 引言: 在编程中,未初始化的变量是一个常见的问题,它可能导致程序的行为变得不可预测。未初…...
3 Go语言的变量声明
本专栏将从基础开始,循序渐进,由浅入深讲解Go语言,希望大家都能够从中有所收获,也请大家多多支持。 查看相关资料与知识库 专栏地址:Go专栏 如果文章知识点有错误的地方,请指正!大家一起学习,…...
PyMySQL库的使用方法
过程和步骤: 安装 PyMySQL 首先,需要使用 pip 安装 PyMySQL 库: pip install pymysql连接数据库 使用 PyMySQL.connect() 方法可以建立到 MySQL 数据库的连接: import pymysql# 配置数据库连接参数 config {host: localhost…...
iOS 创建一个私有的 CocoaPods 库
创建一个私有的 CocoaPods 库(pod)涉及几个步骤,包括设置私有的 Git 仓库、创建 Podspec 文件、发布到私有仓库等等。以下是详细步骤: 设置私有 Git 仓库 首先,在 GitHub、GitLab 或 Bitbucket 上创建一个新的私有仓库…...
Linux_实现UDP网络通信
目录 1、实现服务器的逻辑 1.1 socket 1.2 bind 1.3 recvfrom 1.4 sendto 1.5 服务器代码 2、实现客户端的逻辑 2.1 客户端代码 3、实现通信 结语 前言: 在Linux下,实现传输层协议为UDP的套接字进行网络通信,网络层协议为IPv4&am…...
C# 代理模式
栏目总目录 概念 代理模式是一种结构型设计模式,它为其他对象提供一种代理以控制对这个对象的访问。在代理模式中,我们创建一个具有现有对象(称为“真实对象”或“被代理对象”)相同功能的代理对象。代理对象可以在客户端和目标对…...
【1】Python机器学习之基础概念
1、什么是机器学习 最早的机器学习应用——垃圾邮件分辨 传统的计算机解决问题思路: 编写规则,定义“垃圾邮件”,让计算机执行对于很多问题,规则很难定义规则不断变化 机器学习在图像识别领域的重要应用: 人脸识别…...
HashMap源码解析
目录 一:put方法流程 二:get方法 三:扩容机制 一:put方法流程 public V put(K key, V value) {return putVal(hash(key), key, value, false, true); }final V putVal(int hash, K key, V value, boolean onlyIfAbsent,boolean evict) {No…...
浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)
✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...
汽车生产虚拟实训中的技能提升与生产优化
在制造业蓬勃发展的大背景下,虚拟教学实训宛如一颗璀璨的新星,正发挥着不可或缺且日益凸显的关键作用,源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例,汽车生产线上各类…...
AI书签管理工具开发全记录(十九):嵌入资源处理
1.前言 📝 在上一篇文章中,我们完成了书签的导入导出功能。本篇文章我们研究如何处理嵌入资源,方便后续将资源打包到一个可执行文件中。 2.embed介绍 🎯 Go 1.16 引入了革命性的 embed 包,彻底改变了静态资源管理的…...
【C++特殊工具与技术】优化内存分配(一):C++中的内存分配
目录 一、C 内存的基本概念 1.1 内存的物理与逻辑结构 1.2 C 程序的内存区域划分 二、栈内存分配 2.1 栈内存的特点 2.2 栈内存分配示例 三、堆内存分配 3.1 new和delete操作符 4.2 内存泄漏与悬空指针问题 4.3 new和delete的重载 四、智能指针…...
逻辑回归暴力训练预测金融欺诈
简述 「使用逻辑回归暴力预测金融欺诈,并不断增加特征维度持续测试」的做法,体现了一种逐步建模与迭代验证的实验思路,在金融欺诈检测中非常有价值,本文作为一篇回顾性记录了早年间公司给某行做反欺诈预测用到的技术和思路。百度…...
群晖NAS如何在虚拟机创建飞牛NAS
套件中心下载安装Virtual Machine Manager 创建虚拟机 配置虚拟机 飞牛官网下载 https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-0.9.2-863.iso 群晖NAS如何在虚拟机创建飞牛NAS - 个人信息分享...
【Linux系统】Linux环境变量:系统配置的隐形指挥官
。# Linux系列 文章目录 前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变量的生命周期 四、环境变量的组织方式五、C语言对环境变量的操作5.1 设置环境变量:setenv5.2 删除环境变量:unsetenv5.3 遍历所有环境…...
Unity UGUI Button事件流程
场景结构 测试代码 public class TestBtn : MonoBehaviour {void Start(){var btn GetComponent<Button>();btn.onClick.AddListener(OnClick);}private void OnClick(){Debug.Log("666");}}当添加事件时 // 实例化一个ButtonClickedEvent的事件 [Formerl…...
HubSpot推出与ChatGPT的深度集成引发兴奋与担忧
上周三,HubSpot宣布已构建与ChatGPT的深度集成,这一消息在HubSpot用户和营销技术观察者中引发了极大的兴奋,但同时也存在一些关于数据安全的担忧。 许多网络声音声称,这对SaaS应用程序和人工智能而言是一场范式转变。 但向任何技…...
【Linux】Linux安装并配置RabbitMQ
目录 1. 安装 Erlang 2. 安装 RabbitMQ 2.1.添加 RabbitMQ 仓库 2.2.安装 RabbitMQ 3.配置 3.1.启动和管理服务 4. 访问管理界面 5.安装问题 6.修改密码 7.修改端口 7.1.找到文件 7.2.修改文件 1. 安装 Erlang 由于 RabbitMQ 是用 Erlang 编写的,需要先安…...

