一、工作负载控制器是什么
二、Deployment
三、DaemonSet
四、Job
五、CronJob
一、工作负载控制器是什么
工作负载控制器(Workload Controllers)是k8s的一个抽象概念,用于更高层次对象,部署和管理Pod。
常用工作负载控制器:
1、Deployment:?无状态应用部署
2、StatefulSet:?有状态应用部署
3、DaemonSet:?确保所有Node运行同一个Pod
4、Job:?一次性任务
5、CronJob:?定时任务
控制器的作用:
1、管理Pod对象
2、使用标签与Pod关联
3、控制器实现了Pod的运维,如滚动更新、伸缩、副本管理、维护Pod状态等
二、Deployment
功能:
1、管理Pod和replicaSet
2、具有上线部署、副本设定、滚动升级、回滚等功能
3、提供声明式更新,如只更新一个新的image
应用场景:
1、网站
2、API
3、微服务
使用流程<项目生命周期>:
应用程序--》部署--》升级--》回滚--》下线
部署:
第一步:部署镜像
导出一个yaml示例文件:
#?kubectl create deployment web --images=nginx -o yaml --dry-run=client > deployment.yaml
修改yaml文件
# kubectl apply -f xxx.yaml
# kubectl create deployment web? --images=nginx
根据运行deploymnet导出一个service:
# kubectl expose deployment web --port=80 --target-port=80 --type=NodePort --dry-run=client -o yaml? > service.yaml
访问地址为:node地址+31135
第二步:应用升级(更新镜像三种方式)
#?kubectl?apply -f xxx.yaml? ?<声明式:在yaml文件中修改相关配置 >
# kubectl set image deployment/web nginx=nginx:1.16
# kubectl edit deployment/web
滚动升级在k8s中的实现:
1、1个Deployment
2、2个ReplicaSet
查看deployment升级次数:
查看升级过程:
滚动升级是,会先创建一个新的RS,让后扩容新版为1,准备就绪后,就缩容一个旧版,直到升级完成。
滚动升级策略:
maxSurge:滚动更新过程中最大Pod副本数,确保在更新是启动的Pod数量比期望(replicas)Pod数量最大多出25%
maxUnavailable:滚动更新过程最大不可用Pod副本数,确保在更新时最大25%Pod数量不可用,即确保75%Pod数量是可用状态。
第三步:水平扩缩容(启动多实例,提高并发)
1、修改yaml里replicas值,再apply
2、kubectl scale deployment web --replicas=10
注:replicas参数控制Pod副本数量
第四部:回滚(发布失败恢复正常版本)
# kubectl rollout history deployment/web? ? ? ? #查看历史发布版本
# kubectl rollout undo deployment/web? ? ? ? #回滚上一个版本
# kubectl rollout undo deployment/web --to-revision=2? ? #回滚历史指定版本
注:回滚是重新部署某一次部署时的状态,即当时版本所有配置。
直观回滚,查看升级对应的版本及镜像:
最后,项目下线:
# kubectl delete deployment/web
# kubectl delete svc/web
Deployment: ReplicaSet
1、用途:
a.?Pod副本数量管理,不断对比当前与期望Pod数量
b.?Deployment每次发布都会创建一个RS作为记录,用于实现回滚
2、命名
a.?查看RS记录
# kubectl get rs
b.?版本对应rs记录
# kubectl rollout history deployment web
三、DaemonSet
1、功能
a.?在每一个Node上运行一个Pod
b.?新加入的Node也同样会自动运行一个Pod
2、应用场景
a.?网络插件(kube-proxy、calico)
b.?其它agent
3、示例
四、Job
1、JOb分类
a.?普通任务(job)
b.?定时任务(cronjob)
2、普通任务(job)特点
a.?一次性
3、普通任务(job)应用场景
a.?离线数据处理,视频解码等业务
4、普通任务(job)示例:
五、CronJob
1、Cronjob用于实现定时任务,像linux的Crontab一样。
a、定时任务
2、应用场景:
通知、备份
3、示例