Chuyển đến nội dung chính

第 14 課:Kubernetes 網路模型

Kubernetes 網路模型:容器到容器、Pod 到 Pod、Pod 到服務、外部到服務。 CNI 外掛程式、Cilium eBPF(建議 2026)、Calico、kube-proxy nftables(IPVS 已棄用 K8s 1.35)。

🎯 課程目標___HTMLTAG_1__HTMLTAG_2___了解基本到高階的 Kubernetes 網路模型:為什麼每個 Pod 都有自己的 IP、4 種通訊模式、CNI 外掛程式(Cilium 建議 2026)以及帶有 nftables 的通訊模式、CNI 外掛程式(Cilium 建議 2026)以及帶有 nftables 的 kMLTAG_3___HT Kubernetes Networking Model - 4 Communication Patterns

1。 Kubernetes 網路需求

Kubernetes 有 3 個核心網路需求:

  • 每個 Pod 必須能夠與叢集中的所有其他 Pod 通訊 不需要 NAT___HTMLTAG_12__HTMLTAG_13___
  • 每個節點必須能夠與每個 Pod 通訊 不需要 NAT___HTMLTAG_16__HTMLTAG_17___
  • Pod 本身看到的 IP 必須與其他 Pod 看到的 IP 相同__HTMLTAG_19___

這是一個「扁平網路模型」-與預設的 Docker(基於 NAT)不同。

2。四種通訊模式

2.1 容器到容器(在同一個 Pod 中)

同一 Pod 中的容器共享網路命名空間 → 透過 localhost.

進行通信 ___程式碼區塊_0___

2.2 Pod 到 Pod

叢集中的每個 Pod 都有一個單獨的 IP。 Pod 直接透過 IP 進行通訊 — CNI 外掛程式可確保路由。

___程式碼區塊_1___

2.3 Pod 到服務

Pod 透過 ClusterIP(虛擬 IP)與服務通訊。 kube-proxy 建立 iptables/nftables 規則以 DNAT(目標 NAT)到真實 Pod IP.

___程式碼區塊_2___

2.4 外部服務

透過 NodePort、LoadBalancer 或網關 API (HTTPRoute) 從叢集外部到服務的流量。

3。 CNI(容器網路介面)

CNI 是 Kubernetes 和網路外掛之間的標準介面。建立 Pod 時,kubelet 呼叫 CNI 外掛程式:

  • 為 Pod 建立網路介面
  • 分配 IP 位址
  • 路由配置

3.1 Cilium — 2026 年推薦

Cilium 在核心層級使用 eBPF(擴充伯克利封包過濾器) — 不需要 iptables 鏈。

___HTMLTAG_61__HTMLTAG_62___Cilium 優勢
:

  • eBPF:快速、可程式化、核心級網路
  • L7 可見度與負載平衡(HTTP、gRPC、Kafka)
  • 透過 Hubble 內建可觀測性(即時網路流量)
  • 本機閘道 API 實作
  • Sidecarless 服務網格(不需要 Envoy sidecar)
  • 網路政策:L3/L4/L7
___程式碼區塊_3___

3.2 印花布

Calico 是成熟的 CNI,具有 eBPF 資料平面支援(選購)、裸機 BGP 路由。適用於需要廣泛相容性或需要與實體路由器進行 BGP 對等的情況。

3.3 法蘭絨

Flannel 簡單且易於安裝,但 缺乏網路策略支援和可觀察性。不建議用於生產。

4。 eBPF — 為什麼它比 iptables 快?

iptables 使用線性規則來配對 — O(n) 和 n 個規則。當叢集有數千個服務時,iptables鏈很長,影響效能。

eBPF 使用雜湊映射 — 無論服務數量如何,查找都是 O(1)。 eBPF 程式直接在核心中運行,無需上下文切換到用戶空間。

___程式碼區塊_4___

5。 kube-代理模式 2026

kube-proxy 在每個節點上實現服務負載平衡.

5.1 iptables 模式(舊版)

為每個服務端點建立 iptables DNAT 規則。仍然有效,但可擴展性較差。

5.2 nftables 模式 — 建議 2026

___HTMLTAG_107__HTMLTAG_108___IPVS 模式已棄用 K8s 1.35。 nftables 是新的後端,比 iptables 更有效率。

___程式碼區塊_5___ ___程式碼區塊_6___

6。使用 CoreDNS 的 DNS

CoreDNS 是 Kubernetes 的預設 DNS 伺服器,在 kube-system.

中作為 Deployment 運行 ___程式碼區塊_7___

7。網路圖

___程式碼區塊_8___

摘要

  • Kubernetes扁平網路:每個Pod都有自己的IP,沒有NAT
  • 4 種模式:容器到容器 (localhost)、pod 到 pod(直接 IP)、pod 到服務(ClusterIP + kube-proxy)、外部到服務(NodePort/網關 API)
  • Cilium eBPF:CNI 2026 年推薦 — 快速、L7 可觀察性、本機 API 閘道
  • kube-proxy nftables:取代 IPVS(已棄用 K8s 1.35)
  • CoreDNS:透過 DNS 名稱發現服務