目录

RC、RS、Deployment 区别:

Deployment 功能:

Deployment yaml:

Deployment 操作:

创建deployment:

查看deployment:

查看RS:

更新Deployment:

yaml方式更新:

查看rollout滚动更新状态:

回退Deployment:

扩容缩容Deployment:

暂停恢复Deployment:


RC、RS、Deployment 区别:

  • RC:用来确保容器应用的副本数始终保持在用户定义的数量,如果有容器异常退出,就会自动创建新Pod来补充,超过定义数量的Pod也会被销毁;
  • RS:代替RC的控制器,与RC功能一样,多了selector,官方推荐RS或Deployment;
  • Deployment:Deployment可以通过RS去创建管理Pod,且可以通过不同的RS来实现滚动更新,当前最常用的控制器就是Deployment;

Deployment 功能:

  • 创建RS和Pod;
  • 滚动升级和快速回滚;
  • 扩容缩容;
  • 暂停继续;

Deployment yaml:

# cat nginx-deployment.yaml

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
    name: nginx-deployment
spec:
    replicas: 3
    template: 
       metadata: 
         labels:
           app: nginx
       spec:
         containers:
         - name: nginx
           image: nginx:v1
           ports: 
           - containerPort: 80

Deployment 操作:

创建deployment:

# kubectl apply -f nginx-deployment.yaml

查看deployment:

# kubectl get deployment

NAME               DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
nginx-deployment   3         0         0            0           1s

过几秒再看
NAME               DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
nginx-deployment   3         3         3            3           18s
  • DESIRED:预期的副本数
  • CURRENT:已创建的副本数(升级策略不同,可能大于预期副本数)
  • UP-TO-DATE:新创建的副本数(滚动更新时会创建新的副本)
  • AVAILABLE:当前可用的副本数

查看RS:

# kubectl get rs
NAME                          DESIRED   CURRENT   READY   AGE
nginx-deployment-2035384211   3         3         0       18s

更新Deployment:

# kubectl set image deployment/nginx-deployment nginx=nginx:1.18.1

yaml方式更新:

# kubectl edit deployment/nginx-deployment

wq保存后自动更新副本

查看rollout滚动更新状态:

# kubectl rollout status deployment/nginx-deployment

Waiting for rollout to finish: 2 out of 3 new replicas have been updated...
deployment "nginx-deployment" successfully rolled out

这时查看RS会发现有两组RS,一组的pod慢慢会变成0

回退Deployment:

先查看升级的历史记录
# kubectl rollout history deployment/nginx-deployment

回退到历史版本
回退到当前版本的前一版本
# kubectl rollout undo deployment/nginx-deployment

回退到指定历史版本
# kubectl rollout undo deployment/nginx-deployment --to-revision=2

默认保留所有版本,如果 .spec.revisonHistoryLimit 被设置为0,则不允许回退; 

扩容缩容Deployment:

# kubectl scale deployment nginx-deployment --replicas 10

暂停恢复Deployment:

暂停

# kubectl rollout pause deployment/nginx-deployment

恢复

# kubectl rollout resume deploy nginx

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐