天天看點

kubernetes(3)pod控制器kubernetes(3)pod控制器

文章目錄

  • kubernetes(3)pod控制器
    • Pod和Pod控制器
    • Pod控制器概述
    • 控制器的意義
    • 常見的工作負載控制器

kubernetes(3)pod控制器

Pod和Pod控制器

Pod控制器資源通過持續性地監控叢集中運作着的Pod資源對象來確定受其管控的資源嚴格符合使用者期望的狀态,例如資源副本的數量要精确符合期望等。通常,一個Pod控制器資源至少應該包含三個基本的組成部分:

标簽選擇器:比對并關聯Pod資源對象,并據此完成受其管控的Pod資源計數。

期望的副本數:期望在叢集中精确運作着的Pod資源的對象數量。

Pod模闆:用于建立Pod資源對象的Pod模闆資源。

Pod控制器概述

Kubernetes的核心功能之一還在于要確定各資源對象的目前狀态(status)以比對使用者期望的狀态(spec),使目前狀态不斷地向期望狀态“和解”(reconciliation)來完成容器應用管理。而這些則是kube-controller-manager的任務。

建立為具體的控制器對象之後,每個控制器均通過API Server提供的接口持續監控相關資源對象的目前狀态,并在因故障、更新或其他原因導緻系統狀态發生變化時,嘗試讓資源的目前狀态想期望狀态遷移和逼近。

List-Watch是kubernetes實作的核心機制之一,在資源對象的狀态發生變動時,由API Server負責寫入etcd并通過水準觸發(level-triggered)機制主動通知給相關的用戶端程式以確定其不會錯過任何一個事件。控制器通過API Server的watch接口實時監控目标資源對象的變動并執行和解操作,但并不會與其他控制器進行任何互動。

控制器的意義

自主式Pod對象由排程器排程到目标工作節點後即由相應節點上的kubelet負責監控其容器的存活狀态,容器主程序崩潰後,kubelet能夠自動重新開機相應的容器。但對出現非主程序崩潰類的容器錯誤卻無從感覺,這便依賴于pod資源對象定義的存活探測,以便kubelet能夠探知到此類故障。但若pod被删除或者工作節點自身發生故障(工作節點上都有kubelet,kubelet不可用,是以其健康狀态便無法保證),則便需要控制器來處理相應的容器重新開機和配置。

常見的工作負載控制器

Pod控制器由master的kube-controller-manager元件提供,常見的此類控制器有:

ReplicationController

ReplicaSet:代使用者建立指定數量的pod副本數量,確定pod副本數量符合預期狀态,
并且支援滾動式自動擴容和縮容功能

Deployment:工作在ReplicaSet之上,用于管理無狀态應用,
目前來說最好的控制器。支援滾動更新和復原功能,還提供聲明式配置。

DaemonSet:用于確定叢集中的每一個節點隻運作特定的pod副本,
常用于實作系統級**背景任務。比如ELK服務

StatefulSet:管理有狀态應用

Job:隻要完成就立即退出,不需要重新開機或重建

CronJob:周期性任務控制,不需要持續背景運作
           

ReplicaSet和Deployment和DaemonSet

繼續閱讀