kubernetes實踐之四:深入理解控制器(workload)


一.Pod與controllers的關系

  • controllers:在集群上管理和運行容器的對象
  • 通過label-selector相關聯
  • Pod通過控制器實現應用的運維,如伸縮,升級等

二.Deployment

  • 部署無狀態應用
  • 管理Pod和ReplicaSet
  • 具有上線部署、副本設定、滾動升級、回滾等功能
  • 提供聲明式更新,例如只更新一個新的Image

    應用場景:Web服務,微服務

創建Deployment:

# kubectl apply -f nginx-deployment.yaml

查看Deployment信息:

#kubectl get deployments

上圖中涉及到數量解釋如下:

READY:0/3 當前准備好的副本數量0,期望副本數3 (即Deployment里面定義的replicas)

UP-TO-DATE: 最新版本副本數量,在滾動升級中,有多少副本已經升級成功

AVAILABLE:當前集群可用的副本數量,及存活的Pod數量

最終結果如下:

查看副本數量:

# kubectl get rs

查看Deployment控制pod水平拓展過程

# kubectl describe deployment nginx-deployment

三.StatefulSet

  • 部署有狀態應用
  • 每個節點都有固定身份ID
  • 集群的規模比較固定
  • 如果磁盤損壞,集群內的某個節點無法運行

    應用場景:mysql集群,MongoDB集群,Zookeeper集群

四.DaemonSet

  • 在每一個Node上運行一個Pod
  • 新加入的Node也同樣會自動運行一個Pod

    應用場景:zabbix agent,saltstack agent    

創建DaemonSet:

# kubectl apply -f agent.yaml

查看daemonset信息

# kubectl get daemonset

五.Job

  • 普通任務(Job)

一次性執行

官方案例:https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/

    應用場景:離線數據處理

    

部署perl

# kubectl apply -f https://k8s.io/examples/controllers/job.yaml

查看job

#kubectl get jobs

查看日志:

# kubectl logs pi-lzsh6

六.控制器小結

  • Deployment:無狀態部署
  • StatefulSet:有狀態部署
  • DaemonSet:守護進程部署
  • Job & CronJob:批處理

 


免責聲明!

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



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