在Kubernetes中建立Pod時會發生什麼? - daniele

banq發表於2020-09-25

在Kubernetes中建立Pod時會發生什麼?一個令人驚訝的簡單任務揭示了一個複雜的工作流,涉及叢集中的多個元件。
 
你可能熟悉的前4個步驟:
  1. kubectl將YAML傳送到API
  2. Pod儲存在etcd中
  3. 排程程式分配一個節點,此時Pod是在etcd中,而節點中沒有Pod。
  4. kubelet開始建立Pod。

 
下一步:
  1. kubelet委託CRI建立容器
  2. kubelet委託將容器連線到網路的CNI
  3. CNI分配IP地址
  4. 探針Probes被檢查
  5. kubelet報告IP地址到控制平面

 
Pod已建立!除非Pod是服務的一部分,否則Kubernetes會在此處停止。如果Pod屬於服務,則Kubernetes會建立一個端點:它連線Pod的IP地址和埠(targetPort)。將端點新增到Endpoint(物件)。
 
什麼是端點endpoint?
在Kubernetes中:
  • endpoint是10.0.0.2:3000(IP:埠)對
  • Endpoint是endpoint的集合(IP:埠對的列表)

對於叢集中的每個服務,Kubernetes都會建立一個具有endpoint列表的Endpoint物件。令人困惑,不是嗎?
端點endpoints (IP:port)用於:
  • kube-proxy用它設定iptables規則
  • CoreDNS用來更小DNS條目
  • Ingress控制器用來設定下游
  • 用於服務網格Service meshes
  • 用於更多運維

一旦端點endpoint被新增了,相應元件會被通知。
 
廣播ednpoint端點(IP:port)後,您終於可以開始使用Pod!
 
您能猜出刪除Pod後會發生什麼嗎? 與增加Pod有相同的流程,但是相反。這很煩人,因為有一些競賽條件的機會。



 

相關文章