創建和管理多個Pod--Deployment
阿新 • • 發佈:2018-05-15
創建和管理多個Pod deployment kubernetes的擴容 kubernetes的縮容 k8s 創建和管理多個Pod--Deployment
- 說明
Deployment 為 Pod 和 ReplicaSet 提供了一個聲明式定義(declarative)方法,用來替代以前的ReplicationController 來方便的管理應用。
你只需要在 Deployment 中描述想要的目標狀態是什麽,Deployment controller 就會幫你將 Pod 和ReplicaSet 的實際狀態改變到你的目標狀態。你可以定義一個全新的 Deployment 來創建 ReplicaSet 或者刪除已有的 Deployment 並創建一個新的來替換。 - 復制控制器(Replication Controller,RC)
- 副本集(Replica Set,RS)
RS是新一代RC,提供同樣的高可用能力,區別主要在於RS後來居上,能支持更多種類的匹配模式。副本集對象一般不單獨使用,而是作為Deployment的理想狀態參數使用。 - Deployment典型的應用場景包括
(1)定義Deployment來創建Pod和ReplicaSet
(2)滾動升級和回滾應用;如果當前狀態不穩定,回滾到之前的Deployment revision。每次回滾都會更新Deployment的revision。
(3)擴容和縮容,擴容Deployment以滿足更高的負載。
(4)暫停和繼續Deployment,暫停Deployment來應用PodTemplateSpec的多個修復,然後恢復上線。 - 實戰Deployment
##定義一個簡單的nginx應用 apiVersion: extensions/v1beta1 kind: Deployment metadata: name: nginx-test namespace: test spec: replicas: 3 template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.7.9 ports: - containerPort: 80
##創建deploy(部署) kubectl create -f nginx-deployment deployment.extensions "nginx-test" created
##查看deploy(部署) kubectl get deploy --namespace=test NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE nginx-test 3 3 3 3 12m
##查看rs(副本集) kubectl get rs --namespace=test NAME DESIRED CURRENT READY AGE nginx-test-75675f5897 3 3 3 11m
##查看pods(容器組) kubectl get po --namespace=test NAME READY STATUS RESTARTS AGE nginx-test-75675f5897-9fcrs 1/1 Running 0 13m nginx-test-75675f5897-gnc8z 1/1 Running 0 13m nginx-test-75675f5897-qbsvm 1/1 Running 0 13m
- 實戰擴容
##擴容 將容器組的個數擴容至5個 "replicas": 5
#語法格式 kubectl scale deployment + [deploy的name] + --replicas [count] + --namespace=命名空間
#命令 kubectl scale deployment nginx-test --replicas 5 --namespace=test deployment.extensions "nginx-test" scaled
##說明 如果集群支持 horizontal pod autoscaling 的話,還可以為Deployment設置自動擴展: kubectl autoscale deployment nginx-test --min=10 --max=15 --cpu-percent=80 --namespace=test
#查看deploy(部署) kubectl get deploy --namespace=test NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE nginx-test 5 5 5 5 17m
#查看rs(副本集) kubectl get rs --namespace=test NAME DESIRED CURRENT READY AGE nginx-test-75675f5897 5 5 5 18m
#查看pods(容器組) kubectl get po --namespace=test NAME READY STATUS RESTARTS AGE nginx-test-75675f5897-9fcrs 1/1 Running 0 19m nginx-test-75675f5897-gnc8z 1/1 Running 0 19m nginx-test-75675f5897-hjvjw 1/1 Running 0 3m nginx-test-75675f5897-hszs8 1/1 Running 0 3m nginx-test-75675f5897-qbsvm 1/1 Running 0 19m
- 實戰縮容
##縮容 將容器組的個數縮容至2個 "replicas": 2
#命令 kubectl scale deployment nginx-test --replicas 2 --namespace=test deployment.extensions "nginx-test" scaled
#查看deploy(部署) kubectl get deploy --namespace=test NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE nginx-test 2 2 2 2 25m
#查看rs(副本集) kubectl get rs --namespace=test NAME DESIRED CURRENT READY AGE nginx-test-75675f5897 2 2 2 25m
#查看pods(容器組) kubectl get po --namespace=test NAME READY STATUS RESTARTS AGE nginx-test-75675f5897-gnc8z 1/1 Running 0 26m nginx-test-75675f5897-qbsvm 1/1 Running 0 26m
- 實戰滾動升級
將image: nginx:1.7.9升級為nginx:1.9.1 #語法格式 kubectl scale deployment/[deploy的name] + [升級鏡像] + --namespace=命名空間
#命令 kubectl set image deployment/nginx-test nginx=nginx:1.9.1 --namespace=test deployment.apps "nginx-test" image updated
#查看rs(副本集) kubectl get rs --namespace=test NAME DESIRED CURRENT READY AGE nginx-test-75675f5897 0 0 0 48m nginx-test-c4747d96c 2 2 2 19m
#查看pods(容器組) kubectl get po --namespace=test NAME READY STATUS RESTARTS AGE nginx-test-c4747d96c-cqnqs 1/1 Running 0 21m nginx-test-c4747d96c-fpjrk 1/1 Running 0 21m
#查看nginx版本 kubectl describe po nginx-test-c4747d96c-cqnqs --namespace=test 可看到版本信息: Image: nginx:1.9.1
- 實戰回滾應用
#命令 kubectl rollout undo deployment/nginx-test --namespace=test deployment.apps "nginx-test"
#查看rs(副本集) kubectl get rs --namespace=test NAME DESIRED CURRENT READY AGE nginx-test-75675f5897 2 2 2 28m nginx-test-c4747d96c 0 0 0 3m
#查看pods(容器組) kubectl get po --namespace=test NAME READY STATUS RESTARTS AGE nginx-test-75675f5897-rqnhb 1/1 Running 0 1m nginx-test-75675f5897-zhwgn 1/1 Running 0 1m
#查看nginx版本 kubectl describe po nginx-test-75675f5897-rqnhb --namespace=test 可看到版本信息: Image: nginx:1.7.9
- 說明
以上操作都是在linux終端上進行的,命令有些繁瑣的,我們實際上可以直接登入web界面的kubernetes進行deployment的創建和更改的,如下圖所示:
創建和管理多個Pod--Deployment