Deployment

文章详细介绍了在Kubernetes中使用Deployment进行应用的滚动更新和回滚操作,包括如何创建和调整副本数量,以及如何查看更新历史和回滚到特定版本。此外,还展示了如何进行弹性伸缩以适应不同的需求。
摘要由CSDN通过智能技术生成

Deployment 的 典型应用场景 包括:
    • 定义 Deployment 来创建 Pod 和 ReplicaSet
    • 滚动升级和回滚应用
    • 扩容和缩容
    • 暂停和继续 Deployment

1、升级版本(滚动更新策略 RollingUpdate)

升级过程:
    • 初建deploy时,系统创建一个rs,并按用户的需求创建对应数量的pod副本
    • 当更新deploy时,系统创建一个新的rs,并将其副本数扩展到1,将旧的rs缩减为2
    • 之后,系统继续按照相同的策略对新旧两个rs进行逐个调整
    • 最后,新的rs运行了对应版本的pod副本,旧的rs副本数量则缩减为0
rollingupdate参数:
    • maxSurge:最大增激数,更新过程中最多可以比rs预先设定多出的pod数量
    • maxUnavailible:最大无效数,最多有几个pod处于Temming
    • minReadySeconds:容器内应用的启动时间pod变run状态之后,经过多长时间继续更新下一个pod

#创建deploy
[root@k8s-master ~]#cat web.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    app: web
  name: web
spec:
  replicas: 1
  selector:
    matchLabels:
      app: web
  strategy: {}
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: web
    spec:
      containers:
      - image: nginx:1.14
        name: nginx
        resources: {}
status: {}
                                                                                                                 
[root@k8s-master ~]# kubectl apply -f web.yaml 
deployment.apps/web created


[root@k8s-master ~]# kubectl get pods
NAME                   READY   STATUS    RESTARTS   AGE
web-65fbc499c9-ppskj   1/1     Running   0          6s
#升级
[root@k8s-master ~]# kubectl set image deploy web nginx=nginx:1.15
deployment.apps/web image updated


[root@k8s-master ~]# kubectl get pods
NAME                   READY   STATUS    RESTARTS   AGE
web-84576695b6-r6hqw   1/1     Running   0          2s



[root@k8s-master ~]# crictl images |grep nginx
docker.io/library/nginx                                               1.14                295c7be079025       44.7MB
docker.io/library/nginx                                               1.15                53f3fd8007f76       44.8MB
docker.io/library/nginx                                               latest              51086ed63d8cb       56.8MB


[root@k8s-master ~]# crictl ps -a |grep nginx
2cf0689897071       53f3fd8007f76       28 seconds ago      Running             nginx                       0                   c00c707005b20       web-84576695b6-r6hqw
#查看升级状态
[root@k8s-master ~]# kubectl rollout status deployment web 
deployment "web" successfully rolled out


#查看升级历史
[root@k8s-master ~]# kubectl rollout history deployment web       
deployment.apps/web 
REVISION  CHANGE-CAUSE
1         <none>
2         <none>

2、回滚版本

#回滚到上一个版本
[root@k8s-master ~]# kubectl rollout undo deployment web
deployment.apps/web rolled back

[root@k8s-master ~]# kubectl rollout history deployment web    
deployment.apps/web 
REVISION  CHANGE-CAUSE
2         <none>
3         <none>


[root@k8s-master ~]# kubectl rollout status deployment web     
deployment "web" successfully rolled out
#回滚到指定版本
[root@k8s-master ~]# kubectl rollout undo deployment web --to-revision=2
deployment.apps/web rolled back

[root@k8s-master ~]# kubectl rollout status deployment web              
deployment "web" successfully rolled out

[root@k8s-master ~]# kubectl rollout history deployment web
deployment.apps/web 
REVISION  CHANGE-CAUSE
3         <none>
4         <none>

3、弹性伸缩(创建副本)

[root@k8s-master ~]# kubectl scale deployment web --replicas=3
deployment.apps/web scaled

[root@k8s-master ~]# kubectl get pods
NAME                   READY   STATUS    RESTARTS   AGE
web-84576695b6-82k92   1/1     Running   0          85s
web-84576695b6-csnfd   1/1     Running   0          2s
web-84576695b6-k82ms   1/1     Running   0          2s


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值