通过分析实操题来学习、巩固cka中的考点。本次的重点是建立Deployment。
题目
使用 nginx:1.16 镜像建立一个名为 nginx-deploy 的 Deployment,本次部署需要三个实例。部署完成后检查 Deployment 的 Rollout 状态和检查POD的运行状态。
解题思路
核心概念
该题考的Kubernetes中应用发布的概念机基本命令。 在 Kuberernete 中,与发布应用相关的最基本、最重要的概念是: Deployment 和 ReplicaSet。
- Deployment
Deploymnet 在Kubernetes 中是一个比 Pod 更抽象的管理对象,它解决了 Pod 自身没有自愈能力,不能扩缩容,也不支持方便的升级和回滚的问题。一个 Deployment 对象只能管理一个Pod模板,但可以有多个Pod的副本。
- ReplicaSet
简单来说,Deployment使用ReplicaSet来提供Pod自愈和扩缩容能力。
总结一下: 一个Deployment包含一个ReplicaSet; 一个ReplicaSet包含一个Pod模板, 但可以设定多个Pod的实例。
- Rollout
对资源进行管理, 能够管理的资源包括: deployments 和 daemonsets
提供的子命令包括
a. history - 查看历史版本
b. pause - 暂停资源
c. resume - 恢复暂停资源
d. status - 查看资源状态
e. undo - 回滚版本
相关命令
- create deployment命令
平时工作中,处理这样的问题可能更多的会采用编辑yaml文件,然后通过 kubectl apply 命令应用到集群中的方法来处理。但在考试中,对于这样简单的题目,最好自己采用命令的方式。准备考试前,不需要记住命令的所有参数,只需要记住使用那个命令,具体参数的写法可以通过help来查找。比如这道题,使用 kubectl create deployment 命令,执行
1 | kubectl create deployment --help |
可以看到系统显示如下信息
1 | Create a deployment with the specified name. |
实际上这道题需要的命令已经完整的列出来了,稍加改动就i可以直接使用
- rollout 命令
执行
1 | kubectl rollout --help |
可以看到以下信息
1 | Manage the rollout of a resource. |
解题步骤
- 在终端输入以下命令建立 Deployment
1 | kubectl create deployment my-dep --image=nginx:1.16 --replicas=3 |
执行完成后,生成一个名为 my-dep 的 Deployment 对象。能够xi’t显示
1 | deployment.apps/my-dep created |
- 检查 Pod 状态
1 | kubectl get pod |
系统显示
1 | NAME READY STATUS RESTARTS AGE |
刚开始,pod可能会处于ContainerCreating状态, 一般是因为下载nginx镜像需要些时间,下载完就好了。
- 检查 Rollout 状态
执行
1 | kubectl rollout status deployment my-dep |
系统显示
1 | deployment "my-dep" successfully rolled out |