標籤:失敗 blog set tor 學習 images wait 升級 time
kubernetes 自動發布和復原
deployment 引入的目的是為了更好的解決pod的編排問題。
- 建立一個deployment對象來產生對應的replica set 並完成 pod副本的建立過程
- 檢查deployment的狀態來看部署動作是否完成(pod副本的數量是否達到預期的值)
- 更新deployment以建立新的pod(比如鏡像升級)
- 如果當前deployment不穩定,則復原至一個早先的deployment版本
建立deployment
$ kubectl create -f docs/user-guide/nginx-deployment.yaml --recorddeployment "nginx-deployment” created
查看正在建立或者正在更新的deplyment
$ kubectl get deploymentsNAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGEnginx-deployment 3 0 0 0 1s
$ kubectl get deploymentsNAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGEnginx-deployment 3 3 3 3 18s
查看replica set 和 pod
$ kubectl get rsNAME DESIRED CURRENT AGEnginx-deployment-2035384211 3 3 18s
查看產生的各個pod的歸屬關係
$ kubectl get pods --show-labelsNAME READY STATUS RESTARTS AGE LABELSnginx-deployment-2035384211-7ci7o 1/1 Running 0 18s app=nginx,pod-template-hash=2035384211nginx-deployment-2035384211-kzszj 1/1 Running 0 18s app=nginx,pod-template-hash=2035384211nginx-deployment-2035384211-qqcnn 1/1 Running 0 18s app=nginx,pod-template-hash=2035384211
查看deployment的狀態
$ kubectl rollout status deployment/nginx-deploymentdeployment "nginx-deployment" successfully rolled out
更新deployment 當deployment 裡面的pod模版更改了 label更新了 容器鏡像改變了,那麼會觸發deployment重新發布,如果deployment進行擴充,那麼不會觸發deployment 可以直接寫命令變更
kubectl set image deployment/nginx-deployment nginx=nginx:1.9.1deployment "nginx-deployment" image updated
也可以進行編輯變更
$ kubectl edit deployment/nginx-deploymentdeployment "nginx-deployment" edited
查看發布的狀態
$ kubectl rollout status deployment/nginx-deploymentWaiting for rollout to finish: 2 out of 3 new replicas have been updated...deployment "nginx-deployment" successfully rolled out
如果發布成功
$ kubectl get deploymentsNAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGEnginx-deployment 3 3 3 3 36s
$ kubectl get rsNAME DESIRED CURRENT AGEnginx-deployment-1564180365 3 3 6snginx-deployment-2035384211 0 0 36s
$ kubectl get podsNAME READY STATUS RESTARTS AGEnginx-deployment-1564180365-khku8 1/1 Running 0 14snginx-deployment-1564180365-nacti 1/1 Running 0 14snginx-deployment-1564180365-z9gth 1/1 Running 0 14s
更新pod,我們只需更新deployment裡面的templement當我們更新deployment時候,當有合適的pod產生的時候,k8s才會刪除老的pod,當老的pod被刪除足夠多時,才會繼續產生新的pod deployment 復原查看deployment詳細資料
$ kubectl describe deployment
查看deployment的發布曆史
$ kubectl rollout history deployment/nginx-deployment
可以復原至任一個之前的版本
$ kubectl rollout undo deployment/nginx-deploymentdeployment "nginx-deployment" rolled back
$ kubectl rollout undo deployment/nginx-deployment --to-revision=2deployment "nginx-deployment" rolled back
擴充deployment
ou can scale a Deployment by using the following command:
$ kubectl scale deployment nginx-deployment --replicas 10deployment "nginx-deployment" scaled
$ kubectl autoscale deployment nginx-deployment --min=10 --max=15 --cpu-percent=80deployment "nginx-deployment" autoscaled
暫停或者回複一個deployment
$ kubectl set image deployment/nginx-deployment nginx=nginx:1.9.1; kubectl rollout pause deployment/nginx-deploymentdeployment "nginx-deployment" image updateddeployment "nginx-deployment" paused
deployment的狀態deployment為processing狀態的情況為:1.deployment正在建立rs2.deployment正在擴充或者刪除rs deploymen為什麼會失敗
- Insufficient quota
- Readiness probe failures
- Image pull errors
- Insufficient permissions
- Limit ranges
- Application runtime misconfiguration
kubernetes 學習筆記3