Kubernetes 出力静的 IP。最もエレガントで実用的なソリューションでしょうか?

Kubernetes 出力静的 IP。最もエレガントで実用的なソリューションでしょうか?

最も最適かつエレガントな方法でこの問題を解決した方法を教えていただけますか? いくつかのデプロイメントを備えた Kubernetes クラスターがあり、一部のクライアントは、アプリケーションがリクエストを実行できるように、IP をホワイトリストに追加する必要があります。 クラスターのスケーラビリティにより、クライアントにホワイトリスト登録するために新しいノードから新しい IP を提供するか、同じノードにアプリケーションをデプロイする必要があります。

このソリューションは最適ではないため、IP を固定する必要があります。IP を静的にするか、1 つのゲートウェイを介して送信されるようにします。

Kubernetes のインストールは、ネットワーク プロバイダー Flannel では標準です。このプロバイダーにはそのような機能はありません。

  1. このような特徴を持つものとしては、例えば三毛猫が挙げられます。https://projectcalico.docs.tigera.io/networking/use-specific-ip
  2. 次のようなプロジェクトも見つけました:https://github.com/nirmata/kube-static-egress-ip- 誰か使ったことある人いますか?

あなたの提案は何ですか?

参考になれば幸いですが、弊社のホスティングは Hetzner です。

ありがとう!

答え1

最もエレガントな解決策はおそらくAntreaだろうhttps://antrea.io/docs/v1.3.0/docs/egress/CNI は、たとえば VMWare Tanzu などで使用されます。Antrea を使用すると、EgressIPPool を定義でき、CNI は Kubernetes ノード間の HA 機能を提供するプールを自動的に管理します。静的な送信アドレスを使用する必要があるポッドにラベルを設定すれば完了です。

Calico にも同様の機能がありますが、Egress Gateway は有料オプションなので、IPPool の使用と、K8s ノードへの IP ブロックの割り当て、特定のポッドにラベルを付けてそれらの IP を使用するように制限されています。ご想像のとおり、大規模なクラスター環境では、これらの IP プールがすぐに不足する可能性があります。また、L2 ルーティングの問題 (同じ VLAN 内のアドレスからポッドに到達できない) もありましたが、これはおそらく私の構成の誤りです。

また、Cillium をインストールしようとしましたが、これは非常に高度で効率的ですが、Egress Gateway ではノード上の単一の IP のみがサポートされ (ノードのインターフェイスで手動で構成する必要があります)、HA 機能はありません。

CNI移行が不可能な場合は、最後の手段

関連情報