RKE2 + Windows ノードで Calico の blockSize を変更して Pod を 61 個以上動かす方法
みなさん。 k8s 使ってますか?
わたしは CKA の勉強をすると決めて 6か月くらい経ちました。
はやく受験しろって感じですけど、ちょっと実験したことがあったので記事にします。
ちなみにこの記事を読んでも CKA には何の関係もありません。
RKE2 の Windows ワーカーノードでは、Calico のデフォルト設定だと /26(64 IP) が割り当てられます。
ただし Windows ノードでは各ブロックで 4 IP が予約されるため、実際に使えるのは 60 IP しかありません。
そのため、Pod を 61 個以上動かそうとすると IP が枯渇してしまいます。
この記事では、blockSize を拡張して 61 個以上の Pod を収容できるようにした手順を備忘録として残します。
Windows Server を購入できるほどのお金はないので、今回の検証では評価版の Windows Server を利用しました。
RKE2 では、2025年9月現在 Windows Server 2022 までをサポートしているようです。
さて、以下から記事本文です。
検証環境
- RKE2
- Calico (VXLAN)
- Windows Server 2022 評価版(ワーカーノード)
Ubuntu Desktop を Rancher 実行環境として、 master ノードに Ubuntu Server 、 worker ノードに Windows Server 2022 という構成です。 検証には、 VMware Workstation Pro を利用しました。 VMware Workstation Pro が無償になってくれてありがたいですね。
ポイント
- /25 にすると 128 - 4 = 124 IP
- /24 にすると 256 - 4 = 252 IP
- HelmChartConfig (rke2-calico) を編集するのが正規の方法
手順
以下の手順で対応できます。
- HelmChartConfig を編集する
- 既存ブロックの対応
以下は詳細な手順です。
HelmChartConfig を編集する
以下の HelmChartConfig は、作成したクラスタの More Resources の Helm にあります。


この設定を以下の設定に変更します。
spec:
failurePolicy: reinstall
valuesContent: |-
global:
cattle:
clusterId: c-m-2xbcc2vw
installation:
calicoNetwork:
ipPools:
- cidr: 10.42.0.0/16
encapsulation: VXLAN
natOutgoing: Enabled
nodeSelector: all()
blockSize: 25 # ★ここを25や24に設定
RKE2 では Calico が Helm チャートとして組み込まれており、
HelmChartConfig (rke2-calico) に設定を書けば、デフォルト値を上書きできます。
つまり「自分で設定を書かない限り、勝手に変な変更が起きることはない」ので安心して使えます。
以下は、今回設定した項目に関する詳細です。
| キー | RKE2 デフォルト値 | 今回の変更 |
|---|---|---|
calicoNetwork.ipPools[0].cidr |
10.42.0.0/16 |
変更なし |
calicoNetwork.ipPools[0].encapsulation |
VXLAN |
変更なし |
calicoNetwork.ipPools[0].natOutgoing |
Enabled |
変更なし |
calicoNetwork.ipPools[0].blockSize |
/26(=64 IP, Windows では実効 60 IP) |
/24 に拡張(=252 IP 利用可能) |
詳細を知りたい方は、Calico Installation API リファレンス や RKE2 Networking (公式ドキュメント) をご参照ください。
既存ブロックの対応
公式が推奨している方法がありますが、今回は新規でクラスタを作成したので、以下に示す方法2 で対応することにしました。
- 方法1: 一時的に別の IPPool を作って Pod を移行し、旧 Pool を削除する(Calico 公式推奨)。
方法2: 今回は簡易的に以下で対応。

結果
- /24 に変更したことで、1ノードあたり実効 252 IP が利用可能に。
- Pod を 61 個以上起動しても IP 枯渇せずに動作。

まとめ
- RKE2 の Windows ノードはデフォルトだと 60 Pod で IP が尽きる。
- HelmChartConfig (
rke2-calico) でblockSizeを拡張することで解決できる。