今天開始進入 k8s 基礎介紹的環節,首先 k8s 是一個主從式的架構設計,主要分成 Master & Node,下面我們來看看這張 k8s 的架構圖。

kubernetes-arch

ref wiki

Master Node

etcd

一個類似 redis 的 key value 輕量型資料庫(不過他比 redis 更強,有分散式的特性 ),主要是拿來儲存各個 cluster 的整體狀態以及配置資訊。

api server

所有 k8s 對外或內部呼叫的 api 呼叫入口。

scheduler

負責整個 k8s 排成更新對應時間應該要做的事情,或是固定時間追蹤節點上的資源利用,避免負載超載

controller manager

整個 k8s 的控制器,用負責控制 POD的編排部署。

Worker Node

Pod

我們所熟悉的 container 都是放在 POD 裡面,POD 負責管理 container 的生命週期

kube-proxy

負責 k8s proxy 跟 load balance 所有應用,它可以依據外部請求,把流量轉導到該服務上。

cAdvisor

用來監控收集每個 node 上面的 CPU RAM …. 等相關資源

總結

在 k8s 裡面 node 可以當作我們之前常見的實體 VM,一個 node 就是等於加開一台機器。 POD 其實就約略等同於container (雖然一個 POD 可以部署多個 container),但基本上可以理解成,一個 POD 就是一個服務。

所以從這個架構中我們可以看到,這個模式就很像上古時代上程式時,需要透過 FTP 把檔案上傳到某個 server ,才算完成部署,但是後續我們需要特別對那台 server 做很多營運相關監控,如果未來需要 scale,我們還需要另外再加開 VM。

不過現在我們透過 k8s 其實你可以不用管會上傳到哪台 server (Node),k8s 會自動幫你做資源調度,你也能隨時監控你每個服務目前運行的狀態。

下一篇我們開始進入到安裝的部分。