2021年2月16日 星期二

Kubernetes筆記-架構篇(一)

Kubernetes筆記-架構篇()

Kubernetes的外部架構如下

上述架構就是說Kubernetes提供了CNICRICSIAPI介面去跟不同而且符合Open Container Intialtive(OCI)基金會制定的標準介接。

 

Container Runtime Interface(CRI)

    就是常聽到的Docker EnginePodman(runC)ContainerdCRI-O(crictl)等執行Container的程式,而Docker因為Kubernetes1.20以後不支援,其原因是因為Docker在與Kubernetes介接時會再用一個外掛dockershim(Kubernentes維護),但因為只要Docker改了,dockershim這層就要再更新,所以為了維持Kubernetes的完整性,所以在1.20就被放棄不維護(意思是在1,19以前其實還是可以用的)

Container Network Interface(CNI)

    CNI的用途就是提供Pod上網、分配給Pod IP可以是ipv4ipv6,利用Kubernetes的介面去管理Network Policy,然後看CNI的工具有沒有支援Kubernetes的功能。這個Network Policy就是限制PodPod之間的網路傳輸,或是點對點之間傳輸(就是沒有IPPod!)

    CNINetwork Policy 的意義就是說當一個Pod在執行的過程中,會準備好一系列的參數執行時套用containerID等資訊,就像是Docker在執行一個Container時,會用一個docker-proxy的工具幫你把防火牆,IPContainer PortHost Port的對應等資訊套用到Container上面,讓你可以管理Container的內容,只這一段從原來的CRI工具(如crictl podman docker)變成由Kubernetes完成,這就是K8S在Network Policy在上做的事情,所以在跑Container時因為Policy都幫你做好好的,對這段過程就變的淡淡的沒感覺,但其實就是在Host上新增一個可以連到ContainerBridge例如:cni0,然後這些Pod會被CNI的工具例如Flannel去分配IPPod上,而K8S可以透過CNI的介面介接例如:docker-proxy的Network Policy的工具,讓Pod有上網及被取存的能力!

Container Storage Interface(CSI)

    就是Kubernetes可以支援的Storage介面啦,就是我們常聽到的cephNFS…等Storage的功能啦,大部分常用的是NFS Storage,而Kuberneres怎麼使用呢?就是用pv與pvc(這兩個是K8S的resorce之後會說明)來使用Storage的資源

 

參考網址:

    CRI à https://reurl.cc/5o8096

    CNI à https://reurl.cc/o9ZOk3

    CSI à https://reurl.cc/NXGzVq

沒有留言:

張貼留言