建立不含 kube-proxy 的叢集

在 kube-proxy-replacement 模式下,Dataplane V2 可讓您建立不執行 kube-proxy 或不依賴其 iptables 規則的叢集。移除 kube-proxy 可避免維護大量 iptables 規則的資源成本,並提升效能,尤其是在大型叢集中。

kube-proxy 控制器會在叢集中的每個 worker 節點上執行。它會監控 Kubernetes Service 物件,並建立 iptables 規則,轉送傳送至 Service 位址的封包。Dataplane V2 會改為處理這項轉送作業,因此您可以從叢集移除 kube-proxy。

支援的作業系統

如要建立不使用 kube-proxy 的叢集,請使用支援的 Red Hat Enterprise Linux 作業系統,或核心版本為 5.7.0 以上的支援 Ubuntu 作業系統。如果叢集使用 Ubuntu 作業系統,且核心版本低於 5.7.0,則不支援這項功能。

移除「kube-proxy」的好處

  • 避免維護大量 iptables 規則所需的資源消耗。

  • 提升成效。建立 iptables 規則相當耗時,尤其是大型叢集。

建立不含 kube-proxy 的叢集

按照其中一個叢集建立主題中的指示操作。

填寫叢集設定檔時,請加入下列註解:

preview.baremetal.cluster.gke.io/kube-proxy-free: "enable"

例如:

apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
  name: alice
  namespace: cluster-alice
  annotations:
    preview.baremetal.cluster.gke.io/kube-proxy-free: "enable"
...

確認叢集中沒有 kube-proxy

列出叢集中的 DaemonSet:

kubectl --kubeconfig CLUSTER_KUBECONFIG \
    get daemonsets --all-namespaces

將 CLUSTER_KUBECONFIG 替換為叢集 kubeconfig 檔案的路徑。

確認清單中沒有 kube-proxy。例如:

kube-system   anetd
kube-system   audit-proxy
kube-system   etcd-defrag
kube-system   gke-metrics-agent
kube-system   kube-control-plane-metrics-proxy
kube-system   localpv
kube-system   metallb-speaker
kube-system   node-exporter
kube-system   stackdriver-log-forwarder