Kubernetes在前面幾篇提到外部介接的部分,透過CRI、CNI、CSI的介面來管理容器,那K8S本身有那些服務呢?其實K8S本身是一個Cluster架構從基本的Single Masters and Multi Node,或是Multi Masters and Multi Nodes,節點中間透過K8S的服務來達到Pacemake及Keepalive的效果,當然因為K8S本身是一個服務管理介面,只是這些偵測及管理程序都是透過Container來完成,不同於以往的服務單一結構,而是透過一些Container的程序構成的基礎服務(例如kube-proxy、kube-api server)組成一個K8S平台服務。
MASTER主機的零件
使用者驗證(Authentication):
就是利用網頁介面登入做使用者驗證的介面,這點在(OpenShift Container Platform) 上會比較有感覺,(目前因為書讀的太少,在K8S上的驗證還沒有很清楚@@)在K8S或是 OCP會透過API的一個介面進行登入的動作,或是使用一組kubeconfig的驗證檔(是一個 yaml file),而這個驗證檔則是由X509的方式驗證,會產生一個Oauth Token利用這個Token登入K8S平台進行管理,Token過期則必需要重新產生Token
Etcd(Data Store):
Etcd是一Master中重要服務之一,他記錄了整個K8S平台的例如:Resource、Container、Cluster的狀態及Configuration,就像是用一個Metadata的方式描述上面的內容長什麼樣子,這些樣子成為一個K8S平台的生態
Kube-apiserver(API+Scheduler):
kube-apiserver就是管理Pod要到那個節點上執行的服務,配合Controller Manager依系統資源及Pod執行的條件及限制分配到某個Node上執行(像是OpenStack的Nova服務)
Kube-Controller Manager:
是Replication的控制管理的部分,來源是根據etcd記錄的Cluster資訊,當然因為Etcd是個重要的服務,也可以利用Replication的功能來增加etcd的服務,達到Cluster的效果
以上是Master的基礎服務,其中也包含了Registry、Network(SDN)、Image、Auth這些都是以Container的方式進行的服務,這部分除了可以包含在Master上執行外,也可以透過另外的節點執行,稱為Worker Node
Nodes主機
kube-proxy:
其實Master及Node主機都有這個程式,目的是透過kube-apiserver管理service及endpoint的變化,會配合CNI的Network Policy,產生iptables功能的設定,就像前面"Kubernetes-架構篇(一)"提到的那樣(docker-proxy)
kubelet:就是執行Kubernetes的主要服務(Daemon),包含Master及Node中都會有這個服務
Container Runtime:就是執行Container的工具,每台節點都需要安裝像是Docker(docker engine)、Podman(runC)、CRI-O(crictl)、Containerd
*Router Layer:如果要將Pod的服務暴露在外,就要利過Router layer處理(*此為OCP的部分?)
*Storage:就是儲存Registry的Image或是Container儲存資料的空間,通常會使用NFS來處理
以下是Kubernetes的內部的架構
資料來源 >
架構圖:https://reurl.cc/4yjrmX
kube-proxy:https://reurl.cc/WERxLx
etcd:https://reurl.cc/7y70r9
這是在看文章的過程中想到的補上去...因為之前練習安裝的時候這個會執失敗@@
core-dns:https://reurl.cc/jq3Wqq

沒有留言:
張貼留言