Kubernetes筆記-架構篇(一)
Kubernetes的外部架構如下
上述架構就是說Kubernetes提供了CNI、CRI、CSI的API介面去跟不同而且符合Open Container Intialtive(OCI)基金會制定的標準介接。
Container Runtime Interface(CRI)
就是常聽到的Docker Engine、Podman(runC)、Containerd、CRI-O(crictl)等執行Container的程式,而Docker因為Kubernetes在1.20以後不支援,其原因是因為Docker在與Kubernetes介接時會再用一個外掛dockershim(由Kubernentes維護),但因為只要Docker改了,dockershim這層就要再更新,所以為了維持Kubernetes的完整性,所以在1.20就被放棄不維護(意思是在1,19以前其實還是可以用的)
Container Network Interface(CNI)
CNI的用途就是提供Pod上網、分配給Pod IP可以是ipv4、ipv6,利用Kubernetes的介面去管理Network Policy,然後看CNI的工具有沒有支援Kubernetes的功能。這個Network Policy就是限制Pod與Pod之間的網路傳輸,或是點對點之間傳輸(就是沒有IP的Pod啦!)
CNI的Network Policy 的意義就是說當一個Pod在執行的過程中,會準備好一系列的參數執行時套用containerID等資訊,就像是Docker在執行一個Container時,會用一個docker-proxy的工具幫你把防火牆,IP、Container Port與Host Port的對應等資訊套用到Container上面,讓你可以管理Container的內容,只這一段從原來的CRI工具(如crictl podman docker)變成由Kubernetes完成,這就是K8S在Network Policy在上做的事情,所以在跑Container時因為Policy都幫你做好好的,對這段過程就變的淡淡的沒感覺,但其實就是在Host上新增一個可以連到Container的Bridge例如:cni0,然後這些Pod會被CNI的工具例如Flannel去分配IP到Pod上,而K8S可以透過CNI的介面介接例如:docker-proxy的Network Policy的工具,讓Pod有上網及被取存的能力!
Container Storage Interface(CSI)
就是Kubernetes可以支援的Storage介面啦,就是我們常聽到的ceph、NFS…等Storage的功能啦,大部分常用的是NFS Storage,而Kuberneres怎麼使用呢?就是用pv與pvc(這兩個是K8S的resorce之後會說明)來使用Storage的資源
參考網址:
CRI à https://reurl.cc/5o8096
CNI à https://reurl.cc/o9ZOk3
CSI à https://reurl.cc/NXGzVq

沒有留言:
張貼留言