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

工作负载控制器(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、示例

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐