kube-proxy を使用しないクラスタを作成する

このドキュメントでは、kube-proxy を使用しないクラスタの作成方法について説明します。

kube-proxy は、クラスタ内の各ワーカーノードで実行されるコントローラです。さらに、Kubernetes Service オブジェクトを監視し、Service アドレスに送信されるパケットを転送する iptables ルールを作成します。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