容器技术之快速了解K8S各抽象资源及组件架构
帶你快速了解Kubernetes主要概念和組件架構。
Kubernetes的組件和架構比較多,功能也比較多。
如果詳細探討,每個Kubernetes組件都可以單獨寫篇博客詳細講解。
我們這里是快速了解,就寫的相對比較簡單一些。
主要是針對不熟悉Kubernetes的朋友,能夠快速的了解一下Kubernetes的組件功能。對Kubernetes有一個直觀的印象。
?
目錄
一、快速了解kubernetes的主要概念
1、Pod
2、ReplicaSet
3、Deployment
4、Label
5、Service
二、快速了解kubernetes的主要架構
1、Master
2、Worker Node
一、快速了解kubernetes的主要概念
kubernetes架構中主要分為兩個角色:Master和Worker Node。
在這兩個角色中,都分別存在多個組件來支持Kubernetes的內部邏輯。
要熟悉這些組件,我們先要了解Kubernetes的一些常見的抽象概念及資源類型。
?
1、Pod
Pod是kubernetes中最小的調度單位,可以把他理解成在集群上運行的進程。
Pod里面可以運行單個容器或者運行多個需要協同工作的容器。
Pod運行在一個Worker Node中,這個Worker Node可以是物理機,也可以是虛擬機。
一個Worker Node中可能會有很多個Pod同時運行。
多個Pod可以協同工作。
在Pod中,有一個容器叫pause,這個是當前pod中所有容器的父容器,也叫基礎容器。
pause啟用PID的命名空間,pause的PID為1。
pause負責Pod中的容器的健康檢查。
如果我們在Pod中部署兩個容器,分別叫Container1和Container2。
那么Container1和Container2就會共享pause容器的網絡棧,他們之間的通訊就會更快。
他們之間的關系是這樣的:
?
2、ReplicaSet
ReplicaSet是一個副本集,簡稱RS。
它的作用就類似于Pod的負載均衡器。
通常情況下,ReplicaSet用于實現Pod的高可用性。
就是說呢,如果有Pod異常退出,會自動創建新的 Pod 來代替;并且自動回收異常退出的Pod。
?
3、Deployment
Deployment一般是用于滾動部署更新的組件。
更新Deployment的時候,會自動創建ReplicaSet,并自動啟動新的pod
Deployment會自動實現ReplicaSet的創建和銷毀的過程,并自動對新老Pod進行替換。
?
4、Label
Label是以key/value鍵值對的方式存在,比如app:nginx。
Label就像一個標簽,可以貼到很多對象上。比如Pod,Service,Node,ReplicaSet等等。
Label可以在創建對象的時候貼上去;也可以在對象創建以后再添加或者修改。
貼上Label以后,我們就可以通過調用Label,來調用對象。
每個Label必須是唯一的。
?
5、Service
Service是一個抽象的api對象。
Service可以成為多個后端Pod代理。
Service可以通過Selector指定Label名稱,通過Label Selector來調用對象,比如調用Pod。
Service可以通過ClusterIP,讓外部的客戶端client可以直接訪問到內部的Pod。
我們可以把Service理解成一個橋梁,對內串聯Pod或Pod組,對外串聯客戶端。
Service的本質是一個四層代理服務。
?
二、快速了解kubernetes的主要架構
Kubernetes是主從分布式架構。
Kubernetes主要包括兩種角色:Master Node和Worker?Node。
Master Node是主節點,也叫控制節點。
Worker?Node是工作節點。
有時候,也會直接把主節點叫做Master,工作節點叫做Node。
我們分別說一下這兩類節點:
?
1、Master
Master負責Kubernetes集群的控制和管理,是整個Kubernetes的控制中心。
Master通常至少都需要占據單獨一臺服務器,生產環境建議部署三臺以實現高可用。
Master中包含了四種重要的服務,分別是:ApiServer、Scheduler、Controller?Manager和Etcd。
?
1.1、ApiServer
ApiServer提供HTTP/HTTPS RESTful API。
ApiServer是整個kubernetes集群的中樞神經,是整個集群增刪改查的唯一入口。
ApiServer串聯了其他組件之間的數據交互。
ApiServer提供集群管理的授權、訪問控制、發現、認證等等功能。
ApiServer是Etcd唯一的代理。
ApiServer部署在master節點上。生產環境中master節點通常會做成高可用。
?
1.2、Scheduler
Scheduler是一種調度器。
Scheduler會收集每個Worker資源的詳細信息及運行情況,包括CPU、內存等。
Scheduler會收集每個Worker上運行什么服務。
Scheduler有自己的算法,在調度前會進行分析,然后會安排Pod到具體的worker節點上。
?
1.3、Controller?Manager
Controller Manager包括了很多的Controller,它可以對Pod進行副本管理。
Controller Manager是處理kubernetes集群中常規任務的后臺線程,它也是一個守護進程。
Controller Manager通過ApiServer監視kubernetes集群的共享狀態,確保整個集群處于預期的工作狀態。
Controller Manager是kubernetes高可用的保證。
?
1.4、Etcd
Etcd是一個存儲組件,就像是Kubernetes集群的數據庫。
Etcd會存儲整個kubernetes集群狀態。比如各個Node的信息和狀態等。
Etcd作為一個節點是相對獨立的。
只有ApiServer才能和Etcd進行通訊,Etcd會為ApiServer的操作記錄持久化。
Etcd不光可以存儲,還可以監聽。
Etcd的鍵值發生變化會通知ApiServer,由ApiServer去通知客戶端。
因為Etcd的重要性,生產環境中Etcd最好部署多臺,實現高可用。
?
?
2、Worker Node
Worker Node也叫Node,顧名思義,就是工作節點。我們Kubernetes的程序應用就會部署在這里。
Node主要就是為Pod提供一個運行的環境,以及可以對Pod進行操作的空間。
Node受Master的管理。
Node主要由Kuberlet、Container Runtime、kube-proxy組件構成。
下面快速說一下這三個組件:
?
2.1、Kubelet
每個Worker Node上都有Kubelet,Kubelet就像是Node的客戶端。
Kubelet會監聽和維護Pod的生命周期。
當Master上的Scheduler確定了某個Node后,就會把Pod的配置信息發送給這個Node的kubelet,
kubelet就會根據這些配置信息自動創建和運行容器。
?
2.2、Container Runtime
每個Worker Node上都有Container Runtime。
Container Runtime負責下載image并運行容器,它提供一個容器運行環境
Kubernetes的Container Runtime支持的容器有很多,最常見的就是Docker。
?
2.3、kube-proxy
kube-proxy就是一個代理,它可以轉發Service的請求到Pod。
kube-proxy可以實現一個內部Pod的負載均衡。
?
?
參考文章:
- https://blog.csdn.net/fangfu123/article/details/105792826
?
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的容器技术之快速了解K8S各抽象资源及组件架构的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C#中? 、?? 、?. 、??= 的
- 下一篇: 实现android应用程序自动化测试的批