02-kubectl 命令之部署命令

kubectl rollout

对资源进行管理,可用资源包括:

  • deployments
  • daemonsets

官方文档

语法

1
kubectl rollout SUBCOMMAND

子命令

  • history(查看历史版本)
  • pause(暂停资源)
  • resume(恢复暂停资源)
  • status(查看资源状态)
  • undo(回滚版本)

示例

1
2
3
4
5
6
# 回滚到之前的deployment
kubectl rollout undo deployment/abc


# 查看daemonet的状态
kubectl rollout status daemonset/foo

1、kubectl rollout history

查看之前推出的版本(历史版本)。

语法

1
kubectl history (TYPE NAME | TYPE/NAME) [flags]

示例

1
2
3
4
5
6
# 查看deployment的历史记录
kubectl rollout history deployment/abc


# 查看daemonset修订版3的详细信息
kubectl rollout history daemonset/abc --revision=3

2、kubectl rollout pause

将提供的资源标记为暂停。

被pause命令暂停的资源不会被控制器协调使用,可以是“kubectl rollout resume”命令恢复已暂停资源。

目前仅支持的资源:deployments。

语法

1
kubectl rollout pause RESOURCE

示例

1
2
# 将deployment标记为暂停。#只要deployment在暂停中,使用deployment更新将不会生效。
kubectl rollout pause deployment/nginx

3、kubectl rollout resume

恢复已暂停的资源

被pause命令暂停的资源将不会被控制器协调使用。可以通过resume来恢复资源。目前仅支持恢复deployment资源。

语法

1
kubectl rollout resume RESOURCE

示例

1
2
# 恢复已暂停的 deployment
kubectl rollout resume deployment/nginx

4、kubectl rollout status

查看资源的状态。

使用—watch = false 来查看当前状态,需要查看特定修订版本状态 请使用–revision = N 来指定。

语法

1
ubectl rollout status (TYPE NAME | TYPE/NAME) [flags]

示例

1
2
# 查看deployment的状态
kubectl rollout status deployment/nginx

5、kubectl rollout undo

回滚到之前的版本。

语法

1
kubectl rollout undo (TYPE NAME | TYPE/NAME) [flags]

示例

1
2
3
4
5
6
7
# 回滚到之前的deployment版本
kubectl rollout undo deployment/abc
kubectl rollout undo --dry-run=true deployment/abc


# 回滚到daemonset 修订3版本
kubectl rollout undo daemonset/abc --to-revision=3

kubectl rollout-update

执行指定ReplicationController的滚动更新。

该命令创建了一个新的RC,然后一次更新一个pod方式逐步使用新的PodTemplate,最终实现Pod滚动更新,new-controller.json需要与之前RC在相同的namespace下。

官方文档

语法

1
kubectl rolling-update OLD_CONTROLLER_NAME ([NEW_CONTROLLER_NAME] --image=NEW_CONTAINER_IMAGE | -f NEW_CONTROLLER_SPEC)

示例

1
2
3
4
5
6
7
8
9
10
# 使用frontend-v2.json中的新RC数据更新frontend-v1的pod。
kubectl rolling-update frontend-v1 -f frontend-v2.json

# 使用JSON数据更新frontend-v1的pod。
cat frontend-v2.json | kubectl rolling-update frontend-v1 -f -

# 其他
kubectl rolling-update frontend-v1 frontend-v2 --image=image:v2
kubectl rolling-update frontend --image=image:v2
kubectl rolling-update frontend-v1 frontend-v2 --rollback

kubectl scale

扩容或缩容 Deployment、ReplicaSet、Replication Controller或 Job 中Pod数量。

scale也可以指定多个前提条件,如:当前副本数量或 –resource-version,进行伸缩比例设置前,系统会先验证前提条件是否成立。

官方文档

语法

1
kubectl scale [--resource-version=version] [--current-replicas=count] --replicas=COUNT (-f FILENAME | TYPE NAME)

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#  将名为foo中的pod副本数设置为3
kubectl scale --replicas=3 rs/foo


# 将由“foo.yaml”配置文件中指定的资源对象和名称标识的Pod资源副本设为3。
kubectl scale --replicas=3 -f foo.yaml


# 如果当前副本数为2,则将其扩展至3。
kubectl scale --current-replicas=2 --replicas=3 deployment/mysql


# 设置多个RC中Pod副本数量。
kubectl scale --replicas=5 rc/foo rc/bar rc/baz

kubectl autoscale

使用 autoscaler 自动设置在kubernetes集群中运行的pod数量(水平自动伸缩)。

指定Deployment、ReplicaSet或ReplicationController,并创建已经定义好资源的自动伸缩器。使用自动伸缩器可以根据需要自动增加或减少系统中部署的pod数量。

官方文档

语法

1
kubectl autoscale (-f FILENAME | TYPE NAME | TYPE/NAME) [--min=MINPODS] --max=MAXPODS [--cpu-percent=CPU] [flags]

示例

1
2
3
4
5
6
# 使用 Deployment “foo”设定,使用默认的自动伸缩策略,指定目标CPU使用率,使其Pod数量在210之间。
kubectl autoscale deployment foo --min=2 --max=10


使用RC“foo”设定,使其Pod的数量介于15之间,CPU使用率维持在80%。
kubectl autoscale rc foo --max=5 --cpu-percent=80

02-kubectl 命令之部署命令
https://flepeng.github.io/042-云原生-02-kubernetes-13-命令-kubectl-02-kubectl-命令之部署命令/
作者
Lepeng
发布于
2023年3月1日
许可协议