在K8S中,體系結構有哪些不同的組成部分?

黄嘉波發表於2024-10-26

Kubernetes(簡稱K8s)的體系結構是一個複雜但高度組織化的系統,它包含多個不同的組成部分,這些部分協同工作以實現容器化應用程式的自動化部署、擴充套件和管理。以下是K8s體系結構的詳細組成部分:

1. 控制平面(Control Plane)

控制平面是K8s叢集的管理核心,負責整體的叢集管理和控制。它包含以下關鍵元件:

  1. API Server
    • 提供Kubernetes API介面,這是叢集內外與Kubernetes互動的主要方式。
    • 接收來自使用者和其他元件的請求,如Pod的建立、刪除、查詢等,並將這些請求儲存到Etcd中。
  2. Etcd
    • 一個分散式的鍵值儲存系統,用於儲存叢集的配置資訊、後設資料和狀態資料。
    • 它是K8s叢集的“大腦”,確保叢集狀態的一致性和可靠性。
  3. Controller Manager
    • 負責監控Etcd中的資源物件狀態,並根據定義的規則自動管理叢集中的各種控制器。
    • 這些控制器包括副本集控制器、服務控制器、名稱空間控制器等,它們確保叢集中的資源物件符合預期的狀態。
  4. Scheduler
    • 負責根據定義的排程策略將容器(Pod)部署到合適的節點上。
    • 它考慮節點資源的可用性和約束,以及Pod的資源需求和親和性等因素。
2. 節點(Node)

節點是Kubernetes叢集中的工作節點,負責執行容器。每個節點都包含以下元件:

  1. Kubelet
    • 每個節點上的主要“節點代理”,負責與控制平面通訊。
    • 接收來自控制平面的指令,如建立、刪除Pod等,並管理節點的容器執行時。
  2. 容器執行時(Container Runtime)
    • 如Docker、containerd等,用於拉取容器映象並啟動容器。
    • 它為容器提供執行時環境,包括檔案系統、網路、程序等。
  3. Kube-Proxy
    • 負責維護節點上的網路規則,實現服務發現和負載均衡。
    • 它透過iptables或IPVS等機制轉發流量到相應的Pod。
3. 核心物件
  1. Pod
    • K8s中的最小部署單元,包含一個或多個緊密耦合的容器。
    • Pod是K8s管理的基本單元,它提供了容器執行所需的資源和環境。
  2. Service
    • K8s中用於將容器暴露給叢集外部的抽象概念。
    • 它透過定義Service資源物件來實現負載均衡和服務發現,使得叢集內外的元件可以方便地訪問Pod提供的服務。
  3. Volume
    • K8s透過卷(Volume)機制來實現容器的永續性儲存。
    • 卷可以由Pod使用,並可以透過不同的儲存外掛來實現不同的儲存後端,如本地磁碟、網路儲存和雲端儲存等。
4. 其他元件和概念
  1. Namespace
    • K8s提供的多租戶功能,用於區分不同的專案、團隊或使用者。
    • 透過Namespace可以實現資源的隔離和許可權管理。
  2. 標籤(Labels)和選擇器(Selectors)
    • 標籤用於為資源物件新增後設資料,選擇器用於根據標籤選擇資源物件。
    • 它們提供了靈活的資源管理和查詢機制。
  3. 網路外掛
    • 如CNI(Container Network Interface)外掛,用於實現K8s叢集的網路功能。
    • 這些外掛可以支援不同的網路模型和技術,如Flannel、Calico等。
  4. 儲存外掛
    • 如CSI(Container Storage Interface)外掛,用於實現K8s叢集的儲存功能。
    • 這些外掛可以支援不同的儲存後端和協議,如Ceph、NFS等。

綜上所述,K8s的體系結構由控制平面、節點、核心物件以及其他元件和概念組成。這些部分協同工作,共同實現了容器化應用程式的自動化部署、擴充套件和管理。

相關文章