kuberntes deployment 的使用

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容