このドキュメントでは、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