CKA 备考 - 4 - 回滚一个应用的版本

通过分析实操题来学习、巩固cka中的考点。本次的重点是用回滚应用的版本。

题目

CKA 备考 - 3 - 升级一个应用 的基础上回滚到前一个版本,然后检查 nginx 镜像的tag是否是 1.16

解题思路

核心概念

本题主要涉及到kubernetes中对应用的回滚操作。首先需要通过 rollout 命令查看应用的发布版本,再挑选合适的版本进行回滚。

相关命令

  1. kubectl rollout history

history 子命令用来查看一个应用发布的历史情况,包括版本号和发布原因。

  1. kubectl rollout undo

undo 命令用来回滚到前一个或指定版本的应用。命令参数如下:

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
Roll back to a previous rollout.

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

# Roll back to daemonset revision 3
kubectl rollout undo daemonset/abc --to-revision=3

# Roll back to the previous deployment with dry-run
kubectl rollout undo --dry-run=server deployment/abc

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.
-f, --filename=[]: Filename, directory, or URL to files identifying the resource to get from a server.
-k, --kustomize='': Process the kustomization directory. This flag can't be used together with -f or -R.
-o, --output='': Output format. One of:
json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file.
-R, --recursive=false: Process the directory used in -f, --filename recursively. Useful when you want to manage
related manifests organized within the same directory.
--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].
--to-revision=0: The revision to rollback to. Default to 0 (last revision).

Usage:
kubectl rollout undo (TYPE NAME | TYPE/NAME) [flags] [options]

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

解题步骤

通过执行history命令我们可以得到应用的发布历史,如本题:

1
2
3
4
deployment.apps/my-dep 
REVISION CHANGE-CAUSE
1 <none>
2 <none>

应该建立 Deployment 时使用的时nginx:1.16, 中间只经过一次升级,所以只需要回滚一次即可,执行

1
kubectl rollout undo deployment/my-dep

系统显示

1
deployment.apps/my-dep rolled back

再才查看history,执行

1
kubectl rollout history deployment/my-dep --revision=3
1
2
3
4
5
6
7
8
9
10
11
12
deployment.apps/my-dep with revision #3
Pod Template:
Labels: app=my-dep
pod-template-hash=655995c9d4
Containers:
nginx:
Image: nginx:1.16
Port: <none>
Host Port: <none>
Environment: <none>
Mounts: <none>
Volumes: <none>

可以看到,当前应用已经回退到 nginx 1.16 版本的镜像。

本文标题:CKA 备考 - 4 - 回滚一个应用的版本

文章作者:Morning Star

发布时间:2022年12月15日 - 07:12

最后更新:2022年12月15日 - 07:12

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

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