K8s - 容器編排工具介紹
在現今軟體程式快速迭帶的時代就需要一個 “可靠、可擴展的分散式管理系統”,無論是軟體更新、系統維護都需要高度的穩定性及可用性,如果使用量一旦過多,也能快速且彈性的具備可擴展性,以上都可以透過 K8s 來達成目的。
1. K8s 基本介紹
k8s 全名 Kubernetes ,最早由 Google 開發為了大量編排容器所設計的管理工具,後來將原始碼開源貢獻給CNCF基金會( Cloud Native Computing Foundation )。 CNCF 官網連結請點我。CNCF 項目越來越多,各項目列表如下圖( K8 頂級項目也在其中 )。
2. K8s 主元件架構
2.1 K8s 的組件作為生產工廠來比喻
一個總部公司加上多個不同區域的生產工廠:
一、 總公司( Master ):
- kube-controller-manager 總經理室(管理部門)
- kube-apiserver 秘書室 (傳達命令語彙報結果)
- etcd 公司檔案庫 ( K - V 格式 )
- kube-scheduler 調度室 ( 尋找最佳資源及查看不同調度規則 )
- cloud-controller-manager 外事聯絡區 (非必要)
二、 生產工廠(Worker):
- kubelet 工廠廠長 ( 控制 container)
- kube-proxy 工廠總機 ( 轉接外部請求,轉給正在生產的工廠 )
2.2 kube-controller-manager
總經理室 - 主要隨時監測所屬的狀態,復原計畫等,為整個 K8s 運作大腦,並透過 kube-apiserver 部頒命令,除了 kube-apiserver 秘書可以直接對口之外,其餘任何部門均不得直接與總經理室進行溝通。
2.3 kube-apiserver
秘書室 - 傳達總經理室來的命令,將指命令記錄一份在 ETCD 檔案庫內,並對口總公司各部門及各工廠廠長。
2.4 etcd
公司檔案庫 - 分布式的 Key Value 儲存的資料庫。
2.4 kube-scheduler
調度室 - 尋找最佳及最適合生產的工廠(評估目前各機器的 CPU、RAM等各資源),並告知秘書室由此廠進行生產工作,並可以由使用者設定調度計畫,指定哪些機器執行哪些任務。
2.5 cloud-controller-manager
外事聯絡區 - 這是非必要的組件,主要為如果有混合雲,例如 GKE 等外部資源,可以協調控制。
2.6 kubelet
工廠廠長 - 啟動、停止、管理生產線 (容器)
2.7 kube-proxy
工廠總機 - 會與其它工廠總機互相溝通,記錄各工廠有哪些生產線的在生產的產品 ,如果有請求來,就將請求轉到對應生產產品的產品線去
3. K8s 快速安裝
K8s 手動安裝很多參數要配置,特別叢集環境難度很高(要求硬體資源也不少),不過對於一般開發者、或是初學者可以使用 Minikube 是由 Google 發布的一個輕量級工具,可以快速打造一個 k8s 環境,非常方便喔。
3.1 安裝步驟
- 基本需求
- 2 CPUs
- 2GB 記憶體
- 20GB 硬碟空間
- 安裝 Docker
|
|
- 創建一個使用者
MiniKube 在安裝時會要求使用非 root 來執行操作,也比較安全,所以這邊創建一個角色為 k8s。
|
|
- 下載 Minikube
安裝檔以 x86 的 linux 為例,如果使用的是 arm 架構可以至 MiniKube 官網下載。
|
|
- 安裝及啟動 Minikube
使用剛剛創建的 k8s 角色來執行,會自動拉取所需的 image 並且啟動
|
|
- 查看啟動後的 k8s
使用 minikube kubectl get pod -A
即可看到目前所有的 POD (服務)
|
|
- 安裝 kubectl ( 可選 )
kubectl 可以不用安裝,也能直接用 minikube 封裝好的來使用, 不過習慣使用 kubectl 操作的朋友可以直接至 k8s 官網上下載直接安裝使用。
|
|
4. 小結
k8s 十分的強大,不過囿於功能很多,要不斷的練習操作才能變的更佳熟悉。
如果你還沒有註冊 Like Coin,你可以在文章最下方看到 Like 的按鈕,點下去後即可申請帳號,透過申請帳號後可以幫我的文章按下 Like,而 Like 最多可以點五次,而你不用付出任何一塊錢,就能給我寫這篇文章的最大的回饋!