k8s的Pod控制器


pod的配置清單常見選項:

 1  apiVersion,kind,metadata,spec,status(只讀)  2  spec:  3  containers:  4  nodeSelector:  5  nodeName:  6  restartPolicy:  7  Always,Never, OnFailure  8  containers:  9  name 10  image 11  imagePullPolicy: Always,Never,IfNotPresent 12  ports: 13  name: 14  containerPort 15  livenessProbe 16  readinessProbe 17  lifecycle 18  ExecAction: exec 19  TCPSocketAction: tcpSocket 20         HTTPGetAction:httpGet

pod控制器:
    ReplicaSet:通常管理無狀態pod,帶用戶創建指定數量的pod副本,並確保pod副本一直處於滿足用戶期望數量的狀態。 多退少補,並且支持擴縮容    
    ReplicaSet:常用的3個組件;1,用戶期望的副本數。2,標簽選擇器,以便選擇自己管控的pod副本。3,pod資源模板,通過標簽選擇器選定的pod副本數少於用戶所期望,則引用pod的資源模板來創建。
    Deployment:Deployment-->ReplicaSet-->pod
    DaemonSet:可以保證每一個node節點上只運行指定的某1個pod,例如:日志收集器,filebeat,沒必要運行多個agant副本。通常運行一些系統級的pod任務。
    Job:臨時一次性作業,可以用戶指定的數量啟動指定數量的pod副本,pod是否重啟取決於job任務是否完成
    Cronjob:周期性計划作業
    StartfulSet:有狀態的任務,通常用來做存儲。極其困難的。
    TPR:Third Party Resources,1.2+,1.7
    CDR:Custom Defined Resources,1.8+


kubectl explain deploy.spec.strategy.rollingUpdate.maxSurge  :用來滾動更新,更新過程中最多可以超出默認副本數的幾個
kubectl explain deploy.spec.strategy.rollingUpdate.maxUnavailable :最多可以幾個不可用
kubectl explain deploy.spec.revisionHistoryLimit :我們再更新后,最多保留多少個歷史版本。

deployment會自動創建replicaSet,replicaSet創建pod


deployment的升級:
   1.直接修改deployment的yaml文件,然后apply
   2.使用kubectl patch deploy/myapp-deploy -p '{""}' json格式給yaml文件打補丁。
   3.使用kubectl edit deploy/myapp-deploy
   4.kubectl set image deploy/myapp-deploy myapp=ikubernetes/myapp:v3 && kubectl rollout pause deploy/myapp-deploy   使用kubectl get pods -w可以監視過程
   4.上面是金絲雀發布,測試可以的話可以繼續更新:kubectl rollout resume deploy/myapp-deploy  使用:kubectl rollout status deploy/myapp-deploy 也可以監控更新過程
   5.kubectl rollout undo deploy/myapp-deploy可以回滾到上個版本。
例:
kubectl patch deploy/myapp-deploy -p '{"spec":{"replicas":5}}'
kubectl patch deploy/myapp-deploy -p '{"spec":{"strategy":{"rollingUpdate":{"maxSurge":1,"maxUnavailable":0}}}}'

deployment的yaml文件例子

 1 apiVersion: apps/v1  2 kind: Deployment  3 metadata:  4   name: myapp-deploy  5   namespace: default
 6 spec:  7   replicas: 3
 8  selector:  9  matchLabels: 10  app: myapp 11  release: canary 12  template: 13  metadata: 14  labels: 15  app: myapp 16  release: canary 17  spec: 18  containers: 19       - name: myapp 20         image: ikubernetes/myapp:v2 21  ports: 22         - name: http 23           containerPort: 80

 










免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM