BT

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

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース oneinfra : 複数のKubernetesクラスタ・アズ・ア・サービスを管理するプラットフォーム

oneinfra : 複数のKubernetesクラスタ・アズ・ア・サービスを管理するプラットフォーム

原文(投稿日:2020/04/19)へのリンク

oneinfraは、さまざまなパブリッククラウドやプライベートクラウド、ベアメタルにわたって、複数のKubernetesクラスタの実行と管理を行うオープンソースプロジェクトである。

oneinfraのインストレーションにおいて中核となるのは"ハイパーバイザ(hypervisors)"、クラスタ抽象化、そしてコンポーネントだ。ハイパーバイザマシンでは、Container Runtime Interface(CRI)の実装を実行する必要がある。クラスタ抽象化は、コントロールプレーンとイングレス(ingress)を含むKubernetesクラスタを表現する。その他のコンポーネント — コントロールプレーンやコントロールプレーンイングレスに属するもの — は、これらの上で動作する。コントロールプレーンのコンポーネントにはKubernetesの典型的なマスターノードの構成部品であるetcdやAPIサーバ、スケジューラなどが、イングレスコンポーネントにはhaproxyやVPNエンドポイントなどが、それぞれ含まれている。oneinfraでは、異なるバージョンの異なるクラスタを宣言的に生成したり、バージョンの異なるKubernetesを同時に使用したりすることが可能である。GKEあるいはEKSのオープンソース版に近い

InfoQでは、このプロジェクトについてより詳しく知るために、oneinfraの作者でソフトウェアアーキテクトのRafael Fernández López氏に連絡を取った。

López氏によると、oneinfraが補ったおもな不足点は、"セットアップの極めてシンプルなシステムを提供することです。それが実現すれば、分離されたKubernetesのコントロールプレーンを、専用のインフラストラクチャを用意しなくても自由に生成したり、あるいは破棄したりできるようになります。"oneinfraでは、ベアメタルを含むさまざまなクラウドプロバイダの提供する基盤インフラストラクチャやマシンを使って、コントロールプレーンインスタンスを生成することが可能である。López氏はこれに関して、いくつかのベストプラクティスを紹介している。

コントロールプレーンインスタンスの生成は、さまざまなクラウドプロバイダを使って行うことができます。しかしながら、ひとつのコントロールプレーンを異なるパブリッククラウドやサービスプロバイダに分割しようとすると、運用上の問題が発生します。そのため、コントロールプレーンのすべてのコンポーネントを同じサービスプロバイダに配置することを推奨します。ただし、サービスプロバイダ毎にコントロールプレーンを生成してはいけないという理由は何もありません。

 


画像提供 — https://github.com/oneinfra/oneinfra (許可を得て使用)

oneinfraで言うハイパーバイザとは、"oneinfraがコントロールプレーンコンポーネントを生成する物理的ないし仮想マシン"の意味である。oneinfraのハイパーバイザノードでは、Container Runtime Interface(CRI)実装を動作させなければならない。ハイパーバイザは"public"にしてイングレスコンポーネントを実行することも、"private"にしてコントロールプレーンコンポーネントを実行することも可能だ。ハイパーバイザ上のCRI実装には、oneinfraに接続するためのサービスラッパが必要だ。このプロセスは今後のバージョンで簡略化される予定だ、とLópez氏は説明している。

新たにハイパーバイザを生成する方法を簡略化するロードマップに含まれています -- 既存の"oi node join"コマンドと同じように、"oi hypervisor join"のようなコマンドを追加する予定です。前者が管理下のクラスタへのノードの追加を指示するのに対して、後者は管理クラスタに対してハイパーバイザとして追加することを指示します。

システムには"調停(reconciler)モジュールがある。これは多くのことを行うコントローラのセットだ。ハイパーバイザ上のコントロールプレーンコンポーネントをスケジュールして、定義されているが存在しないものがあれば生成する。ユーザが削除したコントロールプレーンコンポーネントの停止も行う。さらに、ワーカノードのマネージドクラスタへの追加要求を処理し、RBACルールが正しくセットアップされていることを保証する。

現在のアーキテクチャでは、コントロールプレーンの各インスタンスは分離されている。そのため、etcdなどのKubernetesマスタノードソフトウェアを共有したり、あるいは別のパーシステンス層に置き換えることはできない。ひとつのハイパーバイザにフィットするコントロールプレーンの数を調べるベンチマークのような、パフォーマンス関連の作業も行う必要がある、とLópez氏は述べている。将来的な改善としては、ワーカノードを異種ネットワーク上で動作可能にすることも考えられている。

oneinfraのソースコードはGitHub上で公開されている。

 

この記事に星をつける

おすすめ度
スタイル

特集コンテンツ一覧

BT