kubernetes k8s container ReplicaSet Deployment Rolling Update Kubectl Create Service

For K8S Beginner EP 10:Kubernetes Network 網路架構

網路,是Kubernetes最困難的部分,沒有之一

為什麼說網路是Kubernetes最困難的部分呢?這要從Kubernetes面對的對象開始談,一般而言,在Kubernetes上部署程式,不單單像傳統實體機或VM,提供一個完整的作業環境,透過成熟的維運分工體系,軟體工程師不需要太擔心網路的技術問題,諸如封包的路由怎跑、網路埠的設定、URL Rewrite、Reverse Proxy機制、負載平衡…等,但是在Kubernetes的世界,上述這些問題通常就是軟體工程師要顧慮的事情了!

實際上,Kubernetes的網路架構並不同於傳統的網路,它要顧慮的點非常多:

  1. Pod內部網路通訊
  2. Pod網路的Outbound
  3. Kubernetes Service網路的Inbound
  4. 單一節點跨Pod的網路如何連通
  5. 同一Kubernetes Service下不同Pod跨節點通訊
  6. 不同Kubernetes Service跨節點的通訊
  7. 跨叢集的網路架構設計
  8. …等

雖然如此的複雜,但若是有CCNA的基礎,可以發現,還是不脫離OSI 7層架構,再熟悉以下重要服務:

  1. DHCP
  2. DNS
  3. Port Forward
  4. Load Balance
  5. Reverse Proxy
  6. NAT (Network Address Translation)

相信人人都會是Kubernetes網路專家!

本篇將就單一節點、叢集環境說明網路架構,並同時分別就實體環境與應用程式兩個不同的觀點闡述內容,力求簡單、清晰的說明白。

Kubernetes Network架構 – 單一節點

理論上,在正式環境上不存在單節點架構,僅僅是為了讓說明能有層次。

單一節點的架構上,在多個地方都有網路埠,供不同的資源或服務網路服務,如下圖,Pod、Service、與主機都各自有網路埠:

Kubernetes Network nodePort targetPort containerPort

每個不同的網路埠說明如下:

#網路埠名稱所屬資源類型用途
1Target Port / Container PortPod供Pod內的Container使用的網路埠,單一Pod內的Container共用,使用同一個IP,但可以分享不同的Port號
2PortServiceService代表一群Pod所提供的服務,有其獨立的網路埠,提供對外服務所需的網路能力
3Node Port實體節點顧名思義,節點的網路埠,猶如實體伺服器的網路埠

這些網路埠是有其對應關係的,由外而內,Node Port –> Port –> Target Port,這個順序也是客戶端連線至實際服務的網路路由順序。

Kubernetes Network架構 – 叢集 Cluster

Kubernetes Network Cluster

在叢集架構下,多了一個「Cluster Network」叢集網路,作為單一Service下相同Pod橫跨多個Worker Node的解決方案,因此,由上圖可以看到,Service的進入口從單節點的Node Port改成Cluster IP。

至此,了解這些基礎知識,已經足夠我們繼續接下去學習Kubernetes的知識與技術了,至於更深入的網路架構與技術細節,待後續探究!

~ END ~


,

Related posts

Latest posts