繁中

Kubernetes將數據中心抽象為作業系統工程項目

Kubernetes是一個工程實現,將「大量機器+容器+網絡+存儲」抽象為「作業系統」。
它沒有解決「如何運行程式」,而是:

當計劃規模失控時,系統還能由人類管理嗎?

1. Kubernetes的問題邊界

在Kubernetes之前,工程界面臨著一個非常現實的問題:

  • Docker解決 「如何打包和運行應用程式」的問題
  • 但它沒有起作用:
    • 哪台機器正在運行?
    • 如果我掛斷電話該怎麼辦?
    • 如何擴張?
    • 多個服務如何通信?
    • 如何不中斷地更新?

當系統從:

  • 1 - 10單位-100單位-1000單位

「SSH +腳本+人工doxxing」完全無效。

Kubernetes的界限很明確:

它不關心你的業務邏輯,只關心系統是否始終處於「你聲明的狀態」。

2.聲明系統:Kubernetes的工程核心

Kubernetes的設計理念本質上只有一句話:

您描述了「目標狀態」,系統負責不斷接近它。

例如:

複本:3

這不是命令,而是 約束.

  • 如果現在只有2個|補1個
  • 如果有5個,則殺死2個
  • 如果節點掛起→遷移

這與傳統的腳本操作的不同之處在於:

傳統方式Kubernetes
人們決定每一步人們只宣布結果
一次性行動持續趨同
成功結束了始終對齊

從工程角度來看,Kubernetes更多的是一個「約束求解系統」。

3.從架構角度來看:典型的大規模分布式系統

如果你認為Kubernetes是一個「工具」,它就會被使用得非常膚淺;
但如果你認為它是 分布式系統示例,價值會非常高。

核心組件非常「教科書級」:

1. API伺服器:單一真相來源

  • 所有的州都寫在這裡
  • etCD是底層存儲
  • 所有組件 只能通過API進行通信
    這是典型的 集中國家+分散執行

2.:約束下的最優解搜索

收件箱的工作不是「只是找到一台機器」,而是:

  • 過濾(資源/親和力/污漬)
  • 評分(負載/平衡/策略)
  • 選擇最佳節點

這基本上是一個 約束優化問題.

3.控制者:不斷讓世界保持一致

控制器的邏輯非常天真:

观察状态 → 对比期望 → 执行动作 → 再观察

但工程價值極高,因為它帶來:

  • 自動修復
  • 國家自行治癒
  • 系統穩定性

👉這是許多工程師真正理解的地方 控制論 第一次

4. Kubelet:執行層代理

  • 在每個節點上運行
  • 將「抽象狀態」轉化為「真實容器操作」
  • 它是控制平面和物理世界之間的接口

4.為什麼Kubernetes原始碼如此「沉重」?

很多人第一次看原始碼時都會感到困惑:

為什麼有這麼多代碼?這麼多抽象?

原因不是「過度設計」,而是:

  • 支持 插件 需要
  • 支持 雲供應商差異化
  • 落後 兼容性 需要
  • 需要支持 大規模進化

Kubernetes的工程權衡是:

複雜性集中在平台層,釋放了業務層。

這是一個非常成熟且非常昂貴的工程決策。

5.它不是一個框架,而是基礎設施

在工程生態系統中的位置:

  • Docker:運行時
  • Kubernetes:平台內核
  • 舵手/操作員:生態系統層
  • 雲供應商:託管和集成

Kubernetes不再是「選擇」的問題,而是「是否參與現代工程體系」的問題。

Github:https://github.com/kubernetes/kubernetes
管材:

返回頂端