建立不含 kube-proxy 的叢集

本文說明如何建立不使用 kube-proxy 的叢集。

kube-proxy 是在叢集中的每個工作站節點上執行的控制器。它會監控 Kubernetes Service 物件,並建立 iptables 規則,轉送傳送至 Service 位址的封包。除了使用 kube-proxy 和 iptables 達成這個目的,您也可以在 kube-proxy 替代模式中使用 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