锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

3-1.pod控制器

时间:2023-01-29 19:30:01 j27射频同轴连接器

一、Pod控制器简介

在kubernetes中,按照pod可分为两类:
自主式pod:kubernetes直接创建Pod,这种pod删除后不会重建
创建了控制器pod:kubernetes通过创建了控制器pod,这种pod删除后,将自动重建

1.Pod控制器

Pod控制器是管理pod使用中间层Pod控制器完成后,只需告诉我Pod控制器,你想要多少?Pod没关系。它将创建满足条件的产品Pod确保每一个Pod如果资源处于用户期望的目标状态。Pod资源在运行中出现故障,将根据指定策略重新安排Pod。

2.Pod控制器类型

控制器类型 作用
ReplicaSet 保证副本数量保持在预期值,并支持pod数量扩展容量,镜像版升级
Deployment 通过控制ReplicaSet来控制Pod,并支持滚动升级和退回版本
Horizontal Pod Autoscaler 可根据集群负载自动水平进行调整Pod削峰填谷实现数量
DaemonSet 指定集群Node上操作,只操作一个副本,一般用于保护过程任务
Job 它创造的pod只要完成任务就立即退出,不需要重启或重建,用于执行一次性任务
Cronjob 它创建的Pod负责周期性任务控制,无需后台连续运行
StatefulSet 管理有状态应用

二、ReplicaSet(RS)

ReplicaSet主要作用是保证一定数量pod正常运行,它将继续监控这些Pod一旦Pod如果发生故障,将重新启动或重建。它还支持对方pod镜像版本的数量扩展和升降。

[root@t3-tkhijbs-jcsszy-app09 yaml]# cat nginx-pod.yaml  apiVersion: apps/v1 kind: ReplicaSet    metadata:   name: pc-replicaset   namespace: dev spec:   replicas: 3   selector:      matchLabels:       app: nginx-pod   template:     metadata:       labels:         app: nginx-pod     spec:       containers:       - name: nginx         image: nginx  

其中,需要新了解的配置项是spec以下选项:
(1)replicas:指定的副本数量实际上是当前的rs创建出来的pod默认为1
(2)selector:选择器的作用是建立pod控制器和pod使用的关系Label Selector机制在pod模板上定义label,在控制器上定义选择器(selector),当前控制器能管理什么?pod了
(3)template:模板是当前控制器的创建pod使用的模板实际上是前面解释的pod的定义

1.扩 缩pod数量

[root@t3-tkhijbs-jcsszy-app09 ~]# kubectl get ReplicaSet -n dev NAME            DESIRED   CURRENT   READY   AGE pc-replicaset   3         3         3       27m  [root@t3-tkhijbs-jcsszy-app09 ~]# kubectl edit rs pc-replicaset -n dev #编辑rs修改副本数量spec:replicas: 5即可 .这个数字是根据你的要求修改的 

2.镜像升降级

root@t3-tkhijbs-jcsszy-app09 ~]# kubectl edit rs pc-replicaset -n dev #直接修改镜像版本即可 

3.删除RS

[root@t3-tkhijbs-jcsszy-app09 ~]# kubectl delete rs pc-replicaset -n dev
或者
[root@t3-tkhijbs-jcsszy-app09 yaml]# kubectl delete -f nginx-pod.yaml 

三、deployment(deploy)

为了更好的解决服务编排的问题,kubernetes在V1.2版本开始,引入了Deployment控制器。值得一提的是,这种控制器并不直接管理pod,而是通过管理ReplicaSet来简介管理Pod,即:Deployment管理ReplicaSet,ReplicaSet管理Pod。所以Deployment比ReplicaSet功能更加强大。
支持ReplicaSet的所有功能
支持发布的停止、继续
支持滚动升级和回滚版本

[root@t3-tkhijbs-jcsszy-app09 yaml]# cat nginx-pod.yaml 
apiVersion: apps/v1
kind: Deployment      
metadata:
  name: pc-deployment
  namespace: dev
spec: 
  replicas: 3
  selector:
    matchLabels:
      app: nginx-pod
  template:
    metadata:
      labels:
        app: nginx-pod
    spec:
      containers:
      - name: nginx
        image: nginx

[root@t3-tkhijbs-jcsszy-app09 yaml]# kubectl apply -f nginx-pod.yaml 
deployment.apps/pc-deployment created

1.Pod容器扩缩容

[root@t3-tkhijbs-jcsszy-app09 yaml]# kubectl get pod -n dev
NAME                             READY   STATUS    RESTARTS   AGE
pc-deployment-7d4f548fb9-mlksf   1/1     Running   0          94s
pc-deployment-7d4f548fb9-w5p2l   1/1     Running   0          94s
pc-deployment-7d4f548fb9-xlvvv   1/1     Running   0          94s
[root@t3-tkhijbs-jcsszy-app09 yaml]# kubectl edit deploy pc-deployment -n dev
#修改这里的数字就好了
replicas: 5
[root@t3-tkhijbs-jcsszy-app09 yaml]# kubectl get pod -n dev
NAME                             READY   STATUS    RESTARTS   AGE
pc-deployment-7d4f548fb9-5z7n8   1/1     Running   0          27s
pc-deployment-7d4f548fb9-gfg7p   1/1     Running   0          27s
pc-deployment-7d4f548fb9-mlksf   1/1     Running   0          3m43s
pc-deployment-7d4f548fb9-w5p2l   1/1     Running   0          3m43s
pc-deployment-7d4f548fb9-xlvvv   1/1     Running   0          3m43s

2.版本回退

2.1 --record

此参数会记录更新的过程

[root@t3-tkhijbs-jcsszy-app09 yaml]# cat nginx-pod.yaml 
apiVersion: apps/v1
kind: Deployment      
metadata:
  name: pc-deployment
  namespace: dev
spec: 
  replicas: 3
  selector:
    matchLabels:
      app: nginx-pod
  template:
    metadata:
      labels:
        app: nginx-pod
    spec:
      containers:
      - name: nginx
        image: nginx:1.17.1

[root@t3-tkhijbs-jcsszy-app09 yaml]# kubectl apply -f nginx-pod.yaml --record
deployment.apps/pc-deployment created

[root@t3-tkhijbs-jcsszy-app09 ~]# kubectl get rs -n dev
NAME                       DESIRED   CURRENT   READY   AGE
pc-deployment-858db84f89   3         3         3       9s

[root@t3-tkhijbs-jcsszy-app09 ~]# kubectl get pod -n dev -w
NAME                             READY   STATUS    RESTARTS   AGE
pc-deployment-858db84f89-8r5kg   1/1     Running   0          20s
pc-deployment-858db84f89-lc7wb   1/1     Running   0          20s
pc-deployment-858db84f89-s4f8f   1/1     Running   0          20s


开始更新镜像

kubectl set image deployment pc-deployment nginx=nginx:1.17.2 -n dev

更新完毕之后发现,产生了一个新的rs控制器pc-deployment-6c78d7875b

[root@t3-tkhijbs-jcsszy-app09 ~]# kubectl get rs -n dev
NAME                       DESIRED   CURRENT   READY   AGE
pc-deployment-6c78d7875b   3         3         3       85s
pc-deployment-858db84f89   0         0         0       4m14s

新的pod也是基于pc-deployment-6c78d7875b产生的

[root@t3-tkhijbs-jcsszy-app09 ~]# kubectl get pod -n dev
NAME                             READY   STATUS    RESTARTS   AGE
pc-deployment-6c78d7875b-9j27t   1/1     Running   0          3m1s
pc-deployment-6c78d7875b-c4wfl   1/1     Running   0          3m
pc-deployment-6c78d7875b-k5jsc   1/1     Running   0          2m57s

2.2 rollout

kubectl rollout: 版本升级相关功能,支持下面的选项:
status 显示当前升级状态
history 显示 升级历史记录
pause 暂停版本升级过程
resume 继续已经暂停的版本升级过程
restart 重启版本升级过程
undo 回滚到上一级版本(可以使用–to-revision回滚到指定版本)

实例:

[root@t3-tkhijbs-jcsszy-app09 yaml]# cat nginx-pod.yaml 
apiVersion: apps/v1
kind: Deployment      
metadata:
  name: pc-deployment
  namespace: dev
spec: 
  replicas: 3
  selector:
    matchLabels:
      app: nginx-pod
  template:
    metadata:
      labels:
        app: nginx-pod
    spec:
      containers:
      - name: nginx
        image: nginx:1.17.1
[root@t3-tkhijbs-jcsszy-app09 yaml]# kubectl apply -f nginx-pod.yaml --record
deployment.apps/pc-deployment created

[root@t3-tkhijbs-jcsszy-app09 yaml]# kubectl get rs -n dev
NAME                       DESIRED   CURRENT   READY   AGE
pc-deployment-858db84f89   3         3         3       23s

[root@t3-tkhijbs-jcsszy-app09 yaml]# kubectl get pod -n dev
NAME                             READY   STATUS    RESTARTS   AGE
pc-deployment-858db84f89-khkml   1/1     Running   0          29s
pc-deployment-858db84f89-swkkv   1/1     Running   0          29s
pc-deployment-858db84f89-tnn8z   1/1     Running   0          29s

更改镜像版本

[root@t3-tkhijbs-jcsszy-app09 yaml]# vim nginx-pod.yaml 
  image: nginx:1.17.2

更新配置

[root@t3-tkhijbs-jcsszy-app09 yaml]# kubectl apply -f nginx-pod.yaml --record
deployment.apps/pc-deployment configured

查看更新历史记录

[root@t3-tkhijbs-jcsszy-app09 ~]# kubectl rollout history deploy pc-deployment -n dev
deployment.apps/pc-deployment 
REVISION  CHANGE-CAUSE
1         kubectl apply --filename=nginx-pod.yaml --record=true
2         kubectl apply --filename=nginx-pod.yaml --record=true

rs控制器也更新了

[root@t3-tkhijbs-jcsszy-app09 ~]# kubectl get rs -n dev
NAME                       DESIRED   CURRENT   READY   AGE
pc-deployment-6c78d7875b   3         3         3       19m
pc-deployment-858db84f89   0         0         0       33m

开始回滚到上一个版本

这里直接使用–to-revision=1回滚到了1版本, 如果省略这个选项,就是回退到上个版本

[root@t3-tkhijbs-jcsszy-app09 ~]# kubectl rollout undo deployment pc-deployment --to-revision=1 -n dev
deployment.apps/pc-deployment rolled back

[root@t3-tkhijbs-jcsszy-app09 ~]# kubectl get rs -n dev
NAME                       DESIRED   CURRENT   READY   AGE
pc-deployment-6c78d7875b   0         0         0       21m
pc-deployment-858db84f89   3         3         3       34m

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章