K8s-控制器

devtools/2024/10/18 20:19:47/

一 为什么使用控制器

pod控制器

作用:1.pod类型资源删除,不会重建
           2.控制器可以帮助用户监控,并保证节点上运行定义好的pod副本数
           3.pod超过或低于用户期望,控制器会创建、删除pod副本数量

控制器类型:

  1. RS控制器:按照用户期望的副本数量,创建pod, 用户写yaml,定义RS控制器,去定义pod模板,pod按照这个模板去运行
  2. deployment控制器
  3. 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

九.DaemonSet 每个节点上运行一个Pod的副本

经典用法:

  • 每个节点运行集群的守护进程
  • 每个节点上运行日志收集守护进程 zabbix-agent /elk efk
  • 每个节点上运行监控守护进程

1.查看系统网络插件部署方式是Daemonset

2.根据标签选择器来保证每个node部署一个Pod的calico网络插件

kubectl -n kube-system get pod -owide --show-labels | grep calico
kubectl -n kube-system get ds --show-labels

3.daemonset 和 node 的关系,Node的亲和性

kubectl -n kube-system get ds calico-node -oyaml

4.可以看到nodeSelector中的信息,kubectl get nodes -owide --show-labels

可以看到labels 中含有该信息,是为node的亲和性


http://www.ppmy.cn/devtools/85987.html

相关文章

昇思 25 天学习打卡营第 24 天 | MindSpore Pix2Pix 实现图像转换

1. 背景&#xff1a; 使用 MindSpore 学习神经网络&#xff0c;打卡第 24 天&#xff1b;主要内容也依据 mindspore 的学习记录。 2. PixPix 介绍&#xff1a; MindSpore 的 Pix2Pix 图像转换 介绍 Pix2Pix是基于条件生成对抗网络&#xff08;cGAN, Condition Generative Ad…

c语言中的指针变量大小,以及指针类型的意义

指针变量的大小 注&#xff1a;不管是什么类型的指针&#xff0c;都是在创建指针变量。 指针变量的大小取决于一个地址存放的空间大小 例如&#xff1a;在X86中是4个字节。 X64中是8个字节。 //字符和整形的地址都是地址&#xff0c;不管什么类型&#xff0c;指针变量大小与…

如何按照差分阻抗规范来进行设计

差分阻抗的概念和实现有时都会被误解。此外&#xff0c;达到特定差分阻抗的通道设计通常以随意的方式完成。有时&#xff0c;我回顾旧设计并思考我如何设计走线以达到差分阻抗规范&#xff0c;然后我意识到如果我对差分阻抗有更好的理解&#xff0c;也许我可以做得更好&#xf…

掌握Postman:深度解析复杂认证流程的API测试策略

标题&#xff1a;掌握Postman&#xff1a;深度解析复杂认证流程的API测试策略 在当今的API开发和测试中&#xff0c;复杂认证流程是保障数据安全的关键。Postman作为API测试的利器&#xff0c;提供了多种方法来模拟和测试这些认证机制。本文将详细解释如何在Postman中测试具有…

photoshop学习笔记——选区3 选区的变化

选区制作完成之后可以对选区进行变化 主要有&#xff1a; 反选&#xff1a;shift ctrl I 变换 修改&#xff1a; 边界 设置选区的边界大小 类似 CSS中的borderSize平滑 对选区的角进行平滑扩展 向外扩展选区收缩 向内收缩选区羽化 让边界变得过渡透明度 设置…

学习008-02-04-04 Enable Split Layout in a List View(在列表视图中启用拆分布局 )

Enable Split Layout in a List View&#xff08;在列表视图中启用拆分布局 &#xff09; This lesson explains how to enable a Split Layout in a List View. 本课介绍如何在列表视图中启用拆分布局。 The Detail View opens when you select an object from the List Vie…

极空间私有云重磅推出:勒索病毒预警防护,筑牢NAS数据安全防线

在数字化时代背景下&#xff0c;数据安全已成为社会各界共同关注的焦点议题。为确保数据安全性&#xff0c;不仅需要实施定期的重要数据备份策略&#xff0c;还必须采纳全方位、多层次的安全保护措施&#xff0c;极空间私有云推出【勒索病毒预警防护】新功能&#xff0c;为用户…

让数组有序的最少交换次数

Trick : 让数组有序的最少交换次数 Problem One 1224. 交换瓶子 - AcWing题库 有 N 个瓶子&#xff0c;编号 1∼N&#xff0c;放在架子上。 比如有 5 个瓶子&#xff1a; 2 1 3 5 4要求每次拿起 2 个瓶子&#xff0c;交换它们的位置。 经过若干次后&#xff0c;使得瓶子的序号…