如何理解k8s中的controller

一、基本概念

????????在k8s中,Controller(控制器)是核心組件之一,其負責維護集群狀態并確保集群內的實際狀態期望狀態一致的一類組件。控制器通過觀察集群的當前狀態并將其與用戶定義的期望狀態進行對比,做出相應的調整來實現狀態的一致性

控制器:負責管理工作負載資源(如 Pod、Deployment、StatefulSet 等),確保集群狀態符合用戶期望。

?二、Controller的核心作用?

  • ?調和(Reconciliation)?:Controller不斷比較資源的實際狀態(如當前運行的Pod數量)與用戶定義的期望狀態(如Deployment中指定的副本數),并通過API Server調整資源,直到兩者一致。
  • ?自動化管理?:處理Pod的創建、更新、擴縮容、故障恢復等任務,減少人工干預。

三、Controller 的工作原理

  1. Watch 機制:Controller 通過 API 服務器的 Watch 接口監聽資源變化事件(如 Pod 創建、刪除等)。
  2. 工作隊列:接收到事件后,Controller 將相關對象放入工作隊列(Work Queue)。
  3. 處理邏輯:Controller 從隊列中取出對象,根據業務邏輯(如擴容、修復故障)執行操作,使集群狀態趨近期望狀態。
  4. 循環執行:持續重復上述過程,確保集群狀態始終與期望狀態一致。

四、常見的內置 Controller

K8s 中有多種內置 Controller,負責不同類型的資源管理:

1、Deployment Controller

????????管理 Deployment 資源,確保 Pod 副本數與期望一致,支持滾動更新和回滾。

2、ReplicaSet Controller

????????維護 Pod 的副本數量,確保指定數量的 Pod 始終運行。

3、StatefulSet Controller

????????管理有狀態應用,確保 Pod 的順序性、穩定性和持久化存儲。

4、DaemonSet Controller

????????確保每個 Node 上運行一個特定的 Pod 副本(如監控代理、日志收集器)。

5、Job Controller

????????管理一次性任務(Job),確保任務成功完成后終止。

6、CronJob Controller

????????基于時間調度周期性任務(CronJob)。

7、Horizontal Pod Autoscaler(HPA)

????????據CPU利用率或自定義指標自動調整Pod的數量。

?五. 自定義Controller與Operator?

  • ?CRD(Custom Resource Definition)?:允許用戶定義自定義資源(如RedisCluster)。
  • ?自定義Controller?:用于監聽CRD對象的變更,實現業務邏輯(如自動備份、故障恢復、自動化部署第三方服務、集成外部系統等)。
  • ?Operator模式?:Operator是一種特殊的自定義 Controller,其結合CRD和自定義Controller,封裝領域知識,實現復雜應用全生命周期的自動化管理(如MySQL Operator)。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/82585.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/82585.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/82585.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

《Go小技巧易錯點100例》第三十二篇

本期分享: 1.sync.Map的原理和使用方式 2.實現有序的Map sync.Map的原理和使用方式 sync.Map的底層結構是通過讀寫分離和無鎖讀設計實現高并發安全: 1)雙存儲結構: 包含原子化的 read(只讀緩存,無鎖快…

【MySQL】行結構詳解:InnoDb支持格式、如何存儲、頭信息區域、Null列表、變長字段以及與其他格式的對比

📢博客主頁:https://blog.csdn.net/2301_779549673 📢博客倉庫:https://gitee.com/JohnKingW/linux_test/tree/master/lesson 📢歡迎點贊 👍 收藏 ?留言 📝 如有錯誤敬請指正! &…

LabVIEW多通道并行數據存儲系統

在工業自動化監測、航空航天測試、生物醫學信號采集等領域,常常需要對多個傳感器通道的數據進行同步采集,并根據后續分析需求以不同采樣率保存特定通道組合。傳統單線程數據存儲方案難以滿足實時性和資源利用效率的要求,因此設計一個高效的多…

【Linux系列】bash_profile 與 zshrc 的編輯與加載

💝💝💝歡迎來到我的博客,很高興能夠在這里和您見面!希望您在這里可以感受到一份輕松愉快的氛圍,不僅可以獲得有趣的內容和知識,也可以暢所欲言、分享您的想法和見解。 推薦:kwan 的首頁,持續學…

針對Mkdocs部署到Githubpages加速訪問速度的一些心得

加速網站訪問的一些心得 在使用 MkDocs 構建網站時,為了提高訪問速度,我們可以采取以下一些措施: 1. 優化圖片 使用合適的圖片格式,如 WebP、JPEG2000 等,減少圖片文件大小,從而加快加載速度。 可以使用…

Mysql中切割字符串作為in的查詢條件

問題:需要將一個字符串切割成數組作為in的查詢條件,如: select * from table_1 where name in (select slit(names) from table_2 where id 3); names 返回的格式是’name1,name2,name3…,需要將name按照逗號切割作為in的查詢條件&#xff1b…

云計算中的虛擬化:成本節省、可擴展性與災難恢復的完美結合

云計算中虛擬化的 4 大優勢 1. 成本效益 從本質上講,虛擬化最大限度地減少了硬件蔓延。團隊可以將多個虛擬機整合到單個物理主機上,而不是為每個工作負載部署單獨的服務器。這大大減少了前期硬件投資和持續維護。 結果如何?更低的功耗、更低…

Linux : 多線程【線程概念】

Linux : 多線程【線程概念】 (一)線程概念線程是什么用戶層的線程linux中PID與LWP的關系 (二) 進程地址空間頁表(三) 線程總結線程的優點線程的缺點線程異常線程用途 (一)線程概念 線程是什么 在一個程序里的一個執行…

IDEA轉戰TREA AI IDE : springboot+maven+vue項目配置

一、trea下載安裝 Trae官方網址: https://www.trae.com.cn/ Trae官方文檔:https://docs.trae.com.cn/docs/what-is-trae?_langzh w3cschool: https://www.w3cschool.cn/traedocs/ai-settings.html 安裝這里省略,正常安裝即可。…

Java--圖書管理系統(簡易版)

目錄 目錄 前言 🔔1.library包 1.1 Book類 1.2 BookList類 🔔2.user包 2.1User類(父類) 2.2Admin(管理員) 2.3 NormalUser(普通用戶) 🔔3.Operation包 🕐3.1 IOperation接口 🕑3.2ListOperation(查看操作)…

深入淺出:Spring Boot 中 RestTemplate 的完整使用指南

在分布式系統開發中,服務間通信是常見需求。作為 Spring 框架的重要組件,RestTemplate 為開發者提供了簡潔優雅的 HTTP 客戶端解決方案。本文將從零開始講解 RestTemplate 的核心用法,并附贈真實地圖 API 對接案例。 一、環境準備 在 Spring…

大數據處理利器:Hadoop 入門指南

一、Hadoop 是什么?—— 分布式計算的基石 在大數據時代,處理海量數據需要強大的技術支撐,Hadoop 應運而生。Apache Hadoop 是一個開源的分布式計算框架,致力于為大規模數據集提供可靠、可擴展的分布式處理能力。其核心設計理念是…

685SJBH計量管理系統

摘 要 計量,在我國已有五千年的歷史。計量的發展與社會進步聯系在一起,它是人類文明的重要組成部分。它的發展經歷了古典階段、經典階段和現代階段。而企業的計量管理是對測量數據、測量過程和測量設備的管理。 本系統通過分析現有計量系統的業務邏輯…

從0到1構建前端監控系統:錯誤捕獲、性能采集、用戶體驗全鏈路追蹤實戰指南SDK實現

目錄 前言為什么要做前端監控前端監控目標穩定性用戶體驗業務 前端監控流程常見埋點方案代碼埋點可視化埋點無痕埋點 創建項目第一步、創建monitor文件,cmd進入文件進行npm init -y 項目初始化第二步、創建src/index.js和src/index.html文件第三步、創建webpack.con…

前端瀏覽器判斷設備類型的方法

前端瀏覽器判斷設備類型的方法 在前端開發中,判斷設備類型(如手機、平板、桌面電腦)有多種方法,以下是常用的幾種方式: 1. 使用 User Agent 檢測 通過 navigator.userAgent 獲取用戶代理字符串進行判斷:…

MNIST 手寫數字分類

轉自我的個人博客: https://shar-pen.github.io/2025/05/04/torch-distributed-series/1.MNIST/ 基礎的單卡訓練 本筆記本演示了訓練一個卷積神經網絡(CNN)來對 MNIST 數據集中的手寫數字進行分類的過程。工作流程包括: 數據準備&#xff…

數據庫中的 Segment、Extent、Page、Row 詳解

在關系型數據庫的底層存儲架構中,數據并不是隨意寫入磁盤,而是按照一定的結構分層管理的。理解這些存儲單位對于優化數據庫性能、理解 SQL 執行過程以及排查性能問題都具有重要意義。 我將從宏觀到微觀,依次介紹數據庫存儲中的四個核心概念&…

DAMA車輪圖

DAMA車輪圖是國際數據管理協會(DAMA International)提出的數據管理知識體系(DMBOK)的圖形化表示,它以車輪(同心圓)的形式展示了數據管理的核心領域及其相互關系。以下是基于用戶提供的關鍵詞對D…

《QDebug 2025年4月》

一、Qt Widgets 問題交流 1. 二、Qt Quick 問題交流 1.QML單例動態創建的對象,訪問外部id提示undefined 先定義一個窗口組件,打印外部的id: // MyWindow.qml import QtQuick 2.15 import QtQuick.Window 2.15Window {id: controlwidth: …