K8S學習之體系架構介紹
- Kubernetes整體架構
- master構成
- worker構成
- Controller控制器
- 其他
- Label
- 參考鏈接
Kubernetes整體架構
-
內容介紹
每個Kubernetes集群都有兩種型別的節點:master 和 worker,
master負責控制和監控worker作業集群
-
整體組成

master構成
-
整體圖例

-
etcd
作為資料庫,所有kubernetes物件、當前狀態、訪問資訊、集群配置資訊…,都存在這,
-
API Server
暴露集群操作的端點,master和worker上的組件都需要訪問api server,以便完成自己的作業,
-
Scheduler
調度程式,負責決定哪個作業由哪個機器干,
-
Control Manager
控制管理器,監視集群的狀態(通過呼叫API服務器來獲取此資料)并采取措施將其置于預期狀態,
worker構成
-
整體圖例

-
kubelet
worker節點的核心,與master的api server溝通,運行調度到本節點的容器
-
kube Proxy
使用IP表/IPVS處理Pod的網路需求
-
Pod
kubernetes 運行容器的主力,提供了容器間聯網的能力

一個pod可以有多個容器,這些容器中的應用相互間都視為本地,
pod的網路介面提供了一個機制,使其可以與本節點或其他節點上的pod進行網路連接,

每個pod都會被指定一個IP,kube-proxy將使用該IP地址來路由流量,而且此IP地址僅在集群中可見,
一個pod中掛載的資料卷可以被pod內所有容器看到,因為Pod中有一個叫Pause的根容器,其余的用戶業務容器都是共享這個根容器的IP和Volume,例如,你的 APP 是一個圖片上傳應用,把圖片保存在一個資料卷中,同一個 pod 中的其他容器可以監控這個資料卷,發現有新圖片時,就開始處理,例如縮放多個尺寸的圖片、上傳到云存盤,
Controller控制器
-
內容介紹
kubernetes中有很多控制器,例如ReplicaSet、Replication Controller、Deployments、StatefulSets和Service等,
他們都控制pod的物件,下面介紹幾個重點的控制器:
-
ReplicaSet
主要職責是根據給定的Pod創建副本,如果一個pod掛了,這個控制器就會得到通知,立馬創建一個新的,

-
Deployment
使用ReplicaSet來管理副本,提供了滾動升級的能力,擴展新的,縮減舊的,

-
Service
類似于一個負載均衡器一樣,向相應節點分派包,可以跨worker節點構建一個pod組(通常是根據pod標簽),

例如你的前端應用、后端應用,各自都有很多個實體在運行,前后端怎么溝通?
前端只需要知道后端各個實體的訪問地址,硬編碼后端IP的方式顯然不能用,那么就需要把后端實體組成一個 service,前端只需要訪問這個 service,由 service 對其中的后端實體進行流量負載均衡轉發,
一旦service被創建,K8S會為其分配一個集群內唯一的IP,叫做ClusterIP,而且在service的整個生命周期中,ClusterIP不會發生變更,這樣一來,就可以用與Docker Swarm類似的操作,建立一個ClusterIP到服務名的DNS域映射即可,
-
Ingress
Ingress(入口)控制器是和外部世界溝通的唯一入口,外部世界通過Ingress與集群中的所有服務溝通,就像是一個網關,方便我們在一個地方統一設定安全策略、監控、記錄日志,

其他
Label
-
內容介紹
Label本質是一個鍵值對,具體的值由用戶決定,Label就是標簽,可以打在Pod上,也可以打到Service上,總結來說,Label與被標記的資源是一個一對多的關系,
-
舉例說明
例如,我們給Pod打上了role=serviceA的標簽,那么只需要在Service中的Label Selector中加入剛剛那個標簽,這樣一來,Service就可以通過Label Selector找到打了同一個Label的Pod副本集了,
參考鏈接
-
圖解 Kubernetes
https://www.cnblogs.com/yogoup/p/12122676.html
-
簡單了解一下K8S,并搭建自己的集群
https://zhuanlan.zhihu.com/p/97605697
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/350866.html
標籤:其他
