本文說明如何建立不使用 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