K8S 原理最全詳解 -萬字圖文總結-

大家好,我是 mikechen。

K8S(Kubernetes) 是雲原生最核心的內容,也是雲計算的未來,下滿我就全面來詳解 K8S 的原理 @mikechen

K8S

K8S 是 Kubernetes 的縮寫,是 “google” 開發的容器編排平臺,主要用於:自動化應用程序的部署、擴展、和管理。

如下圖所示:

主要解決:

總之,K8S 爲容器化應用程序提供了一個全面的管理層,確保應用程序在集羣環境中的可伸縮性、和穩定性。

Kubernetes 原理

Kubernetes 架構組件,包括:多個關鍵組件,比如:Master 主組件、和工作節點組件...... 等等。

如下圖所示:

最核心的組件,包括圖上的:主節點(Master Node)組件、以及工作節點(Worker Node)組件... 等。

主節點(Master Node)組件,又會包含:apiserver、scheduler、controller... 等組件,下面我分別詳解 @mikechen

Master 主節點架構組件

Master 節點,負責:管理、和控制整個 Kubernetes 集羣,包含多個組件:apiserver、scheduler、controller... 等組件。

如下圖所示:

1.API Server

API Server,是 Kubernetes 的前端,負責:處理 RESTful API 請求(如:kubectl.... 命令),並將這些請求分發給其他組件進行處理。

如下圖所示,黃色框:

API Server 是所有操作的入口,提供集羣的統一接口。

比如:統一進行身份認證、授權、API 驗證、和集羣狀態的持久化........ 等功能。

2. 鍵值存儲 etcd

Kubernetes 使用 etcd 存儲所有集羣的元數據、和狀態信息。

比如,包括:配置信息、狀態信息、服務發現信息...... 等。

kube-apiserver 通過讀寫 etcd 來管理集羣的狀態信息,其他組件通過 kube-apiserver 訪問 etcd 中的數據。

etcd 通過使用 Raft 協議,來實現分佈式一致性,確保數據在多個節點之間的一致性。

3.ControllerManager

Controller Manager 負責:執行集羣的後臺任務,包括:節點控制、副本控制、端點控制、和服務賬號控制等。

Controller Manager 包含一堆 “控制器”,包括:節點控制器、複製控制器、端點控制器、和服務控制器... 等。

如下圖所示:

4.Scheduler

Scheduler 根據資源需求、策略和約束條件,選擇合適的節點運行 Pod。

以及,基於資源需求、策略限制、數據位置、工作負載間隔... 等標準來做調度決策。

工作節點架構組件

在 Kubernetes 的工作節點(Worker Node)中,有幾個關鍵組件,它們共同負責運行實際的應用工作負載。

如下圖所示,綠色框:

上圖右側的綠框就是 Kubernetes 工作節點,包含如下組件:

1.Kubelet

Kubelet 是 Kubernetes 中的主要節點代理,運行在每個節點上,負責確保容器在 Pod 中運行,並且健康。

核心功能:

2.Container Runtime

Container Runtime:分別用於管理容器運行、和鏡像,是實際負責拉取容器鏡像、啓動和停止容器的底層。

Kubernetes 支持多種容器運行時,包括:Docker、containerd、和 CRI-O..... 等。

3.Kube-proxy

kube-proxy 負責:在每個節點上實現 Kubernetes 服務的網絡代理,主要處理:網絡流量的轉發、和負載均衡。

比如:設置 iptables、或 ipvs 規則,來實現服務之間的通信、和負載分配。

4.Pod

Pod 是 Kubernetes 的最小部署單元,如下圖所示:

Pod 是一個、或多個容器的集合,這些容器共享存儲、網絡、和運行環境。

每個 Pod ,通常包含:一個主要容器、和一些輔助容器。

並且,Pod 內的容器可以共享數據卷,用於數據持久化、和共享。

以及,通過添加、和刪除 Pod 副本,輕鬆地水平擴展應用程序。

這些組件和概念共同協作,構成了 Kubernetes 的基礎架構,使得它能夠高效地管理和編排容器化應用。

K8S 的應用

K8S 的應用非常的廣泛,比如最典型的包括:

1、微服務架構

Kubernetes 非常適合運行微服務架構的應用程序,通過:服務發現、負載均衡、和自動擴展..... 來管理複雜的微服務部署。

2、DevOps

Kubernetes 支持 CI/CD 管道,簡化了應用程序的構建、測試 / 和部署過程,促進了 DevOps 實踐。

3、混合雲和多雲策略

通過一致的 API 和配置管理,Kubernetes 支持跨多個雲提供商、和本地環境的應用程序部署,促進混合雲、和多雲策略的實現。

4、大數據和機器學習

Kubernetes ,還可以管理大數據處理任務,以及機器學習模型的訓練、和推理,支持彈性計算資源的分配。

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/U2Ad2dOokxBfayqiiAjH1w