文章目录
工作负载控制器
工作负载控制器(Workload Controllers)是K8s的一个概念,用于更高层次对象,部署和管理Pod。
常用工作负载控制器:
- Deployment:无状态应用部署
- StatefulSet:有状态应用部署
- DaemonSet:确保所有Node运行同一个Pod
- Job:一次性任务
- Cronjob:定时任务
控制器作用:
- 管理Pod对象
- 使用标签与Pod关联
- 控制器实现了Pod的运维,例如滚动更新、伸缩、副本管理、维护Pod状态等
Deployment
Deployment的功能:
- 管理Pod和ReplicaSet
- 具有上线部署、副本设定、滚动升级、回滚等功能
- 提供声明式更新,例如只更新一个新的Image
应用场景:网站、API、微服务
Deployment:使用流程
Deployment部署
编写一个简单的资源清单文件
[root@master manifest]# cat deploy.yml
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: test
namespace: default
spec:
replicas: 4
selector:
matchLabels:
app: test
template:
metadata:
labels:
app: test
spec:
containers:
- name: test
image: busybox
imagePullPolicy: IfNotPresent
command: ["/bin/sh","-c","sleep 1000"]
Deployment:滚动升级
应用升级(更新镜像三种方式):
- kubectl apply -f xxx.yml
- kubectl set image deployment/web nginx=nginx:1.16
- kubectl edit deployment/web(不推荐使用此方法)
滚动升级: k8s对pod升级的默认策略,通过使用新版本的pod逐步更新旧版本pod,实现零停机发布,用户无感知。
滚动更新在k8s中的实现:
- 1个Deployment
- 2个ReplicaSet
滚动更新策略:
- maxSurge:滚动更新过程中最大pod副本数,确保在更新时启动的pod数量比期望(replicas)pod数量最大多出25%
- maxUnavailable:滚动更新过程中最大不可用pod副本数