文章目录

  • 控制器简介
  • 控制器的分类
  • ReplicaSet控制器
  • Deployment
  • DaemonSet控制器
  • StatefulSet控制器
  • job控制器
  • Cronjob控制器
  • HPA控制器
  • 实验理解
  • ReplicaSet测试
  • Deployment测试
  • DaemonSet
  • job控制器
  • Cronjob测试

控制器简介

Pod控制器是用于实现管理pod的中间层确保pod资源符合预期的状态,pod的资源出现故障时,会尝试 进行重启,当根据重启策略无效,则会重新新建pod的资源。

控制器的分类

k8s restful api接口_回滚

ReplicaSet控制器

ReplicationController用来确保容器应用的副本数始终保持在用户定义的副本数,即如果有容器异常退出,会自动创建新的Pod来替代;而如果异常多出来的容器也会自动回收。

在新版本的Kubernetes中建议使用ReplicaSet来取代ReplicationController。ReplicaSet跟ReplicationController没有本质的不同,只是名字不一样,并且ReplicaSet支持集合式的selector

虽然ReplicaSet可以独立使用,但一般还是建议使用 Deployment 来自动管理ReplicaSet,这样就无需担心跟其他机制的不兼容问题(比如ReplicaSet不支持rolling-update但Deployment支持)。

代用户创建指定数量的pod副本数量,确保pod副本数量符合预期状态,并且支持滚动式自动扩容和缩容功能

ReplicaSet主要三个组件组成:

(1)用户期望的pod副本数量
  (2)标签选择器,判断哪个pod归自己管理
  (3)当现存的pod数量不足,会根据pod资源模板进行新建

帮助用户管理无状态的pod资源,精确反应用户定义的目标数量,但是RelicaSet不是直接使用的控制器,而是使用Deployment

k8s restful api接口_Deployment_02

Deployment

它为Pod和Replica Set(下一代Replication Controller)提供声明式更新。

只需要在 Deployment 中描述想要的目标状态是什么,Deployment controller 就会帮您将 Pod 和ReplicaSet 的实际状态改变到您的目标状态。

也可以定义一个全新的 Deployment 来创建 ReplicaSet 或者删除已有的 Deployment 并创建一个新的来替换

k8s restful api接口_回滚_03

典型的用例如下:

(1)使用Deployment来创建ReplicaSet。ReplicaSet在后台创建pod。
检查启动状态,看它是成功还是失败。
(2)然后,通过更新Deployment的PodTemplateSpec字段来声明Pod的新状态。
这会创建一个新的ReplicaSet,Deployment会按照控制的速率将pod从旧的
ReplicaSet移动到新的ReplicaSet中。
(3)如果当前状态不稳定,回滚到之前的Deployment revision。
每次回滚都会更新Deployment的revision。
(4)扩容Deployment以满足更高的负载。
(5)暂停Deployment来应用PodTemplateSpec的多个修复,然后恢复上线。
(6)根据Deployment 的状态判断上线是否hang住了。
(7)清除旧的不必要的 ReplicaSet。

DaemonSet控制器

它用于确保集群中的每一个节点只运行特定的pod副本,
通常用于实现系统级后台任务。比如ELK服务

特性:服务是无状态的 服务必须是守护进程

k8s restful api接口_Deployment_04

StatefulSet控制器

管理有状态应用

k8s restful api接口_回滚_05

job控制器

只要完成就立即退出,不需要重启或重建。

k8s restful api接口_回滚_06

Cronjob控制器

周期性任务控制,不需要持续后台运行

k8s restful api接口_回滚_07

HPA控制器

k8s restful api接口_k8s restful api接口_08

实验理解

1.

k8s restful api接口_Deployment_09

2.用DaemonSet控制器就很容器实现

k8s restful api接口_Pod_10

k8s restful api接口_Deployment_11

3.

k8s restful api接口_回滚_12

k8s restful api接口_k8s restful api接口_13

ReplicaSet测试

k8s restful api接口_回滚_14

k8s restful api接口_Pod_15

1.这里截图遗失了

k8s restful api接口_回滚_16


k8s restful api接口_Pod_17

k8s restful api接口_回滚_18


这是网图,重点看注释

k8s restful api接口_Deployment_19

2.

k8s restful api接口_Deployment_20

k8s restful api接口_Pod_21

3.

k8s restful api接口_Pod_22

4.

k8s restful api接口_Pod_23

5.测试pod的拉伸,直接将yaml文件中副本的个数修改就可把副本数量修改至现在的3个,可以看到重新更改文件时,直接成功

k8s restful api接口_k8s restful api接口_24

缩减时,也直接更改副本个数就可以。

k8s restful api接口_k8s restful api接口_25


6.测试更改某个pod的标签

k8s restful api接口_Deployment_26

2)更改标签

k8s restful api接口_Deployment_27

3) 之前是3个pod,由于改了标签,控制器又启了一个pod,控制自己维护的标签的pod始终是3个

k8s restful api接口_回滚_28

4)

k8s restful api接口_Deployment_29

5)

k8s restful api接口_Pod_30

6)

k8s restful api接口_Deployment_31


6.测试先更改标签,再恢复标签会怎么样

k8s restful api接口_k8s restful api接口_32

k8s restful api接口_回滚_33

Deployment测试

1.删除之前的

k8s restful api接口_k8s restful api接口_34

k8s restful api接口_Deployment_35

1.

k8s restful api接口_回滚_36

k8s restful api接口_回滚_37

k8s restful api接口_k8s restful api接口_38

2.

k8s restful api接口_Pod_39

3.

k8s restful api接口_k8s restful api接口_40

k8s restful api接口_k8s restful api接口_41


4.测试拉伸

k8s restful api接口_k8s restful api接口_42

5.测试滚动更新,将myapp的版本改为v2即可

k8s restful api接口_k8s restful api接口_43

k8s restful api接口_k8s restful api接口_44

k8s restful api接口_Pod_45

6.测试回滚

k8s restful api接口_回滚_46

k8s restful api接口_k8s restful api接口_47

k8s restful api接口_回滚_48

k8s restful api接口_Deployment_49

查看回滚的状态

k8s restful api接口_Pod_50


命令行

k8s restful api接口_Deployment_51

DaemonSet

k8s restful api接口_k8s restful api接口_52

k8s restful api接口_回滚_53

k8s restful api接口_Pod_54

1.

k8s restful api接口_k8s restful api接口_55

k8s restful api接口_Deployment_56

k8s restful api接口_回滚_57


在ser1harbor仓库中拉取zabbix镜像,上传至harbor仓库

k8s restful api接口_Deployment_58

1.

k8s restful api接口_回滚_59

2.

k8s restful api接口_Deployment_60

3.

k8s restful api接口_Pod_61

4.

k8s restful api接口_k8s restful api接口_62

k8s restful api接口_Pod_63

5.测试删除一个pod

k8s restful api接口_回滚_64

k8s restful api接口_Pod_65

job控制器

1.在harbor仓库中拉取per镜像,上传至私有仓库

2.

k8s restful api接口_k8s restful api接口_66


k8s restful api接口_回滚_67

3.计算的结果在日志中

k8s restful api接口_Deployment_68

Cronjob测试

k8s restful api接口_Deployment_69

k8s restful api接口_Pod_70

k8s restful api接口_回滚_71

-w 实时监控状态