Antrea-agentが"Spec.PodCIDR is empty"というエラーで再起動を繰り返す
search cancel

Antrea-agentが"Spec.PodCIDR is empty"というエラーで再起動を繰り返す

book

Article ID: 426170

calendar_today

Updated On:

Products

VMware vSphere Kubernetes Service

Issue/Introduction

免責事項:これは英文の記事「Antrea-agent restarting continuously with error "Spec.PodCIDR is empty"」の日本語訳です。記事はベストエフォートで翻訳を進めているため、ローカライズ化コンテンツは最新情報ではない可能性があります。最新情報は英語版の記事で参照してください。

ゲストクラスター内のAntrea-agentポッドが繰り返しCrashLoopBackOff状態になる

# kubectl get pod -A | grep antrea

kube-system                    antrea-agent-8jxtr                                        1/2     CrashLoopBackOff    5 (107s ago)   7m28s
kube-system                    antrea-agent-nrpc8                                        1/2     CrashLoopBackOff    5 (68s ago)    6m51s
kube-system                    antrea-agent-ns9w8                                        2/2     Running             0              160m
kube-system                    antrea-controller-977ddfd7-x6nfb                          1/1     Running             0              160m
vmware-system-antrea           antrea-pre-upgrade-job-g5ssq                              0/1     Completed           0              160m

Antrea-agentポッドのログに以下のようなエラーが記録される

# kubectl logs -n kube-system antrea-agent-8jxtr

E0116 07:50:52.897559       1 agent.go:911] "Spec.PodCIDR is empty for Node. Please make sure --allocate-node-cidrs is enabled for kube-controller-manager and --cluster-cidr specifies a sufficient CIDR range, or nodeIPAM is enabled for antrea-controller" err="context deadline exceeded" nodeName="xxxxxxxxxx"
F0116 07:50:52.897944       1 main.go:54] Error running agent: error initializing agent: Spec.PodCIDR is empty for Node xxxxxxxxxx

Environment

vSphere with Tanzu

Cause

"Spec.PodCIDR is empty"エラーは、Kubernetesのkube-controller-managerが新しいノードに対して割り当てるためのサブネットを使い果たすことで発生します。

このケースでは、クラスタをポッド用に172.X.X.0/24の範囲のCIDRブロックを割り当てるように構成していました。
このCIDRブロックの範囲では、クラスタ中に1ノードしかサポートできません。
最初のコントロールプレーンノードが、唯一使用できる/24のブロックを消費します。そのため、他のノードに利用できるCIDRがなくなります。

Resolution

既存のクラスターのポッドのCIDR範囲は変更できません。より大きな範囲、あるいは異なるサブネットマスクの設定でデプロイしなおす必要があります。/16のサブネットのCIDRの使用が推奨されます。

vSphere KubernetesゲストクラスタにおけるサービスやポッドのCIDR範囲の変更について、詳細は以下のKBを参照してください。

Changing Service and Pod CIDR Ranges in vSphere Kubernetes Guest Cluster