在 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