Kubernetes_Deployment全解析(无状态的Pod)
前言一、创建Deployment1.1 创建Deployment
1.2 Deployment yaml文件
在该 yaml 文件中:
创建名为 nginx-deployment(由 .metadata.name 字段标明)的 Deployment。spec 中有三个字段,分别是 replicas 副本数、selector 选择器、template模板,如下:
(1) 该 Deployment 创建三个(由 .spec.replicas 字段标明)Pod 副本。
(2) .spec.selector 字段定义了 Deployment 如何查找要管理的 Pod。在这里,你选择在 Pod 模板中定义的标签(app: nginx)。 不过,更复杂的选择规则是也可能的,只要 Pod 模板本身满足所给规则即可。
(3) template 字段包含以下子字段:Pod 被使用 .metadata.labels 字段打上 app: nginx 标签。Pod 模板规约(即 .template.spec 字段)指示 Pod 运行一个 nginx 容器, 该容器运行版本为 1.14.2 的 nginx Docker Hub 镜像。创建一个容器并使用 .spec.template.spec.containers[0].name 字段将其命名为 nginx。
1.3 查看当前deploy(get命令和rollout命令)
查看当前deploy,包括两条命令,如下:
运行 kubectl get deployments 检查 Deployment 是否已创建。 如果仍在创建 Deployment,则输出类似于:
在检查集群中的 Deployment 时,所显示的字段有:
(1) NAME 列出了名字空间中 Deployment 的名称。(2) READY 显示应用程序的可用的“副本”数。显示的模式是“就绪个数/期望个数”。(3) UP-TO-DATE 显示为了达到期望状态已经更新的副本数。(4) AVAILABLE 显示应用可供用户使用的副本数。(5) AGE 显示应用程序运行的时间。
请注意期望副本数是根据 .spec.replicas 字段设置 3。
解释一下,这个 rollout 也是查看命令,只是这个 rollout 命令用得比 get 命令少,rollout 的英文就是 展示 的意思
1.4 查看当前rs(get命令)
ReplicaSet 输出中包含以下字段:
(1) NAME 列出名字空间中 ReplicaSet 的名称;(2) DESIRED 显示应用的期望副本个数,即在创建 Deployment 时所定义的值。 此为期望状态;(3) CURRENT 显示当前运行状态中的副本个数;(4) READY 显示应用中有多少副本可以为用户提供服务;(5) AGE 显示应用已经运行的时间长度。
注意 ReplicaSet 的名称始终被格式化为[Deployment名称]-[哈希]。 其中的哈希字符串与 ReplicaSet 上的 pod-template-hash 标签一致。
1.5 查看当前pod(get命令)
二、更新Deployment
当前镜像为 1.16.0 ,更新为 1.16.1 ,有两种方式:
方式1:kubectl set image deployment/nginx-deployment nginx=nginx:1.16.1方式2:kubectl edit deploy xxx 直接修改当前运行的yaml文件
2.1 通过具体的kubectl命令来更新deploy
更换镜像之前,如下:
2.2 通过修改当前运行的yaml文件来更新deploy
需求:nignx 从 1.16.2 变成 1.17
方式:kubectl edit deploy xxx 直接修改当前运行的yaml文件
三、回滚Deployment3.1 查看版本历史信息
如果说更新deployment是正向变动,那么回滚Deployment就是反向变动。
回滚/反向变动都有一个版本的概念,查看版本的命令如下:
3.2 回滚到指定版本
回滚/反向变动的命令包括回滚到上一版本和回滚到指定版本,如下:
kubectl rollout undo deployment/nginx-deploymentkubectl rollout undo deployment/nginx-deployment --to-revision=1
四、缩放Deployment
缩放包括手动缩放和自动缩放两种方式,命令如下:
手动缩放:kubectl scale deployment/nginx-deployment --replicas=10自动缩放:kubectl autoscale deployment/nginx-deployment --min=10 --max=15 --cpu-percent=80
4.1 手动缩放
4.2 自动缩放
五、暂停、恢复 Deployment 的上线过程
暂停:kubectl rollout pause deployment/nginx-deployment恢复:kubectl rollout resume deployment/nginx-deployment
5.1 暂停deploy
处于暂停状态无法更新,如下:
kubectl set image deployment/nginx-deployment nginx=nginx:1.17kubectl rollout history deployment/nginx-deploymentkubectl get rs
暂停 Deployment 上线之前的初始状态将继续发挥作用,但新的更新在 Deployment 上线被暂停期间不会产生任何效果。
5.2 恢复deploy
kubectl rollout resume deployment/nginx-deploymentkubectl get rs
六、Deployment 状态6.1 进行中的Deployment
执行下面的任务期间,Kubernetes 标记 Deployment 为进行中(Progressing)_:
(1) Deployment 创建新的 ReplicaSet(2) Deployment 正在为其最新的 ReplicaSet 扩容(3) Deployment 正在为其旧有的 ReplicaSet(s) 缩容(4) 新的 Pod 已经就绪或者可用(就绪至少持续了 MinReadySeconds 秒)。
当上线过程进入“Progressing”状态时,Deployment 控制器会向 Deployment 的 .status.conditions 中添加包含下面属性的状况条目:
你可以使用 kubectl rollout status 监视 Deployment 的进度。
6.2 成功的Deployment
当 Deployment 具有以下特征时,Kubernetes 将其标记为完成(Complete);
(1) 与 Deployment 关联的所有副本都已更新到指定的最新版本,这意味着之前请求的所有更新都已完成。(2) 与 Deployment 关联的所有副本都可用。(3) 未运行 Deployment 的旧副本。
当上线过程进入“Complete”状态时,Deployment 控制器会向 Deployment 的 .status.conditions 中添加包含下面属性的状况条目:
这一 Progressing 状况的状态值会持续为 “True”,直至新的上线动作被触发。 即使副本的可用状态发生变化(进而影响 Available 状况),Progressing 状况的值也不会变化。
你可以使用 kubectl rollout status 检查 Deployment 是否已完成。 如果上线成功完成,kubectl rollout status 返回退出代码 0。
6.3 失败的Deployment
你的 Deployment 可能会在尝试部署其最新的 ReplicaSet 受挫,一直处于未完成状态。 造成此情况一些可能因素如下:
(1) 配额(Quota)不足(2) 就绪探测(Readiness Probe)失败(3) 镜像拉取错误(4) 权限不足(5) 限制范围(Limit Ranges)问题(6) 应用程序运行时的配置错误
检测此状况的一种方法是在 Deployment 规约中指定截止时间参数: (.spec.progressDeadlineSeconds)。 .spec.progressDeadlineSeconds 给出的是一个秒数值,Deployment 控制器在(通过 Deployment 状态) 标示 Deployment 进展停滞之前,需要等待所给的时长。
总结
创建deployment并查看deploy、查看rs、查看pod更新deployment:要么通过kubectl命令、要么通过edit deploy xxx来更新回滚deployment:学会查看版本历史信息的两条命令,学会回滚到指定版本缩放deployment:手动缩放+自动缩放暂停deployment+恢复deploymentdeployment的状态
天天打码,天天进步!!
最近更新影视资讯
- 韵府群玉
- 老年临终关怀护理集锦9篇
- 如何评价剧场版动画《和谐(harmony/ハーモニー)》原作:伊藤计划 ?
- 智人战胜尼人的决定性因素 是神灵崇拜与艺术品 在3万7千年前智人击败了远比自己强
- 沈阳参考消息(2017年1月11日)
- 密集架区密集架书库图书馆负一楼期刊阅览区中外文期刊图书馆一楼图书借阅区(A-H
- 费维光:脾胃病17方
- 土耳其身为伊斯兰国家,为什么允许“风俗产业”合法化?
- 高中教师教学反思
- 三观尽毁!90后公务员出轨50岁女上司,聊天言语暧昧,妻子怒举报
- 22应用心理学考研347 首师360有调剂院校吗?
- 铃木凉美女士,你仍期待同时收获怜爱与尊敬吗?
- 团建别墅 | 确认过眼神,是能疯一起的人!Boss,今年年会我们泡私家温
- 《归来》观后感
- 翻译伦理的重要性和译者荣辱观建设研究
- 高二语文期末考试测试题及答案
- 国医大师名单!在北京看中医该找谁,这下全知道!
- 这些年爱过的同人文(BG)
- 荷兰深陷风俗业?日本都要甘拜下风,为何能稳坐世界顶尖位置!
- 戴安娜25年前私密录像首次解密:自述性生活,全英国都被炸懵逼了
- 原创上官婉儿为什么必须死,她做的这件事太无耻,李隆基忍无可忍
- 「医药速读社」Paxlovid临床失败 礼来斥巨资引进Kv1.3抑制剂
- 她是韩国性感女神,靠出演“三级片”走红,今41岁韵味不减当年!
- 电影市场有望点燃 好莱坞大片排队上映
- 评荐《传染病(Contagion)》