Pod控制器
pod控制器分类:
- ReplicationController:比较原始的pod控制器,已经被废弃(生产少用)
- ReplicaSet:保证副本数量一直维持在期望值(生产少用)
- Deployment:用于部署无状态服务(生产常用)
- StatefulSet:用户部署有状态服务(生产常用)
- DaemonSet :守护进程服务,所有节点或匹配的节点上都部署一个Pod(生产常用)
- Job:用于执行一次性任务
- Cronjob:控制周期性任务控制
- HPA:根据集群负载自动扩缩容
以下主要讲解Deployment、StatefulSet、DaemonSet 、HPA
1. Deployment
# 1.更新
kubectl set image deploy/nginx nginx=nginx:1.15.2 --record
kubectl set image deploy/nginx nginx=nginx:1.15.3 --record
kubectl set image deploy/nginx nginx=nginx:1.15.4 --record
## 支持两种更新策略
### (1) Recreate删除重建
### (2) RollingUpdate回滚升级(默认方式)
# 2.回滚
## 2.1 查看历史记录
kubectl rollout history deploy nginx
## 2.2 回滚到上一个版本
kubectl rollout undo deploy nginx
## 2.3 查看指定版本详细信息
kubectl rollout history deploy nginx --revision=5
## 2.4 回滚到指定版本
kubectl rollout undo deploy nginx --to-revision=5
## 2.5 查看状态
kubectl get deploy nginx -yaml
# 3.扩缩容
kubetcl scale --replicas=3 delpoy nginx
# 4. 更新暂停和恢复
## 4.1 暂停
kubectl rollout pause delpoy nginx
## 4.2 恢复
kubectl rollout resume delpoy nginx
2. StatefulSet
# 1.扩缩容(扩缩容顺序)
kubetcl scale --replicas=3 sts web
# 2.更新策略
# 3. 灰度发布
...
updateStrategy:
type: RollingUpdate
rollingUpdate:
partition: 2 # id小于2的更新
...
# 4. 级联和非级联删除
## 4.1 级联删除: 删除sts时同时删除Pod(默认)
kubectl delete sts web
## 4.1 非级联删除: 删除sts时不删除Pod
kubectl delete sts web --cascade=false
3. DaemonSet
# 更新和回滚
kubectl set image ds nginx nginx=nginx:1.15.2 --record
# 更新策略一般设置为
updateStrategy:
type: OnDelete
4. HPA
# 根据pod的CPU使用率超过20%自动扩缩容,最小副本数2,最大副本数5
kubectl autoscale deploy demo-nginx --cpu-percent=20 --min=2 --max=5