Kubernetes (K8S) 基本介紹
Kubernetes 是一個 自動化部署、擴展、管理應用程式的平台。
本文與 GDSC 計畫合作,介紹 Kubernetes (K8S) 元件及原理。
3大優點介紹
- 同時部署多個容器到多台機器上(Deployment)。
- 服務的乘載量有變化時,可以對容器做自動擴展(Scaling)。
- 管理多個容器的狀態,自動偵測情況,若失效或錯誤,及重啟故障的容器 (self-healing) 。
Kubernetes 架構基礎元件介紹
- Cluster -集群
- 多個 Worker 與 Master 的集合在一起的的組件
- Master Node -Master 節點
- 運作的指揮中心
- 管理所有其他 Node
- Worker Node -worker 節點
- 運作的最小硬體單位
- 硬體資源的提供者
- 可以是 實體機器 或 虛擬機
- Pod
- Kubernetes 當中最小的組件單元
- 可以有一個或是多個 Container,但通常都只有一個
- 同一個 Pod 中 Containers 共享資源及網路
Kubernetes 他管理著一系列的主機或伺服器(Worker Node),,Node 當中有各自獨立運作的Pod。
Pod 的功能要比喻的話,可以說成是 container 的集合,這些 container 將一個 Pod 的應用 build 起來。
(例如:今天有一個網頁應用服務,我這個 Pod 應用中可能會需要哪些功能的 comtainer)
(例如:今天有一個網頁應用服務,我這個 Pod 應用中可能會需要哪些功能的 comtainer)
這麼多的 Pod ,Node,就會需要一個 coordinator (協調員)的角色來負責,調度、負載均衡,或是失效後重建,使服務能夠穩定運行。
這個協調員就叫做 Master Node,Master Node 透過與 Worker Node 上的 API 通道進行通訊,並藉由 API 即時監控 Node 及 Pod 的資源使用狀況 (satus)。
當 Pod 失效、崩潰時,負責重建的 Pod ,我們稱之為 Replica Set (副本集),他們是重要的功臣,就像伺服器上的乖乖一樣,讓我們的應用程式能夠長久且穩定的運行。
下圖展示 Kubernetes Architecture
上方紅色框框即為 協調工作的Master Node
Kubernetes Architecture (整個黑框稱為一個 cluster)
Master Node component
- Controller-manager –儀表板的角色
- 負責監視 Cluster 狀態
- 與 API 進行通訊 負責建立、刪除、管理資源,確認狀態沒問題
- Scheduler –資源調度
- 根據資源規定,協調出一個最適合運行的 Node 並且讓該裡面的 Pod 運行
- API server –資料匯流排(總線)
- 處理傳入請求並更新狀態
- Node 之間的溝通橋樑
- Etcd –資料庫的角色
- 存放 Kubernetes Cluster 的資料作為備份
- 僅 API 可直接拜訪(access),其他都須經由 API server
Worker Node component
黃框為 Kubelet,紅框為 proxy
- Kubelet -Node 擔任 資源管理員 的角色
- 按照指示啟動,停止 Pods
- 監控所有 Pods 的狀態並負責與 Master 溝通
- Kube-proxy 擔任 通訊代理 的角色
- Node 傳訊員(得知最新狀態)
- 更新 Node 的 iptables (清單)
- 將 K8s 服務代理轉發至外部網路
留言
張貼留言