当前位置: 首页>后端>正文

十一、常用工作负载控制器

一、工作负载控制器是什么

二、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:

十一、常用工作负载控制器,第1张

# kubectl expose deployment web --port=80 --target-port=80 --type=NodePort --dry-run=client -o yaml? > service.yaml

十一、常用工作负载控制器,第2张
十一、常用工作负载控制器,第3张

访问地址为:node地址+31135

第二步:应用升级(更新镜像三种方式)

#?kubectl?apply -f xxx.yaml? ?<声明式:在yaml文件中修改相关配置 >

# kubectl set image deployment/web nginx=nginx:1.16

# kubectl edit deployment/web

十一、常用工作负载控制器,第4张

滚动升级在k8s中的实现:

1、1个Deployment

2、2个ReplicaSet

十一、常用工作负载控制器,第5张

查看deployment升级次数:

十一、常用工作负载控制器,第6张

查看升级过程:

十一、常用工作负载控制器,第7张

滚动升级是,会先创建一个新的RS,让后扩容新版为1,准备就绪后,就缩容一个旧版,直到升级完成。

滚动升级策略:

十一、常用工作负载控制器,第8张

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副本数量

十一、常用工作负载控制器,第9张

第四部:回滚(发布失败恢复正常版本)

# kubectl rollout history deployment/web? ? ? ? #查看历史发布版本

# kubectl rollout undo deployment/web? ? ? ? #回滚上一个版本

# kubectl rollout undo deployment/web --to-revision=2? ? #回滚历史指定版本

注:回滚是重新部署某一次部署时的状态,即当时版本所有配置。

十一、常用工作负载控制器,第10张

直观回滚,查看升级对应的版本及镜像

十一、常用工作负载控制器,第11张

最后,项目下线:

# 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

十一、常用工作负载控制器,第12张

3、示例

十一、常用工作负载控制器,第13张

四、Job

1、JOb分类

a.?普通任务(job)

b.?定时任务(cronjob)

2、普通任务(job)特点

a.?一次性

3、普通任务(job)应用场景

a.?离线数据处理,视频解码等业务

4、普通任务(job)示例:

十一、常用工作负载控制器,第14张

五、CronJob

1、Cronjob用于实现定时任务,像linux的Crontab一样。

a、定时任务

2、应用场景:

通知、备份

3、示例

十一、常用工作负载控制器,第15张

https://www.xamrdz.com/backend/3c81936242.html

相关文章: