Create a cluster without kube-proxy

This document shows how to create a cluster that does not use kube-proxy.

kube-proxy is a controller that 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. An alternative to using kube-proxy and iptables for this purpose is to use Dataplane V2 in kube-proxy-replacement mode. This allows for the removal of 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. Clusters that use Ubuntu do not support this feature.

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 deamonsets --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