選擇容器網路介面

虛擬私有雲

檢視下列選擇容器網路介面 (CNI) 的資訊。

在 Red Hat OpenShift on IBM Cloud 4.20 及以後的版本中,Calico 是預設 CNI,但使用 RHCOS 工作節點的 VPC 群集可選擇 Open Virtual Network (OVN) 作為其群集 CNI。

Calico 預設
Calico 是一個單一平台,可為雲端、內部或邊緣的任何 Kubernetes 分佈提供網路、網路安全性及可觀察性。 無論您是剛開始使用 Kubernetes 或進行大規模作業,Calico 的開放原始碼、企業版和雲端版都能提供您所需的網路、安全性和可觀察性。 如需詳細資訊,請參閱 Calico 文件
OVN- Kubernetes (OVN) 4.20 及後續版本 僅限 RHCOS 工作節點
OVN- Kubernetes 基於 Open Virtual Network (OVN),提供基於覆疊的網路實作。 使用 OVN- Kubernetes 外掛的群集也會在每個節點上執行 Open vSwitch (OVS)。 OVN 會在每個節點上設定 OVS,以執行宣告的網路組態。 如需詳細資訊,請參閱 Red Hat 文件

比較 Calico 和 OVN

檢視下表,比較 Calico 和 OVN 的特色和功能。

使用 OVN 時,您必須確保 VPC 子網路不會與下表指定的其他子網路重疊。 如果有子網路重疊,pod 對 pod 的網路連線就會失敗。

Layer2 此外,layer3 的使用者自訂網路 (UDN) 不支援使用 DHCP 的工作負載,例如 OpenShift Virtualization 虛擬機器。

Calico 和 OVN 對照表
元件 Calico OVN- Kubernetes
封裝
  • IP 通訊協定中的 IP (不是 UDP 或 TCP )
  • 只封裝在不同子網路中的節點上執行的 pod 的 pod 對 pod 流量。
  • Geneve: UDP 連接埠 6081 上的通訊協定
  • 封裝所有 pod 對 pod 的通訊
預設群集網路 / Pod MTU 預設為 1480 位元組(20 位元組 IPinIP 標頭)。 這是可以改變的。 預設為 1400 位元組 (100 位元組 Geneve 標頭)。 這是可以改變的。 Daemonset 需要建立 NetworkManager 檔案,而不只是執行 ip link set dev ens3 mtu。 您也必須重新啟動新的工作站節點。
Pod IPAM Calico 最初會為每個新節點分配一個 /26 子網路 (64 個 IP,通常至少有一個用作 tunl0 IP,其餘的可用於 Pod)。 如果使用了 /26 中的所有 pod IP,則 Calico 會為節點指派第二個 /26 子網路,並在需要時指派更多子網路。 您可以使用 calicoctl ipam check 查看分配給每個節點的子網路。 OVN 初期會分配 /24 pod 子網路 (256 IP) 給每個新的群集節點。 沒有選項可以新增任何 pod 子網路。 它還會為每個新節點分配一個加入子網路 IP,OVN 會在內部使用該 IP
Pod 至 Pod 路由
  • 使用 linux 路由。
  • 使用 BGP 分配路由。
  • tunl0 每個節點上的介面用於封裝。
  • Open vSwitch (OVS) 在每個節點上執行,並路由 Pod 到 Pod 的流量。
  • OVN 配置 OVS 流量,以定義 pod 到 pod 的路由。
  • 每個節點上會建立許多其他介面,例如 ovs-system, genev_sys_6081, ovn-k8s-mp0, br-int, br-ex 並由 OVN 和 OVS 使用
Kubernetes 網路原則
  • 透過 calico-node 新增 iptables 規則來實作。
  • 記錄被網路政策封鎖的流量是可能的,但很複雜。 這需要使用「Log」動作的額外 Calico 政策,以及在何處/何時放置這些「Log」動作的一些思考和規劃。
  • 記錄到工作節點上的 syslog ,可能難以擷取。
  • 記錄不包括允許或阻止流量的政策。
  • 由 OVS 使用邏輯連接埠(而非 iptables)上的 ACL 實作。
  • 使用註解可以更輕鬆地記錄網路政策丟失和/或允許的流量。
  • 註解要記錄政策活動的命名空間,以及要記錄允許、拒絕或兩者。
  • 記錄會傳送到 ovnkube-node pod 中的檔案 /var/log/ovn/acl-audit-log.log
  • 存在將這些記錄傳送到其他記錄目標的組態選項。
  • 日誌包括哪些政策允許流量,但不包括哪些流量拒絕,因為政策是只允許的。
  • 必須至少有一個政策才會記錄允許的流量。
主機網路政策 Calico GlobalNetworkPolicies
附加子網路
  • 加入子網路100.64.0.0/16 ( OpenShift 預設值)。
  • 偽裝子網路169.254.64.0/18。 這與 OpenShift 的預設值 169.254.0.0/17 不同。 這個差異是為了避免與本機註冊中心 haproxy 使用的 169.254.2.0/24 IP 衝突。
  • 轉接子網路100.88.0.0/16 ( OpenShift 預設)。
APIserver 腕錶
  • calico-typha 註冊資源監視,並作為 calico-node Pod 的代理以通知變更。
  • calico-node 連接至其中一個 calico-typha pod 並註冊以獲得資源變更通知。
  • 控制平面中的 ovnkube-cluster-manager 容器會監視新的節點。
  • 每個群集節點上的 ovnkube-controller 容器會監視資源,並將其轉換為 nbdb 中的 OVN 邏輯項目。
CNI calicocalico-ipam CNI 二進位檔會由 calico-node pod 上的 install-cni initContainer 複製到每個節點。 ovnkube-node pod 的 ovnkube-controller 容器會執行新增和刪除呼叫的 CNI 二進位檔案。
已建立的資源
  • calico-apiserver 命名空間
  • calico-apiserver (部署,2 個 Pod)
  • calico-system 命名空間
  • calico-node (每個節點)
  • calico-typha (部署,2 - 10 個 Pod)。
  • calico-kube-controllers (1 個節點)。
  • openshift-kube-proxy 命名空間。
  • openshift-kube-proxy (每個節點)。
  • tigera-operator 命名空間。
  • tigera-operator (部署,1 個 pod)。
  • calico CNI 二進位檔案、 calico-ipam CNI 二進位檔案,以及其他各種 CNI 二進位檔案,會透過 install-cni initContainer 複製到每個節點上 calico-node
  • openshift-ovn-kubernetes 命名空間,ovnkube-node,每個節點上有 8 個容器,ovnkube-controller 監督資源、分配 Pod IP,並將資源轉換成 nbdb 中的 OVN 邏輯項目。 同時處理 CNI 新增和刪除。
  • nbdb 儲存邏輯項目。
  • northdnbdb 中的邏輯項目轉換為 sbdb 中的邏輯流程。
  • sbdb 儲存邏輯流程。
  • ovn-controller 轉換 sbdb 中的邏輯流並編程 OVS 交換器。
  • ovn-acl-logging.
  • kube-rbac-proxy-node 保護節點指標,因此只有授權使用者才能刮取它們。
  • kube-rbac-proxy-ovn-metrics 保護 OVN metrics,因此只有授權使用者才能讀取它們。
吊艙之間的連接
  • calico-node pod 最初透過本機 haproxy 連線至 kube apiserver,在 proxy pod 聆聽 TCP 172.20.0.1:2040 ,以取得 calico-typha pod 清單。
  • calico-node pod 連線到 TCP 埠 5473 上的 calico-typha pod 之一,以聆聽群集資源更新。
  • calico-node pod 執行 bird BGP daemon,該 daemon 以完整的網狀結構連線至 TCP 連接埠 179 上的所有其他 calico-node bird BGP daemon。
  • Pod 與 Pod 之間的通訊會直接發生在同一子網路節點上的 Pod。
  • 不同子網路上節點的 Pod 之間的 Pod 對 Pod 流量使用 IPinIP 封裝(或 Satellite 群集的 VxLAN )。
  • 每個節點上的 ovnkube-controller 容器透過 proxy pod 中的本機 haproxy 連線至 kube apiserver,並在 TCP 172.20.0.1:2040 聆聽資源表。
  • 所有 pod 對 pod 的通訊都使用 Geneve 封裝,並透過 UDP 連接埠 6081 傳送。
  • 如需詳細資訊,請參閱設定您的防火牆