NodePortLocal を使用時に LoadBalancer 経由 (Ingress) でPodにアクセスできません
search cancel

NodePortLocal を使用時に LoadBalancer 経由 (Ingress) でPodにアクセスできません

book

Article ID: 437181

calendar_today

Updated On:

Products

VMware NSX VMware Tanzu Kubernetes Grid VMware vSphere Kubernetes Service VMware Avi Load Balancer

Issue/Introduction

免責事項: これは英文の記事「Antrea cluster application not accessible when using NodePortLocal」の日本語訳です。記事はベストエフォートで翻訳を進めているため、ローカライズ化コンテンツは最新情報ではない可能性があります。最新情報は英語版の記事で参照してください。

以下の条件下において、K8S Ingress にアクセスできなくなり、"Secure Connection failed" というエラーが出力されました。

1. Antrea CNI が使用されています。
2. NodePortLocal (NPL) Antrea 上で有効化されています。
3. 外部ロードバランサ(NSXやALBなど)は、Antrea エージェントによって公開された NPL ポートマッピングを利用します。

例としてAvi Web UI (Applications > Pools > Servers) 上で、対象プールは正常(緑色)と異常(赤色/オレンジ色)のPodが混在するヘルスステータスを示しています。

対象 Pod が稼働する Worker Node 上の antrea-agent pod のログには Pod の IP アドレスが見つからないというログが出力されます。

# kubectl -n kube-system logs antrea-agent-xxxxxx
I0408 hh:mm:ss.988650       1 npl_controller.go:405] IP address not set for Pod: <NAMESPACE>/<POD_NAME>

対象 Pod が稼働する Worker Node の iptables の出力には Pod のIPアドレスが消失した DNAT ルールエントリが存在します。

# iptables -t nat -S ANTREA-NODE-PORT-LOCAL
-A ANTREA-NODE-PORT-LOCAL -p tcp -m tcp --dport <port> -j DNAT --to-destination <MISSING POD IP>:<port>

Environment

  • vSphere Kubernetes Service
  • Antrea CNI (NodePortLocal)

Cause

Antrea Agent の起動後、NodePortLocal(NPL) ルールが Pod の IP アドレスを検出できなかったため、Worker Node でトラフィックがドロップされます。

Resolution

この問題はVKR 1.33.6/1.32.10で修正され、VKR 1.31.14にもバックポートされました。

回避策としては、以下のいずれかが考えられます。

  • antrea-agent ポッドを再起動します
  • 対象 Pod (endpoint) を再作成する

Additional Information

VKR 1.35では、NodePortLocal(NPL) FeatureGateが一般提供(GA)に移行し、ユーザーには公開されなくなったためご注意ください。

https://knowledge.broadcom.com/external/article/432754