deployment的作用
1.批量增加,刪除 pod
2.保持可用pod數(shù)量不變,即使pod掛了,也可以自動創(chuàng)建新的pod
查看deployment
kubectl get deployments
創(chuàng)建deployment
#獲取幫助
kubectl run --help
#獲取并修改yaml文件
kubectl run nginx --image=nginx --dry-run -o yaml >nginx_deployment.yaml
#修改文件,為自己需要的配置即可
vim nginx_deployment.yaml
#deployment.yaml 使用
kubectl apply -f nginx_deployment.yaml
3種變更deployment方式
#1.在線修改.修改后保存立刻生效
kubectl edit deployments nginx
#2.修改yaml 文件后再次執(zhí)行apply
kubectl apply -f nginx_deployment.yaml
#3.命令行scale 直接修改副本數(shù)為20
kubectl scale deployment nginx --replicas=20
刪除deployment,其pod自動全部刪除
kubectl delete deployments nginx
滾動更新,3種方式
#查看deployment
kubectl get deployments -o wide
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE CONTAINERS IMAGES SELECTOR
nginx 1 1 1 1 44m nginx nginx run=nginx
#設(shè)置變更,將nginx版本變更為1.9
#1.直接編輯deployment
#注意:maxSurge:在升級過程中一次升級幾個,可以使用百分比,10%,一次升級pod的10%;
#maxUnavailable:在升級過程中,只能有幾個不可用,可以使用百分比,10%,一次升級有10%pod不可用。
kubectl edit deployments nginx
#2.修改yaml文件,并apply即可
#3.命令行直接設(shè)置,--record為記錄變更命令,便于查看
kubectl set image deployment/nginx nginx=nginx:1.9 --record
#回滾到上次變更
kubectl rollout undo deployment nginx
#查看deployment,變更歷史記錄
kubectl rollout history deployment/nginx
#切換到某指定版本,如revision=2
kubectl rollout undo deployment/nginx --to-revision=2
水平自動更新 HPA
通過檢測pod CPU的負載,解決deployment里某pod負載太重,動態(tài)伸縮pod的數(shù)量來負載均衡
#使用autoscale 參數(shù)創(chuàng)建hpa
#設(shè)置nginx deployment為最小2個pod,最多10個pod,
#當(dāng)副本數(shù)小于2,則創(chuàng)建副本,使之最少為2,當(dāng)副本數(shù)大于10,則減傷副本數(shù)為10;
#當(dāng)pod的cpu使用率超過80%,會增加pod數(shù)量,cpu使用率下降后會減少pod。
kubectl autoscale deployment nginx --min=2 --max=10 --cpu-percent=80
#查看看hpa
[root@k8s-master1 k8s_yaml]# kubectl get hpa
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
nginx Deployment/nginx <unknown>/80% 2 10 0 4s
#當(dāng)前cpu的使用量為unknown,修改配置解決
#參考https://cloud.tencent.com/developer/ask/130848
vim /etc/kubernetes/manifests/kube-controller-manager.yaml
#添加兩行信息
- command:
- --horizontal-pod-autoscaler-use-rest-clients=false
- --horizontal-pod-autoscaler-sync-period=10s
修改 nginx 的deployment信息
kubectl edit deployment nginx
container先添加信息
resources:
requests:
cpu: 400m
如下:
containers:
- image: nginx
imagePullPolicy: Always
name: nginx
resources:
requests:
cpu: 400m
#hpa簡單測試方法
#進入到某pod里,執(zhí)行多個
cat /dev/zero > /dev/null &
#觀察pod的數(shù)目變化,及hpa的cpu使用量
#在物理機里
killall -9 cat
#觀察pod的數(shù)目
#刪除hpa
kubectl delete hpa nginx