ネットワークオプション

KubernetesはPodネットワークを提供するために、1つ以上のCNIプラグインのインストールを必要とします。RKE2は4つの主要なCNIプラグインをバンドルしています:Canal、Cilium、Calico、およびFlannel。CalicoとFlannelのみがMicrosoft Windowsをサポートしています。RKE2には、主要なCNIプラグインと一緒に有効にする必要がある二次CNIプラグインとしてMultusも含まれています。詳細については、MultusとSR-IOVのドキュメントを参照してください。

CanalはデフォルトのCNIプラグインですが、すべてのバンドルされたプラグインがサポートされています。 バンドルされたCNIプラグインはHelmチャートを介してインストールされ、追加のチャート値を持つHelmChartConfigをデプロイすることでカスタマイズできます。HelmChartConfigリソースの使用に関する詳細は、Helm統合のドキュメントおよび以下に提供されているCNI固有の例を参照してください。

CNIプラグインを選択する

使用したいCNIプラグインを選択するには、cni 環境設定ファイルキーを使用してください。バンドルされたCNIプラグインのいずれも使用したくない場合は、`cni`を`none`に設定できます。CNIプラグインがインストールされるまで、ノードはNotReadyのままであり、スケジュール不可として汚染されます。

# /etc/rancher/rke2/config.yaml
cni: canal

バンドルされたCNIプラグインは、Helm統合のドキュメントに記載されているように、HelmChartリソースをデプロイするAddOnとして提供されます。CNIプラグインチャートは`rke2-<CNI-PLUGIN-NAME>`と名付けられ、`kube-system`ネームスペースにあります。

バンドルされたCNIプラグインチャートのHelmチャート値をカスタマイズするには、対応するHelmChartの名前とネームスペースに一致するHelmChartConfigリソースを作成する必要があります。各バンドルされたCNIプラグインのチャート値をカスタマイズする例については、以下のタブを参照してください。

デフォルトのチャート値は、 RKE2チャートリポジトリをブラウズすることで見つけることができ、RKE2バージョンにバンドルされたチャートのバージョンについては`values.yaml`を参照してください。

  • CNIプラグイン

  • Cilium CNIプラグイン

  • Calico CNIプラグイン

  • Flannel CNIプラグイン

カナルは、ノード間のトラフィックにフランネルを、ノード内のトラフィックおよびネットワークポリシーにカリコを使用します。デフォルトでは、ノード間にオーバーレイネットワークを作成するためにvxlanカプセル化を使用します。例えば、フランネルインターフェースをオーバーライドするには、次のチャート値を適用できます:

# /var/lib/rancher/rke2/server/manifests/rke2-canal-config.yaml
---
apiVersion: helm.cattle.io/v1
kind: HelmChartConfig
metadata:
  name: rke2-canal
  namespace: kube-system
spec:
  valuesContent: |-
    flannel:
      iface: "eth1"

フランネルの ワイヤガードバックエンドカーネル < 5.6 のユーザーはモジュールをインストールする必要があります)を使用するには、次のチャート値を使用する必要があります:

# /var/lib/rancher/rke2/server/manifests/rke2-canal-config.yaml
---
apiVersion: helm.cattle.io/v1
kind: HelmChartConfig
metadata:
  name: rke2-canal
  namespace: kube-system
spec:
  valuesContent: |-
    flannel:
      backend: "wireguard"

その後、次のコマンドを実行して新しい設定を使用するためにCanalデーモンセットを再起動してください:kubectl rollout restart ds rke2-canal -n kube-system

カナル設定の完全なオプションに関する詳細情報は、 rke2-chartsを参照してください。

eBPFデータプレーン
バージョンゲート

RKE2は、2026年1月のリリースからCalico eBPFデータプレーンをサポートしています:v1.33.8+rke2r1、v1.34.4+rke2r1、およびv1.35.1+rke2r1。

カリコは、デフォルトのiptablesベースの実装の代わりに有効にできる効率的なeBPFデータプレーンを提供します。カリコのデータプレーンは、デフォルトのKubernetes kube-proxy実装を置き換えるためにも使用できます。

カリコのeBPFデータプレーンを有効にするには、設定ファイルに`disable-kube-proxy: true`を指定してRKE2をデプロイし、次のHelmChartConfigを使用してください:

apiVersion: helm.cattle.io/v1
kind: HelmChartConfig
metadata:
  name: rke2-calico
  namespace: kube-system
spec:
  valuesContent: |-
    installation:
      calicoNetwork:
        kubeProxyManagement: Enabled
        linuxDataplane: BPF
    kubernetesServiceEndpoint:
      host: "localhost"
      port: "6443"

CalicoのeBPFデータプレーンに関する詳細情報は、 Calicoのドキュメントを参照してください。

カナルは、ノードにiptablesまたはxtables-nftパッケージがインストールされている必要があります。

カナルは、現在Windowsノードを持つクラスターではサポートされていません。

IP割り当ての問題が発生した場合は、既知の問題と制限を確認してください。

Ciliumを使用する場合、ノードがサポートされているカーネルバージョン(>= 4.9.17)を持ち、 要件を満たしていることを確認する必要があります。デフォルトのオプションをオーバーライドするには、HelmChartConfigリソースを使用してください。HelmChartConfigリソースは、対応するHelmChartの名前とネームスペースと一致する必要があります。例えば、WireGuardを有効にするには、

# /var/lib/rancher/rke2/server/manifests/rke2-cilium-config.yaml
---
apiVersion: helm.cattle.io/v1
kind: HelmChartConfig
metadata:
  name: rke2-cilium
  namespace: kube-system
spec:
  valuesContent: |-
    encryption:
      enabled: true
      type: wireguard

Ciliumチャートで利用可能な値に関する詳細については、 rke2-chartsリポジトリを参照してください。

Kube-proxyの置き換え

Ciliumは、kube-proxyを完全に置き換え、iptablesの代わりにeBPFを使用してサービスのルーティングを実装する高度な機能を含んでいます。カーネルがv5.8未満の場合、重要なバグ修正や機能が欠落するため、Ciliumでkube-proxyを置き換えることは推奨されません。このモードを有効にするには、設定ファイルに`disable-kube-proxy: true`を指定してRKE2をデプロイし、次のチャート値を使用します:

# /var/lib/rancher/rke2/server/manifests/rke2-cilium-config.yaml
---
apiVersion: helm.cattle.io/v1
kind: HelmChartConfig
metadata:
  name: rke2-cilium
  namespace: kube-system
spec:
  valuesContent: |-
    kubeProxyReplacement: true
    k8sServiceHost: "localhost"
    k8sServicePort: "6443"

詳細については、 アップストリームドキュメントを確認してください。

Cilium Hubble

Ciliumには、 Hubbleと呼ばれる監視プラットフォームも含まれています。Hubbleを有効にするには、次のチャート値を使用してください:

# /var/lib/rancher/rke2/server/manifests/rke2-cilium-config.yaml
---
apiVersion: helm.cattle.io/v1
kind: HelmChartConfig
metadata:
  name: rke2-cilium
  namespace: kube-system
spec:
  valuesContent: |-
    hubble:
      enabled: true
      relay:
        enabled: true
      ui:
        enabled: true

Ciliumは現在、Windowsではサポートされていません。

例えば、インターフェースのMTUを変更するには、次のチャート値を使用できます:

# /var/lib/rancher/rke2/server/manifests/rke2-calico-config.yaml
---
apiVersion: helm.cattle.io/v1
kind: HelmChartConfig
metadata:
  name: rke2-calico
  namespace: kube-system
spec:
  valuesContent: |-
    installation:
      calicoNetwork:
        mtu: 9000

5.7以前のバージョンのカーネルにバグがあるため、Calicoはハードウェアチェックサムオフロードを無効にします。その設定はTCPパフォーマンスを約2.5Gbpsに制限します。より高いスループットが必要で、カーネルバージョンが5.7より大きい場合は、次のHelmChartConfigを使用してチェックサムオフロードを有効にできます:

# /var/lib/rancher/rke2/server/manifests/rke2-calico-config.yaml
---
apiVersion: helm.cattle.io/v1
kind: HelmChartConfig
metadata:
  name: rke2-calico
  namespace: kube-system
spec:
  valuesContent: |-
    felixConfiguration:
      featureDetectOverride: "ChecksumOffloadBroken=false"

Calicoチャートで利用可能な値に関する詳細については、https://github.com/rancher/rke2-charts/blob/main/charts/rke2-calico/rke2-calico/v3.31.400/values.yaml[rke2-chartsリポジトリ]を参照してください。

Calicoはノードにiptablesまたはxtables-nftパッケージがインストールされている必要があります。

SELinuxを有効にしてCalicoをインストールする場合は、このセクションをお読みください。

Flannelは2024年2月のリリース、v1.29.2、v1.28.7、v1.27.11、v1.26.14から利用可能です。`vxlan`バックエンドのみがサポートされています。

例えば、インターフェースのMTUを変更するには、次のチャート値を使用できます:

# /var/lib/rancher/rke2/server/manifests/rke2-flannel-config.yaml
---
apiVersion: helm.cattle.io/v1
kind: HelmChartConfig
metadata:
  name: rke2-flannel
  namespace: kube-system
spec:
  valuesContent: |-
    flannel:
      mtu: 9000

Flannelはネットワークポリシーをサポートしていません。したがって、強化されたインストールには推奨されません。

デュアルスタック構成

IPv4/IPv6デュアルスタックネットワーキングは、PodとサービスにIPv4およびIPv6アドレスの両方を割り当てることを可能にします。デュアルスタックモードでRKE2を構成するには、コントロールプレーンノードでPodとサービスのために有効なIPv4/IPv6デュアルスタックCIDRを設定する必要があります。そのためには、`cluster-cidr`と`service-cidr`の設定ファイルキーを使用してください:

#/etc/rancher/rke2/config.yaml
cluster-cidr: "10.42.0.0/16,2001:cafe:42::/56"
service-cidr: "10.43.0.0/16,2001:cafe:43::/112"

クラスターが最初に作成されるときにデュアルスタックネットワーキングを構成する必要があります。IPv4専用として起動された既存のクラスターでは有効にできません。

各CNIプラグインは、デュアルスタックのために異なる設定を必要とする場合があります:

  • カナルCNIプラグイン

  • Cilium CNIプラグイン

  • Calico CNIプラグイン

  • Flannel CNIプラグイン

カナルはデュアルスタックのためのRKE2設定を自動的に検出し、追加の設定は必要ありません。デュアルスタックは現在、RKE2のWindowsインストールではサポートされていません。

CiliumはデュアルスタックのためのRKE2設定を自動的に検出し、追加の設定は必要ありません。

Calicoは、デュアルスタック用のRKE2設定を自動的に検出し、追加の設定は不要です。デュアルスタックモードで展開されると、2つの異なるippoolリソースが作成されます。デュアルスタックを使用する際は、CalicoがVXLANカプセル化の代わりにBGPを利用することに注意してください。デュアルスタックとBGPは現在、RKE2のWindowsインストールではサポートされていません。

Flannelは、デュアルスタック用のRKE2設定を自動的に検出し、追加の設定は不要です。

IPv6セットアップ

IPv6のみの設定の場合、RKE2はETCDポッドのライブネスURLにアクセスするために`localhost`を使用する必要があります。オペレーティングシステムが`/etc/hosts`ファイルを正しく設定していることを確認してください。

::1       localhost
既知の問題

IPv6のデフォルトルートがルーター広告(RA)によって設定されている場合、sysctl `net.ipv6.conf.all.accept_ra=2`を設定する必要があります。そうでない場合、ノードはデフォルトルートが期限切れになるとそれを削除します。RAを受け入れることは、https://github.com/kubernetes/kubernetes/issues/91507[中間者攻撃]のリスクを高める可能性があることに注意してください。

IPv6専用モードでは、Ciliumはノード間のIPv6トラフィックのカプセル化をサポートしていません。異なるノード上のポッド間の通信は、ホストのネットワークに依存して、パケットをポッドIPに適切にルーティングします。Ciliumは、次の設定を使用してノード間の静的ルートを自動的に管理するように設定できます。
# /var/lib/rancher/rke2/server/manifests/rke2-cilium-config.yaml
---
kind: HelmChartConfig
metadata:
  name: rke2-cilium
  namespace: kube-system
spec:
  valuesContent: |-
    autoDirectNodeRoutes: true

ホスト名のないノード

Linodeなどの一部のクラウドプロバイダーは、ホスト名として"localhost"を持つマシンを作成し、他のプロバイダーはホスト名が全く設定されていない場合があります。これにより、ドメイン名解決に問題が生じる可能性があります。RKE2を`node-name`パラメータで実行すると、ノード名が渡されてこの問題が解決されます。