1. 程式人生 > 其它 >雲原生 • Kubernetes 認識 k8s、k8s 架構、核心概念點介紹

雲原生 • Kubernetes 認識 k8s、k8s 架構、核心概念點介紹

雲原生 • Kubernetes 認識 k8s、k8s 架構、核心概念點介紹

一、Kubernetes 簡介
Kubernetes 簡稱 k8s,是支援雲原生部署的一個平臺,起源於谷歌。谷歌早在十幾年之前就對其應用,通過容器方式進行部署。

k8s 本質上就是用來簡化微服務的開發和部署的,關注點包括自愈和自動伸縮、排程和釋出、呼叫鏈監控、配置管理、Metrics 監控、日誌監控、彈性和容錯、API 管理、服務安全等,k8s 將這些微服務的公共關注點以元件形式封裝打包到 k8s 這個大平臺中,讓開發人員在開發微服務時專注於業務邏輯的實現,而不需要去特別關係微服務底層的這些公共關注點,大大簡化了微服務應用的開發和部署,提高了開發效率。

二、Kubernetes 架構
k8s 總體架構採用了經典的 master slave 架構模式,分 master 節點和 worker 節點,節點可以是虛擬機器也可以是物理機。

master 節點由以下元件組成;

etcd,一種的分散式儲存機制,底層採用 Raft 協議,k8s 叢集的狀態資料包括配置、節點等都儲存於 etcd 中,它儲存了整個叢集的狀態。
API server,對外提供操作和獲取 k8s 叢集資源的的 API,是唯一操作 etcd 的元件,其他的元件包括管理員操作都是通過 API server 進行互動的,可以將它理解成 etcd 的 “代理人”。
Scheduler,在 k8s 叢集中做調動決策,負責資源的排程,按照預定的排程策略將 Pod 排程到相應的機器上。
Controller Manager,相當於叢集狀態的協調者,觀察著叢集的實際狀態,與 etcd 中的預期狀態進行對比,如果不一致則對資源進行協調操作讓實際狀態和預期狀態達到最終的一致,維護叢集的狀態,比如故障檢測、自動擴充套件、滾動更新等。
worker 節點由以下元件組成:

Controller Runtime,下載映象和執行容器的元件,負責映象管理以及 Pod 和容器的真正執行(CRI)。
Pod,k8s 中特有的一個概念,可以理解為對容器的包裝,是 k8s 的基本排程單位,實際的容器時執行在 Pod 中的,一個節點可以啟動一個或多個 Pod。
kubelet,負責管理 worker 節點上的元件,與 master 節點上的 API server 節點進行互動,接受指令執行操作。
kube-proxy,負責對 Pod 進行定址和負載均衡
使用者操作 k8s 叢集一般是通過 kubectl 命令列工具或者 dashboard;Pod 之間進行通訊是通過叢集內部的覆蓋網路 Overlay Network,外部流量想要進入叢集訪問 Pod 則是通過負載均衡 Load Balander 裝置進行。

三、Kunbernetes 有哪些核心概念?
1. 叢集 Cluster
叢集有多個節點組成且可以按需新增節點(物理機/虛擬機器),每一個節點都包含一定數量的 CPU 和記憶體 RAM。

2. 容器 Container
k8s 本身是一個容器排程平臺,從宿主機作業系統來看,容器就是一個一個的程序。從容器內部來看容器就是一個作業系統,它有著自己的網路、CPU、檔案系統等資源。

3. POD
k8s 也不是直接排程容器的,而是將其封裝成了一個個 POD,POD 才是 k8s 的基本排程單位。每個 POD 中可以執行一個或多個容器,共享 POD 的檔案系統、IP 和網路等資源,每一個 POD 只有一個 IP。

4. 副本集 ReplicaSet
一個應用釋出時會發布多個 POD 例項,副本集可對應一個應用的一組 POD,它可以通過模板來規範某個應用的容器映象、埠,副本數量等。執行時副本集會監控和維護 POD 的數量,數量過多則會下線 POD,過少則啟動 POD。

5. 服務 service
POD 在 k8s 中是不固定的,可能會掛起或者重啟,且掛起重啟都是不可預期的,那麼這就會導致服務的 IP 也隨著不停的變化,給使用者的定址造成一定的困難。而 service 就是用來解決這個問題的,它遮蔽了應用的 IP 定址和負載均衡,消費方可直接通過服務名來訪問目標服務,定址和負載均衡均由 service 底層進行。

6. 釋出 Deployment
副本集就是一種基本的釋出機制,可以實現基本的或者高階的應用釋出,但操作較為繁瑣。未來簡化這些操作,k8s 引入了 Deployment 來管理 ReplicaSet,實現一些高階釋出機制。

7. ConfigMap/Secret
微服務在上線時需要設定一些可變配置,環境不同則配置值不同,有些配置如資料庫的連線字串在啟動時就應該配好,有些配置則可以在執行中動態調整。為了實現針對不同環境靈活實現動態配置,微服務就需要 ConfigMap 的支援。

k8s 平臺內建支援微服務的配置(ConfigMap),開發人員將配置填寫在 ConfigMap 中,k8s 再 將 ConfigMap 中的配置以環境變數的形式注入 POD,這樣 POD 中的應用就可以訪問這些配置。

Secret 是一種特殊的 ConfigMap,提供更加安全的儲存和訪問配置機制。

8. DaemonSet
在微服務中,每個節點需要配置一個常駐守護程序。DaemonSet 可支援在每一個 worker 節點上面配置一個守護程序 POD 並且保證每一個節點上有且僅有一個 POD。

9. 核心概念總結
概念 作用
cluster 超大計算機抽象,由節點組成
Container 應用居住和執行在容器中
Pod Kubernetes 基本排程單位
Service 應用Pods的訪問點,遮蔽IP定址和負載均衡
Deployment

管理ReplicaSet,支援滾動等高階釋出機制
ConfigMap/Secrets 應用配置,secret敏感資料配置
DaemonSet 保證每個節點有且僅有一個Pod,常見於監控

————————————————
版權宣告:本文為CSDN博主「敬 之」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處連結及本宣告。
原文連結:https://blog.csdn.net/weixin_53072519/article/details/125228115