2021年2月27日 星期六

Kubernetes-架構篇(三)-K8S的零件

        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  

    

沒有留言:

張貼留言