BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース ベアメタルKubernetesロードバランサのPorterがCNCF Landscpeの一部に

ベアメタルKubernetesロードバランサのPorterがCNCF Landscpeの一部に

原文(投稿日:2020/07/26)へのリンク

CNCFは、ベアメタルKubernetesクラスタ用のロードバランサであるPorterを、自らのLandscape受け入れた。PorterはセルフホストのKubernetesクラスタ内で、トラフィックのロードバランスにBGPとECMPを使用する。

外部のクライアントにKubernetesサービスを公開するには、"LoadBalancer"サービス形式とIngressという、2つの標準的な方法がある。GCPやAWSなどクラウドベンダのプラットフォーム上でKubernetesを展開する場合、このメカニズムはベンダのロードバランサ実装によって決まるのだが、ベアメタルKubernetesデプロイメントでは、この機能を提供するロードバランサの実装が必要になる。Porterは、BGPを使用した動的な経路制御、IPアドレス管理、トラフィックのロードバランシングにより、LoadBalancerサービスタイプの実装を提供するもので、KubeSphereスイートの一部である。

InfoQは今回、QingCloudのインフォメーション開発者であるFeynman Zhou氏とコンタクトを取り、Porterについて詳しく聞くことができた。

PorterはECMP(Equal Cost Multi Path)ルーティングストラテジとBGP(Border Gateway Protocol)を併用して、単一のデスティネーションに対して複数の最適パスを発生させることができる。このマルチパスを使用することで、ルーティングテーブルに複数のBGPパスをインストール可能になり、複数のリンクに対する負荷分散が実現するのだ。BGPサーバはStatefulSetとして動作し、各ノード上にはDaemonSetとしてエージェントが動作する。BGPコンフィギュレーションはConfigMap内に配置される。LBコントローラとエージェントコンポーネントは、クラスタ内の物理スイッチに対して設定されたBGPルートの同期を行う。その他のコンポーネント — EIPサービス — は、サービスのEIPを動的に更新する。


画像提供: https://github.com/kubesphere/porter/

Porterでは、BGP実装としてGoBGPプロジェクトを使用している。Zhou氏が詳しく説明してくれた。

Porterでは、ライブラリとして使用しています。将来的にはこの方法を変更して、デーモンの動的コンフィギュレーションを採用する予定です。そうすることで、BGPに準拠さえしていれば、さまざまなBGPプロジェクトをサポートできるようになります。

同じような目的のプロジェクトであるMetalLBも、BGPベースのロードバランシングをサポートしている。どちらのプロジェクトも、ターゲットとするのはベアメタルKubernetesクラスタだ。ただしMetalLBには、動作上必要な下位ネットワークレイヤへのアクセスを提供するクラウドプラットフォーム上で動作する、という違いがある。Zhou氏は、セルフマネージドなOpenStackクラウド上で、"将来的にはNeutron BGPをサポートしたルートのパブリッシュを、Porterで可能にしたいと思っています"、と述べた上で、OpenStackでは公式のロードバランサプラグインの使用も可能にしたい、と付け加えた。

今のところ、PorterがサポートするのはIPv4である。"将来的にはIPv6をサポートしたいと思っています。現時点でサポートしていないのは、多くのユーザがまだIPv4を使っていて、差し迫ったニーズがないからです"、とZhou氏は説明している。

Porterの監視とメトリクスに関する質問に対しては、次のように回答した。

現時点でのPorterのメトリクスは、残りのIPアドレスなど、EIPの関連するものが主体で、EIPステータスを通じてチェックすることができます。加えて、Prometheusと互換性のある方法で、もっと多くのメトリクスを公開可能にする計画を持っています。監視対象にするメトリクスには、使用中のIPアドレス、IPアドレス合計、要求/応答/転送などARP/NDP関連のメトリクスが含まれます。Porterコンポーネントの動作状態を示すメトリクスも追加する予定です。同時に、これらのメトリクスをベースとした警告ルールを(AlertManager内に)リリースします。この方法で、警告に関連する監視機能のアドバンテージを改善することが可能になります。

Porterは提供中のHelmチャートを使ってインストールすることができる。ソースコードはGitHubで入手可能だ。

この記事に星をつける

おすすめ度
スタイル

特集コンテンツ一覧

BT