通过分析实操题来学习、巩固cka中的考点。本次的重点是用升级应用的镜像版本。
题目
将CKA 备考 - 1 - 建立一个Deloyment并显示状态 中发布的app的 nginx 镜像版本从 1.16 升级到 1.17, 然后查看复制集
解题思路
核心概念
本题主要涉及到应用版本的升级,在kubernetes中可以通过几种方法对已经发布的应用进行升级。
- 重新发布对应的yaml文件
- 编辑已经发布的应用的设置
- 执行滚动升级
注意观察和比较升级前、后的Pod实例名,感受升级的过程对应用可用性的影响。
相关命令
对于已经发布的应用,如果原来没有建立yaml文件(通过执行 kubectl apply发布)或是不想编辑源yaml文件,可以直接使用 kubectl edit 命令进行编辑。让我们先看看该命令的细节说明, 执行:
1 | kubectl edit --help |
可以看到如下的系统信息
1 | Edit a resource from the default editor. |
可以看到该命令其实是调用系统中默认的编辑器(Linux中默认为vi)对资源的配置信息进行编辑。
解题步骤
在解本题之前,我们先查看以下现在my-dep的列表,执行 kubectl get pod, 得到:
1 | NAME READY STATUS RESTARTS AGE |
因为我们要升级的是 my-dep 中的Pod, 现在让我们来编辑Deployment: my-dep, 所以自己编辑my-dep, 执行
1 | kubectl edit deployment/my-dep |
打开文件后,修改 containers/image中的nginx:1.16 为 nginx:1.17, 然后保存
退出 edit 以后,执行 kubectl get pod 命令,可以看到类似如下的信息
1 | NAME READY STATUS RESTARTS AGE |
可以看到,kubernetes集群开始用新的进行建立Pod, 同时保持着旧Pod的运行。
等下载完成后,会生成全新的Pod, 如:
1 | NAME READY STATUS RESTARTS AGE |
查看 rollout 历史,可以看到
1 | REVISION CHANGE-CAUSE |
可以看到发行的版本升级了。
查看复制集
1 | kubectl get rs |
系统显示
1 | NAME DESIRED CURRENT READY AGE |