kubernetes基礎篇 —— 控制器

控制器

Pod 的分類:

  • 自主式 Pod:Pod 退出後不會被創建
  • 控制器管理的 Pod:在控制器的生命週期裏,始終要維持 Pod 的副本數目

控制器類型:

  • Replication Controller和ReplicaSet
  • Deployment
  • DaemonSet
  • StatefulSet
  • Job
  • CronJob
  • HPA全稱Horizontal Pod Autoscaler

Replication Controller和ReplicaSet

  • ReplicaSet 是下一代的 Replication Controller,官方推薦使用ReplicaSet
  • ReplicaSet 和 Replication Controller 的唯一區別是選擇器的支持,ReplicaSet 支持新的基於集合的選擇器需求
  • ReplicaSet 確保任何時間都有指定數量的 Pod 副本在運行
  • 雖然 ReplicaSets 可以獨立使用,但今天它主要被Deployments 用作協調 Pod 創建、刪除和更新的機制

Deployment

  • Deployment 爲 Pod 和 ReplicaSet 提供了一個申明式的定義方法
  • 典型的應用場景
    1. 用來創建Pod和ReplicaSet
    2. 滾動更新和回滾
    3. 擴容和縮容
    4. 暫停與恢復

DaemonSet

  • DaemonSet 確保全部(或者某些)節點上運行一個 Pod 的副本。當有節點加入集羣時, 也會爲他們新增一個 Pod 。當有節點從集羣移除時,這些Pod 也會被回收。刪除 DaemonSet 將會刪除它創建的所有 Pod
  • DaemonSet 的典型用法:
    1. 在每個節點上運行集羣存儲 DaemonSet,例如 glusterd、ceph
    2. 在每個節點上運行日誌收集 DaemonSet,例如 fluentd、logstash
    3. 在每個節點上運行監控 DaemonSet,例如 Prometheus Node Exporter、zabbix agent等
  • 一個簡單的用法是在所有的節點上都啓動一個 DaemonSet,將被作爲每種類型的 daemon 使用
  • 一個稍微複雜的用法是單獨對每種 daemon 類型使用多個 DaemonSet,但具有不同的標誌, 並且對不同硬件類型具有不同的內存、CPU 要求

StatefulSet

  • StatefulSet 是用來管理有狀態應用的工作負載 API 對象。實例之間有不對等關係,以及實例對外部數據有依賴關係的應用,稱爲“有狀態應用”
  • StatefulSet 用來管理 Deployment 和擴展一組 Pod,並且能爲這些 Pod 提供序號和唯一性保證
  • StatefulSets 對於需要滿足以下一個或多個需求的應用程序很有價值:
    1. 穩定的、唯一的網絡標識符
    2. 穩定的、持久的存儲
    3. 有序的、優雅的部署和縮放
    4. 有序的、自動的滾動更新

Job

  • 執行批處理任務,僅執行一次任務,保證任務的一個或多個Pod成功結束

CronJob

  • Cron Job 創建基於時間調度的 Jobs
  • 一個 CronJob 對象就像 crontab (cron table) 文件中的一行,它用 Cron 格式進行編寫,並週期性地在給定的調度時間執行 Job

HPA

  • 根據資源利用率自動調整service中Pod數量,實現Pod水平自動縮放

ReplicaSet控制器

在這裏插入圖片描述

 kubectl create -f replicaset-test.yaml
 kubectl get pod -o wide

在這裏插入圖片描述

Deployment控制器

在這裏插入圖片描述

kubectl create -f deployment-test.yaml
kubectl get pod -o  wide
kubectl get deployments.apps deployment-nginx
kubectl get deployments.apps -o wide

在這裏插入圖片描述
縮容

kubectl scale deployment deployment-nginx --replicas=2 --record

在這裏插入圖片描述
更新

kubectl set image deployment deployment-nginx nginx=nginx:v1 --record

在這裏插入圖片描述
查看歷史版本

kubectl rollout history deployment

在這裏插入圖片描述
回滾

kubectl rollout undo deployment deployment-nginx --to-revision=1

在這裏插入圖片描述
回滾狀態

kubectl rollout status deployment deployment-nginx

在這裏插入圖片描述

DaemonSet控制器

在這裏插入圖片描述

kubectl create -f daemonset-test.yaml
kubectl get pod -o wide
kubectl get daemonsets.apps -o wide

在這裏插入圖片描述

Job控制器

在這裏插入圖片描述

cronjob控制器

在這裏插入圖片描述

kubectl create -f cronjob-test.yaml
kubectl get cronjobs.batch
kubectl get pod
kubectl logs cronjob-example-1593150780-vg4lj

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章