CKA 备考 - 1 - 建立一个Deloyment并显示状态

通过分析实操题来学习、巩固cka中的考点。本次的重点是建立Deployment。

题目

使用 nginx:1.16 镜像建立一个名为 nginx-deploy 的 Deployment,本次部署需要三个实例。部署完成后检查 Deployment 的 Rollout 状态和检查POD的运行状态。

解题思路

核心概念

该题考的Kubernetes中应用发布的概念机基本命令。 在 Kuberernete 中,与发布应用相关的最基本、最重要的概念是: Deployment 和 ReplicaSet。

  1. Deployment

Deploymnet 在Kubernetes 中是一个比 Pod 更抽象的管理对象,它解决了 Pod 自身没有自愈能力,不能扩缩容,也不支持方便的升级和回滚的问题。一个 Deployment 对象只能管理一个Pod模板,但可以有多个Pod的副本。

  1. ReplicaSet

简单来说,Deployment使用ReplicaSet来提供Pod自愈和扩缩容能力。

总结一下: 一个Deployment包含一个ReplicaSet; 一个ReplicaSet包含一个Pod模板, 但可以设定多个Pod的实例。

  1. Rollout

对资源进行管理, 能够管理的资源包括: deployments 和 daemonsets

提供的子命令包括
a. history - 查看历史版本
b. pause - 暂停资源
c. resume - 恢复暂停资源
d. status - 查看资源状态
e. undo - 回滚版本

相关命令

  1. create deployment命令

平时工作中,处理这样的问题可能更多的会采用编辑yaml文件,然后通过 kubectl apply 命令应用到集群中的方法来处理。但在考试中,对于这样简单的题目,最好自己采用命令的方式。准备考试前,不需要记住命令的所有参数,只需要记住使用那个命令,具体参数的写法可以通过help来查找。比如这道题,使用 kubectl create deployment 命令,执行

1
kubectl create deployment --help

可以看到系统显示如下信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
Create a deployment with the specified name.

Aliases:
deployment, deploy

Examples:
# Create a deployment named my-dep that runs the busybox image
kubectl create deployment my-dep --image=busybox

# Create a deployment with a command
kubectl create deployment my-dep --image=busybox -- date

# Create a deployment named my-dep that runs the nginx image with 3 replicas
kubectl create deployment my-dep --image=nginx --replicas=3

# Create a deployment named my-dep that runs the busybox image and expose port 5701
kubectl create deployment my-dep --image=busybox --port=5701

Options:
--allow-missing-template-keys=true: If true, ignore any errors in templates when a field or map key is missing in
the template. Only applies to golang and jsonpath output formats.
--dry-run='none': Must be "none", "server", or "client". If client strategy, only print the object that would be
sent, without sending it. If server strategy, submit server-side request without persisting the resource.
--field-manager='kubectl-create': Name of the manager used to track field ownership.
--image=[]: Image names to run.
-o, --output='': Output format. One of:
json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file.
--port=-1: The port that this container exposes.
-r, --replicas=1: Number of replicas to create. Default is 1.
--save-config=false: If true, the configuration of current object will be saved in its annotation. Otherwise, the
annotation will be unchanged. This flag is useful when you want to perform kubectl apply on this object in the future.
--show-managed-fields=false: If true, keep the managedFields when printing objects in JSON or YAML format.
--template='': Template string or path to template file to use when -o=go-template, -o=go-template-file. The
template format is golang templates [http://golang.org/pkg/text/template/#pkg-overview].
--validate=true: If true, use a schema to validate the input before sending it

Usage:
kubectl create deployment NAME --image=image -- [COMMAND] [args...] [options]

Use "kubectl options" for a list of global command-line options (applies to all commands).

实际上这道题需要的命令已经完整的列出来了,稍加改动就i可以直接使用

  1. rollout 命令

执行

1
kubectl rollout --help

可以看到以下信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
Manage the rollout of a resource.

Valid resource types include:

* deployments
* daemonsets
* statefulsets

Examples:
# Rollback to the previous deployment
kubectl rollout undo deployment/abc

# Check the rollout status of a daemonset
kubectl rollout status daemonset/foo

Available Commands:
history View rollout history
pause Mark the provided resource as paused
restart Restart a resource
resume Resume a paused resource
status Show the status of the rollout
undo Undo a previous rollout

Usage:
kubectl rollout SUBCOMMAND [options]

Use "kubectl <command> --help" for more information about a given command.
Use "kubectl options" for a list of global command-line options (applies to all commands).

解题步骤

  1. 在终端输入以下命令建立 Deployment
1
kubectl create deployment my-dep --image=nginx:1.16 --replicas=3

执行完成后,生成一个名为 my-dep 的 Deployment 对象。能够xi’t显示

1
deployment.apps/my-dep created
  1. 检查 Pod 状态
1
kubectl get pod

系统显示

1
2
3
4
NAME                      READY   STATUS    RESTARTS   AGE
my-dep-655995c9d4-2rr72 1/1 Running 0 75s
my-dep-655995c9d4-4gknh 1/1 Running 0 75s
my-dep-655995c9d4-pz849 1/1 Running 0 75s

刚开始,pod可能会处于ContainerCreating状态, 一般是因为下载nginx镜像需要些时间,下载完就好了。

  1. 检查 Rollout 状态

执行

1
kubectl rollout status deployment my-dep

系统显示

1
deployment "my-dep" successfully rolled out

本文标题:CKA 备考 - 1 - 建立一个Deloyment并显示状态

文章作者:Morning Star

发布时间:2022年12月12日 - 09:12

最后更新:2022年12月13日 - 08:12

原始链接:https://www.mls-tech.info/microservice/k8s/kubernetes-cka-preparation-01-deploy-app/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。