k8s - deployment

Deployment 爲 Pod 和 ReplicaSet 提供了一個聲明式定義(declarative)方法,用來替代以前的ReplicationController 來方便的管理應用。典型的應用場景包括:
1. 定義Deployment來創建Pod和ReplicaSet
2. 滾動升級和回滾應用
3. 擴容和縮容
4. 暫停和繼續Deployment

RS 與 Deployment 的關聯
在這裏插入圖片描述
1. 部署一個Nginx應用

[root@k8s-master01 k8s-test]# 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: kone.com/library/nginx:latest
        ports:
          - containerPort: 80 

kubectl apply -f nginx-deployment.yaml

[root@k8s-master01 k8s-test]# kubectl get pod 
NAME                                READY   STATUS    RESTARTS   AGE
nginx-deployment-69c69cf68d-7krsq   1/1     Running   0          4m43s
nginx-deployment-69c69cf68d-hzbfv   1/1     Running   0          4m31s
nginx-deployment-69c69cf68d-vvxcc   1/1     Running   0          4m43s

2. 擴容kubectl scale deployment nginx-deployment --replicas=6

[root@k8s-master01 k8s-test]# kubectl scale deployment nginx-deployment --replicas=6
deployment.extensions/nginx-deployment scaled
[root@k8s-master01 k8s-test]# kubectl get pods
NAME                                READY   STATUS    RESTARTS   AGE
nginx-deployment-69c69cf68d-2bfrd   1/1     Running   0          6s
nginx-deployment-69c69cf68d-7krsq   1/1     Running   0          21m
nginx-deployment-69c69cf68d-9nsbk   1/1     Running   0          6s
nginx-deployment-69c69cf68d-hzbfv   1/1     Running   0          21m
nginx-deployment-69c69cf68d-vh9w6   1/1     Running   0          6s
nginx-deployment-69c69cf68d-vvxcc   1/1     Running   0          21m

3. 設置自動擴展
如果集羣支持 horizontal pod autoscaling 的話,還可以爲Deployment設置自動擴展
kubectl autoscale deployment nginx-deployment --min=10 --max=15 --cpu-percent=80

4. 更新鏡像,更新nginx版本
獲取當前nginx版本

[root@k8s-master01 k8s-test]# kubectl exec nginx-deployment-846fbcbb-gsrbx -- nginx -v
nginx version: nginx/1.9.1

執行命令更新版本kubectl set image deployment/nginx-deployment nginx=kone.com/library/nginx:latest

[root@k8s-master01 k8s-test]# kubectl set image deployment/nginx-deployment nginx=kone.com/library/nginx:latest
deployment.extensions/nginx-deployment image updated

查看當前版本

[root@k8s-master01 k8s-test]# kubectl exec nginx-deployment-69c69cf68d-4qvzn -- nginx -v
nginx version: nginx/1.17.8

5. 回滾kubectl rollout undo deployment/nginx-deployment

[root@k8s-master01 k8s-test]# kubectl rollout undo deployment/nginx-deployment
deployment.extensions/nginx-deployment rolled back

查看回滾狀態kubectl rollout status deployment/nginx-deployment
[root@k8s-master01 k8s-test]# kubectl rollout status deployment/nginx-deployment
deployment “nginx-deployment” successfully rolled out
查看當前版本

[root@k8s-master01 k8s-test]# kubectl exec nginx-deployment-846fbcbb-645tk -- nginx -v
nginx version: nginx/1.9.1

6. 查看歷史版本kubectl rollout history deployment/nginx-deployment

[root@k8s-master01 k8s-test]# kubectl rollout history deployment/nginx-deployment 
deployment.extensions/nginx-deployment 
REVISION  CHANGE-CAUSE
5         <none>
9         <none>
10        <none>

指定回滾到某個歷史版本kubectl rollout undo deployment/nginx-deployment --to-revision=2

暫停 deployment 的更新kubectl rollout pause deployment/nginx-deployment

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章