kubernetes - Deployment
阿新 • • 發佈:2020-12-15
一:deployment 資源
1.簡介
Deployment 為 Pod 提供宣告式更新
在 Deployment 物件中描述所需的狀態,然後 Deployment 控制器將實 際狀態以受控的速率更改為所需的狀態
您可以定義部署以建立新的副本集,或刪除現有部署並在新部署中採用 其所有資源
一句話:Deployment 主要功能是保證有足夠的 Pod 正常對外提供服務
2.建立 deployment.yaml
# 定義資源型別 kind: Deployment # 定義API版本號 apiVersion: app1/v1 # 定義基礎資訊 metadata: name: test-deployment # 定義容器資訊 spec: # 建立副本數 replicas:2 # 定義Pod的模板 template: metadata: labels: app: test-deployment env: test spec: containers: - name: nginx images: nginx:1.19.2 # 定義選擇器 selector: # 精確匹配 matchLabels: app: test-deployment env: test
3.部署
選項 | 描述 |
---|---|
--record | 允許將當前命令記錄在正在建立或更新的資源的註釋中 |
-f |
filename 檔名 |
kubectl apply -f deployment.yaml
檢視部署狀態
排查問題,最主要看Events
kubectl get pods -w kubectl get deployment.apps
檢視部署詳情(錯誤)
kubectl describe [資源型別] [資源名稱]
kubectl describe deployments.apps nginx-deployment
檢視執行錯誤
kubectl logs [pod名稱]
刪除之後,會再次自動啟動
kubectl delete pod name xxx
4.更新
方式1 - 通過命令列修改
kubectl set image [資源型別(控制器資源)] [資源名稱] [容器名稱]=[新映象] kubectl set image deployment test-deployment django=redis
方式2 - 修改yaml
檔案
vim test.yaml
# 定義資源型別 kind: Deployment # 定義API版本號 apiVersion: apps/v1 # 定義基礎資訊 metadata: name: test-deployment # 定義容器資訊 spec: # 定義副本個數 replicas: 2 # 定義Pod的模板 template: metadata: labels: app: test-deployment env: test spec: containers: - name: nginx image: nginx:1.19.2 - name: mysql image: mysql:5.7 imagePullPolicy: IfNotPresent env: - name: MYSQL_ROOT_PASSWORD value: '123456' # 定義選擇器 selector: # 精確匹配 matchLabels: app: test-deployment env: test
方式3 - 修改資源
kubectl edit [資源型別] [資源名稱]
方式4 - 去面板中修改
方式5 - 打補丁
kubectl patch [資源型別] [資源名稱] -p [配置項] kubectl patch deployment.apps test-deployment -p '{"spec": {"replicas": 5}}'
5.回滾
當新版本不穩定時,可以對其進行回滾操作,預設情況下,所有 Deployment 的 rollout 歷史都保留在系統中, 可以隨時回滾
檢視構建/部署歷史
kubectl rollout history [資源型別] [資源名稱]
kubectl rollout history deployment test-back
如果當前的版本和歷史版本一致,那麼那個歷史版本就會消失,只顯示當前版本
edit 的缺點:必須得知道上個版本具體是什麼
kubectl rollout history deployment test-back
kubectl rollout undo deployment test-back
① 回滾方式1 - edit
kube edit [資源型別] [資源名稱]
# 然後修改內容
② 回滾方式2 - undo
kubectl rollout undo [資源型別] [資源名稱]
③ 回滾方式3 - 回滾到指定版本
kubectl rollout undo [資源型別] [資源名稱] --to-revision=[指定版本號]
6.擴容 與 縮容
① 方式1 - edit
kube edit [資源型別] [資源名稱]
# 修改副本數 replicas: 數量
② 方式2 - 修改配置清單 yaml
vim deployment.yaml
③ 方式3 - 打補丁 patch
kubectl patch [資源型別] [資源名稱] -p [配置項] kubectl patch deployment.apps test-deployment -p '{"spec": {"replicas": 10}}'
④ 方式4 - scale
kubectl scale [資源型別] [資源名稱] --replicas=[副本數] kubectl scale deployment.apps test-deployment --replicas=5
⑤ 方式5 - HPA
docker pull registry.cn-hangzhou.aliyuncs.com/k8sos/metrics-server:v0.4.1 kubectl get pods -n kube-system -l k9s-app=metrics-server kubectl top pods
7.檢視叢集IP
kubectl get pods -o wide