控制器的作用:盯着pod,按照你的要求,意愿运行。也可以理解成"管 pod 的总管",它的核心作用就是,你想让系统里有多少个 pod、pod 要怎么跑、挂了怎么办、什么时候升级回退,控制器都帮你盯着。你只要说清楚"期望状态",它就尽量把实际状态拉回去,所以它最大的价值就是 自动创建、自动补齐、自动替换、自动扩缩容、自动升级,省得你一个个手工盯着 Pod。
控制器的分类:
- ReplicaSet
作用:保证某一类 Pod 的数量一直对得上,比如你要 2 个,它就一直维持 2 个。
大白话:就是"保底人数管理"。
例子:你写 replicas: 2,它就给你保持 2 个 Pod;改成 4,就自动补到 4 个。
建立控制器

监控:

测试:

拉伸:
4个

2个

0个控制器不会删

测试:

2个

0个

删除控制器后

才会消失
- Deployment
作用:它是更常用的控制器,专门管应用发布、升级、回滚。
大白话:就是"带升级功能的总管",底下其实靠 ReplicaSet 管 Pod。
例子:把 myapp:v1 改成 myapp:v2,Deployment 会滚动更新;如果发现有问题,还能回退到 v1。
创建控制器

监控:

发布内容,列表显示两个运行IP:

访问:

升级和回滚

访问:

回滚到v1:

访问:

额外功能:还可以 pause/resume 暂停和继续更新,更新策略里还能设置 maxSurge、maxUnavailable 来控制更新过程。
版本更新管理及优化

查看更新策略信息

设置更新信息

暂停更新

测试:

解除暂停

- DaemonSet
作用:让每台节点机器上都跑一个 Pod。
大白话:就是"每台机器都安排一个值班员"。
例子:你集群里新增一台 node3,DaemonSet 会自动在 node3 上也起一个 pod,常用于日志采集、监控、运维代理这类程序。

重新生成集群主机注册时需要的token

另外开启一个主机node3,并设定在初始化集群时的所有设定确保所有服务的开启,当node3加入集群后会在node3中立即群星指定的pod,其原因是因为运行了daemonset
bash
[root@node3 ~]# kubeadm join 172.25.254.100:6443 --token it0ib2.5p3xfqge1n5fy4h2 --discovery-token-ca-cert-hash sha256:b64c8a1b2f13e5df6f0a48345c316807720b9ba985231f44505f426e1628d641 --cri-socket unix:///var/run/cri-dockerd.sock
- Job
作用:用来跑一次性任务,任务做完就结束。
大白话:就是"干完活就下班"。
例子:执行一个脚本,输出一句话,然后退出;你可以设 completions 控制总共要完成几次,parallelism 控制同时跑几个。

文件内容:

监控:

测试:

- CronJob
作用:按时间定时创建 Job。
大白话:就是"K8s 里的定时器"。
例子:*/2 * * * * 表示每2分钟跑一次,常用于定时备份、定时清理、定时汇报。
* * * * *(分 时 日 月 周)

文件内容

监控:

测试结果
