kubernetes之deployment

用于部署无状态的服务,这个最常用的控制器。可以管理多个副本的Pod实现无缝迁移、自动扩容缩容、自动灾难恢复、一键回滚等功能。

虽然ReplicaSet可以确保在任何给定时间运行的Pod副本达到指定的数量,但是Deployment(部署)是一个更高级的概念,它管理ReplicaSet并为Pod和ReplicaSet提供声明性更新以及许多其他有用的功能,所以建议在实际使用中,使用Deployment代替ReplicaSet。

1、创建一个deployment 实例

cat deployment.yml 
apiVersion: apps/v1
kind: Deployment
metadata:
  name: deployment-nginx
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
       app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        ports:
        - containerPort: 80
        image: nginx:1.20

在该例中:

  • 创建名为 nginx-deployment(由 .metadata.name 字段标明)的 Deployment。
  • selector 字段定义 Deployment 如何查找要管理的 Pods。 在这里,你选择在 Pod 模板中定义的标签(app: nginx)。 不过,更复杂的选择规则是也可能的,只要 Pod 模板本身满足所给规则即可

运行下面命令创建deployment

kubectl apply -f deployment.yml --record

注:--record标志可以将执行的命令写入资源注解,每个 Deployment 修订版本所执行过的命令。

2、运行 kubectl get deployments 检查deployment是否创建

kubectl get deployment
NAME               READY   UP-TO-DATE   AVAILABLE   AGE
deployment-nginx   3/3     3            3           47m

3、要查看deployment 上线状态,运行 kubectl rollout status deployment/deployment-nginx

 kubectl rollout status deployment/deployment-nginx
deployment "deployment-nginx" successfully rolled out

4、要查看 Deployment 创建的 ReplicaSet(rs) ,运行 kubectl get rs

kubectl get rs
NAME                          DESIRED   CURRENT   READY   AGE
deployment-nginx-7cf55fb7bb   3         3         3       31m

5、更新 deployment

  • 比如需要更改镜像
kubectl set image deployment/nginx-deployment nginx=nginx:1.16.1 --record

也可以使用 kubectl edit 的方法实现

kubectl edit deployment/deployment-nginx

6、回滚deployment

首先检查deployment 的历史版本

kubectl rollout history deployment/deployment-nginx
deployments "nginx-deployment"
REVISION    CHANGE-CAUSE
1           kubectl apply deployment.yaml --record=true
2           kubectl set image deployment/deployment-nginx nginx=nginx:1.16.1 --record=true

查看历史版本的详细信息

kubectl rollout history deployment/deployment-nginx --revision=2

回滚到之前的版本

kubectl rollout undo deployment/deployment-nginx --to-revision=2

7、缩放deployment

使用一下指令进行缩放副本数量

kubectl scale deployment/deployment-nginx --replicas=5 --recoed
#将名称为deployment-nginx这个副本数量扩充为5个副本,并且记录修订版本

比例缩放

         RollingUpdate 的 Deployment 支持同时运行应用程序的多个版本。 当自动缩放器缩放处于上线进程(仍在进行中或暂停)中的 RollingUpdate Deployment 时, Deployment 控制器会平衡现有的活跃状态的 ReplicaSets(含 Pods 的 ReplicaSets)中的额外副本, 以降低风险。这称为 比例缩放。

maxSurge(最大增量):除当前数量外还要添加多少个实例。

maxUnavailable(最大不可用量):滚动更新过程中的不可用实例数。

可以运行一下命令根据自身需要更改maxsurge 和maxunavaliable

kubectl edit deployment/deployment-nginx

编辑文件,找到maxsurge和maxunavailable,更改大小

8、暂停、恢复deployment

你可以在触发一个或多个更新之前暂停 Deployment,然后再恢复其执行。 这样做使得你能够在暂停和恢复执行之间应用多个修补程序,而不会触发不必要的上线操作。

kubectl rollout pause deployment.v1.apps/nginx-deployment  #暂停
kubectl rollout resume deployment.v1.apps/nginx-deployment  #恢复

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值