创建不含 kube-proxy 的集群

本文档介绍如何创建不使用 kube-proxy 的集群。

kube-proxy 是一个在集群中的每个工作器节点上运行的控制器。它会监视 Kubernetes Service 对象,并创建 iptables 规则以转发发送到 Service 地址的数据包。为使用 kube-proxy 和 iptables 而实现此目的的替代方案是在 kube-proxy-replacement 模式下使用 Dataplane V2。这样可以从集群中移除 kube-proxy

支持的操作系统

如需创建不使用 kube-proxy 的集群,请使用受支持的 Red Hat Enterprise Linux 操作系统之一或内核版本为 5.7.0 的受支持 Ubuntu 操作系统或更高版本。如果您的集群使用内核版本低于 5.7.0 的 Ubuntu 操作系统,则此功能不受支持。

移除 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