Dataplane V2 in kube-proxy-replacement mode lets you create clusters that
don't run kube-proxy or rely on its iptables rules. Removing kube-proxy
avoids the resource cost of maintaining a large set of iptables rules and
improves performance, especially in large clusters.
The kube-proxy controller runs on each worker node in a cluster. It watches
Kubernetes Service objects and creates
iptables
rules to forward packets that are sent to Service addresses. Dataplane V2
handles this forwarding instead, so you can remove kube-proxy from the
cluster.
Supported operating systems
To create a cluster that does not use kube-proxy, use one of the supported
Red Hat Enterprise Linux
operating systems or a supported
Ubuntu
operating system with kernel version 5.7.0 or later. If your cluster uses an
Ubuntu operating system with kernel version earlier than 5.7.0, this feature is
not supported.
Advantages of removing kube-proxy
Avoid the resource consumption required for maintaining a large set of iptables rules.
Improve performance. Creating iptables rules is time consuming, especially for large clusters.
Create a cluster without kube-proxy
Follow the instructions in one of the cluster creation topics.
As you fill in your cluster configuration file, include the following annotation:
preview.baremetal.cluster.gke.io/kube-proxy-free: "enable"
For example:
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
name: alice
namespace: cluster-alice
annotations:
preview.baremetal.cluster.gke.io/kube-proxy-free: "enable"
...
Verify that kube-proxy is not in your cluster
List the DaemonSets in the cluster:
kubectl --kubeconfig CLUSTER_KUBECONFIG \
get daemonsets --all-namespaces
Replace CLUSTER_KUBECONFIG with the path of the cluster kubeconfig file.
Verify that kube-proxy is not in the list. For example:
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