Vcluster を使用して Kubernetes でマルチテナントを実装する方法

Vcluster を使用して Kubernetes でマルチテナントを実装する方法

翻訳者 |李睿

レビュー |チョンロウ

Kubernetes は、組織がコンテナ化されたアプリケーションを展開および管理する方法に革命をもたらし、クラスター間でのアプリケーションのオーケストレーションとスケーリングを容易にしました。ただし、共有 Kubernetes クラスター上で複数の異種ワークロードを実行すると、リソースの競合、セキュリティ リスク、カスタマイズの欠如、管理の複雑さなどの課題が生じます。

Kubernetes で分離とマルチテナントを実現するには、いくつかの方法があります。

  • Kubernetes 名前空間: 名前空間は、クラスター リソースを異なるユーザー間で分割することにより、分離レベルを提供します。ただし、名前空間は同じ物理インフラストラクチャとカーネル リソースを共有します。したがって、分離とカスタマイズは制限されます。
  • Kubernetes ディストリビューション: Red Hat OpenShift や Rancher などの一般的な Kubernetes ディストリビューションは Vcluster をサポートしています。名前空間、RBAC、ネットワーク ポリシーなどのネイティブ Kubernetes 機能をより効果的に活用します。その他の利点としては、集中管理プラットフォーム、事前構成されたクラスター テンプレート、使いやすい管理などが挙げられます。
  • 階層型名前空間: 従来の Kubernetes クラスターでは、各名前空間は独立しています。つまり、ある名前空間のユーザーとアプリケーションは、明示的な権限がない限り、別の名前空間のリソースにアクセスできません。階層型名前空間は、名前空間間で親子関係を定義できるようにすることでこの問題を解決します。つまり、親名前空間で権限を持つユーザーまたはアプリケーションは、すべての子名前空間でも自動的に権限を持つことになります。これにより、複数の名前空間にわたる権限の管理がはるかに簡単になります。
  • Vcluster プロジェクト: Vcluster プロジェクトは、物理的な Kubernetes クラスターを複数の独立したソフトウェア定義クラスターに分割することで、これらの問題点に対処します。 Vcluster を使用すると、組織は開発チーム、アプリケーション、顧客に、保証されたリソース、セキュリティ ポリシー、カスタム構成を備えた専用の Kubernetes 環境を提供できます。この記事では、Vcluster、その機能、さまざまな実装オプション、ユースケース、課題について詳しく説明します。また、使用率を最大化し、Vcluster 管理を簡素化するためのベスト プラクティスについても検討します。

Vcluster とは何ですか?

Vcluster は、ユーザーが仮想 Kubernetes クラスターを作成および管理できるようにするオープンソース ツールです。仮想 Kubernetes クラスターは、別の Kubernetes クラスター上で実行される、完全に機能する Kubernetes クラスターです。 Vcluster は、基盤となる Kubernetes クラスターの名前空間に Vcluster を作成することで機能します。 Vcluster には独自のコントロール プレーンがありますが、基盤となるクラスターのワーカー ノードとネットワークを共有します。これにより、Vcluster はあらゆる Kubernetes クラスターに導入できる軽量ソリューションになります。

Vcluster を作成するときに、ユーザーは Vcluster に必要な作業ノードの数を指定できます。次に、Vcluster コマンドラインは Vcluster を作成し、ワーカーノード上でコントロール プレーン ポッドを起動します。その後、kubectl CLI を使用してワークロードを Vcluster にデプロイできます。

ユーザーは、Vcluster の Web サイトで Vcluster について詳しく知ることができます。

Vclusterを使用する利点

(1)資源の隔離

Vcluster を使用すると、ユーザーは中央クラスタのリソース (CPU、メモリ、ストレージなど) の一部を単一の Vcluster に割り当てることができます。これにより、複数のチームが同じ物理クラスターを共有する場合に発生する「騒々しい隣人」の問題を防止できます。重要なワークロードが中断されることなく必要なリソースを確実に受け取ることができます。

(2)アクセス制御

Vcluster を使用すると、アクセス ポリシーを Vcluster レベルで実装して、許可されたユーザーのみがアクセスできるようにすることができます。たとえば、金融アプリケーションなどの機密性の高いワークロードは、分離された Vcluster で実行できます。アクセスの制限は、名前空間レベルのポリシーよりもはるかに簡単です。

(3)カスタマイズ

Vcluster では、個々のチームのニーズに合わせて広範囲にカスタマイズでき、さまざまな Kubernetes バージョン、ネットワーク ポリシー、イングレス ルール、リソース クォータを使用してカスタマイズできます。開発者は他の開発者に影響を与えることなく、自分の Vcluster を変更できます。

(4)マルチテナント

多くの場合、組織は複数の社内チームまたは外部の顧客に Kubernetes アクセスを提供する必要があります。 Vcluster は、同じ物理クラスター内に独立した分離された環境を作成することで、マルチテナントの実装を容易にします。

(5)拡張が容易

動的なワークロードと拡張のニーズに対応するために、追加の Vcluster をすばやく起動またはシャットダウンできます。物理クラスター全体をスケールアウトすることなく、新しい開発環境とテスト環境を即座にプロビジョニングできます。

Vcluster 以前のワークロード分離方法

Vcluster がソリューションとして登場する以前から、組織はさまざまな Kubernetes ネイティブ機能を活用して、ワークロードの分離を実現していました。

  • 名前空間: 名前空間は、異なるチームまたはアプリケーション間でクラスター リソースを分離します。リソース割り当てとネットワーク ポリシーを通じて基本的な分離を提供します。ただし、ハイパーバイザー レベルの分離はありません。
  • ネットワーク ポリシー: きめ細かいネットワーク ポリシーにより、ポッドと名前空間間の通信が制限されます。これにより、ワークロード間でネットワークのセグメンテーションが作成されます。ただし、リソースの競合が依然として発生する可能性があります。
  • テイントと許容範囲: ノードにテイントを適用すると、指定されたポッドがノード上でスケジュールされなくなります。ポッドには汚染に一致する許容値が必要です。これにより、ポッドは特定のノードに制限されます。
  • クラウド仮想ネットワーク: パブリック クラウドでは、複数の仮想ネットワークを使用すると、Kubernetes クラスターのトラフィックを分離するのに役立ちます。ただし、クラスター内のポッドは引き続き通信できます。
  • サードパーティのネットワーク プラグイン: Calico、Weave、Cilium などの CNI プラグインは、オーバーレイ ネットワークときめ細かいネットワーク ポリシーを構築してトラフィックを分離できます。
  • カスタム コントローラー: カスタム Kubernetes コントローラーを開発すると、リソースをプログラムで分離できるようになります。しかし、これには多くのプログラミングの専門知識が必要です。

Vcluster デモ

(1)Vclusterコマンドラインをインストールする

必要とする:

  • kubectl (kubectl バージョンで確認)
  • helm v3 ( helmバージョンを確認)
  • Kubernetes クラスターにアクセスできる機能的な kube-context (kubectl クエリ名前空間経由)。

次のコマンドを使用して、arm64 ベースの Ubuntu マシン用の Vcluster CLI バイナリをダウンロードします。

 curl -L -o vcluster "https://github.com/loft-sh/vcluster/releases/latest/download/vcluster-linux-arm64" && sudo install -c -m 0755 cluste /usr/local/bin && rm -f vcluster bash

Vcluster CLI が正常にインストールされたことを確認するには、次の操作を実行してテストします。

 vcluster --version bash

他のサーバーにインストールする場合は、次のリンクを参照してください。 Vcluster コマンドラインをインストールします。

(2)Vclusterを導入する

Vcluster を作成するmy-first-Vcluster

 vcluster create my-first-vcluster bash

(3)Vclusterに接続する

Vcluster に接続するには、次のコマンドを入力します。

 vcluster connect my-first-vcluster bash

kubectl コマンドを使用して、接続された Vcluster 内の名前空間を取得します。

 kubectl get namespaces bash

アプリケーションをVclusterにデプロイする

ここで、 Vcluster にサンプルのNginxデプロイメントをデプロイします。デプロイメントを作成します。

 kubectl create namespace demo-nginx kubectl create deployment nginx-deployment -n demo-nginx --image=nginx bash

これにより、アプリケーションは Vcluster 内の名前空間 demo-nginx に分離されます。

このデモ デプロイメントによって Vcluster にポッドが作成されることを確認できます。

 kubectl get pods -n demo-nginx bash

ホスト クラスタの展開を確認す​​る

Vcluster でのデプロイメントを確認できたので、ホスト クラスターでのデプロイメントを確認してみましょう。

Vcluster から切断します。

 vcluster disconnect bash

これにより、kube-scenario がホスト クラスターに戻ります。次に、ホスト クラスターで利用可能なデプロイメントがあるかどうかを確認します。

 kubectl get deployments -n vcluster-my-first-vcluster bash

Vcluster-my-Vcluster 名前空間にリソースが見つかりませんでした。これは、デプロイメントが他のクラスターからアクセスできない Vcluster 内で分離されているためです。

次のコマンドを使用して、すべての名前空間でポッドが実行されているかどうかを確認します。

 kubectl get pods -n vcluster-my-first-vcluster bash

これで、 Vcluster 名前空間で実行されているNginxコンテナを確認できます

Vcluster のユースケース

Vcluster は、単一の物理クラスター内で分離されたカスタマイズ可能な Kubernetes 環境を提供することで、いくつかの重要なユースケースをサポートします。これらのいくつかを詳しく見てみましょう。

(1)開発・テスト環境

開発チームに専用の Vcluster を割り当てると、実稼働ワークロードや他の開発者に影響を与えることなく、開発チームが構成を完全に制御できるようになります。開発チームは、必要な Kubernetes バージョン、ネットワーク ポリシー、リソース クォータ、アクセス制御を使用して Vcluster をカスタマイズできます。開発チームは、Vcluster をすばやく起動およびシャットダウンして、さまざまな構成をテストできます。 Vcluster は保証されたコンピューティング リソースとストレージ リソースを提供するため、開発者は競合する必要がなく、他の Vcluster で実行されているアプリケーションのパフォーマンスに影響を与えることもありません。

(2)本番アプリケーションの分離

ERP、CRM、財務システムなどのエンタープライズ アプリケーションには、予測可能なパフォーマンス、高可用性、厳格なセキュリティが必要です。専用の Vcluster を使用すると、これらの本番ワークロードは他のアプリケーションの影響を受けずに済みます。ミッションクリティカルなアプリケーションには、リソースの競合を回避するために予約容量を割り当てることができます。カスタマイズされたネットワーク ポリシーにより分離が保証されます。クラスターでは、コンプライアンスのニーズを満たすために、きめ細かいロールベースのアクセス制御も可能になります。中断を避けるために大規模なクラスターを過剰にプロビジョニングする代わりに、Vcluster は低コストで保証されたリソースを提供します。

(3)マルチテナント

複数の事業部門を持つサービス プロバイダーや企業では、多くの場合、さまざまな社内チームや外部の顧客に Kubernetes アクセスを安全に提供する必要があります。 Vcluster は、テナントごとに個別のセルフサービス環境を作成し、適切なリソース制限とアクセス ポリシーを適用することで、マルチテナントを簡素化します。プロバイダーは、追加の Vcluster を採用することで、新しい顧客に簡単にサービスを提供できます。これにより、「ノイジーネイバー」問題が解消され、ピーク需要ではなく実際の使用状況に基づいて Vcluster をパックすることで高密度のワークロードが可能になります。

(4)コンプライアンス

金融や医療などの規制の厳しい業界では、データのプライバシー、位置情報、アクセス制御に関して厳格なセキュリティとコンプライアンスの要件が課せられます。内部ネットワークのセグメンテーション、ロールベースのアクセス制御、リソースの分離を備えた専用の Vcluster を使用すると、互換性のあるワークロードを同じクラスター内の他のアプリケーションと一緒に安全にホストすることが容易になります。

(5)臨時資源

Vcluster を使用すると、一時的な Kubernetes 環境を即座に立ち上げて、次のユースケースを処理できます。

  • クラスターのアップグレードをテストする: ダウンタイムや本番環境への影響なしに、新しい Kubernetes バージョンを下位環境にデプロイできます。
  • 新しいアプリケーションの評価: 競合を防ぐために、アプリケーションを共有開発クラスターではなく使い捨ての Vcluster にデプロイできます。
  • 容量の急増: 新しい Vcluster は、クラスター全体を過剰にプロビジョニングするのではなく、トラフィックの急増に対応するバースト容量を提供します。
  • 特別イベント: セミナー、会議、その他のイベント用に Vcluster を一時的に作成できます。

これらの Vcluster は、必要がなくなったら、クラスターに永続的な痕跡を残さずに簡単に削除できます。

(6)ワークロードの統合

組織が Kubernetes のフットプリントを拡大するにつれて、既存のアプリケーションを中断することなく、複数のクラスターを共有インフラストラクチャに統合する必要が生じます。アプリケーションを Vcluster に移行すると、論理的な分離とカスタマイズが可能になり、他のワークロードと並行してシームレスに実行できるようになります。これにより、使用率が向上し、運用オーバーヘッドが削減されます。 Vcluster を使用すると、企業の IT 部門は分離を維持しながら、組織全体で一貫した Kubernetes プラットフォームを提供できます。要約すると、Vcluster は、ワークロードの分離、カスタマイズ、セキュリティ、密度を通じて Kubernetes 環境を最適化するための重要なツールです。ユースケースでは、開発者から運用部門、ビジネス部門に至るまで、組織内のさまざまなニーズにどのように役立つかが強調されます。

Vcluster の使用上の課題

これには大きなメリットがありますが、考慮すべき欠点もいくつかあります。

(1)複雑さ

複数の Vcluster (たとえ小規模なものであっても) を管理すると、単一の大規模な Kubernetes クラスターを管理する場合よりも運用上のオーバーヘッドが大きくなります。その他のタスクは次のとおりです:

  • 複数の制御プラットフォームを提供および構成します。
  • Vcluster 全体でセキュリティ ポリシーとアクセス制御を一貫して適用します。
  • Vcluster 間の監視とログ記録。
  • 各 Vcluster の指定されたリソースと容量を維持します。

たとえば、クラスタ管理者は、単一のクラスタではなく、20 個の Vcluster で RBAC ポリシーを構成および更新する必要があります。これには、単一のクラスターを集中管理するよりも多くの労力が必要です。 Kubernetes 上の静的 IP アドレスとポートにより、競合やエラーが発生する可能性があります。

(2)資源の配分と管理

Vcluster のリソース消費とパフォーマンスのバランスを取ることは、ニーズや期待が異なる場合があるため、難しい場合があります。

たとえば、Vcluster はワークロードに基づいてスケールアップまたはスケールダウンしたり、他の Vcluster または名前空間とリソースを共有したりする必要がある場合があります。アプリケーションのピーク需要に合わせてサイズ設定された Vcluster では、オフピーク期間中に未使用の容量が余剰になる可能性があり、その容量はアイドル状態となり、他の Vcluster では利用できなくなります。

(3)カスタマイズの制限

Vcluster をカスタマイズできるかどうかは実装によって異なります。名前空間は柔軟性が最も低く、クラスター API は柔軟性が最も高くなります。 OpenShift のようなツールは、カスタマイズとシンプルさのバランスをとっています。たとえば、名前空間では異なる Kubernetes バージョンやネットワーク プラグインを実行することはできません。 Cluster API では完全なカスタマイズが可能ですが、より複雑になります。

結論は

Vcluster を使用すると、Kubernetes ユーザーは共有物理クラスター内でワークロードをカスタマイズ、分離、拡張できます。 Vcluster は、専用のコントロール プレーン リソースとアクセス ポリシーを割り当てることで、強力な技術的分離を実現します。マルチテナントなどのユースケースでは、Vcluster はよりシンプルで安全な Kubernetes 管理を提供します。

Vcluster は Kubernetes のコストオーバーヘッドを削減するためにも使用でき、一時的な環境で使用することもできます。 OpenShift、Rancher、Kubernetes Cluster API などのツールを使用すると、Vcluster の導入と管理が容易になります。採用が拡大するにつれて、Vcluster 分野でさらなる革新が起こり、運用がさらに効率化され、利用率が最大化されることが期待されます。 Vcluster にはいくつかの欠点がありますが、多くの組織にとって、追加された複雑さを明らかに上回るメリットがあります。

原題: Vcluster を使用した Kubernetes でのマルチテナント、著者: Pavan Shiraguppi

<<:  エッジコンピューティング向け統合スケジューリングソリューションの検討

>>:  IoTとエッジの関係

推薦する

爽やかなページを作るための優れたウェブサイトのビジュアルデザインの6つのポイント

月収10万元の起業の夢を実現するミニプログラム起業支援プランすべてのウェブサイトには魅力があり、それ...

ユーザーが関心を持つブログトピックを作成しますか?たった3ステップ!

この記事を読んでいるあなたは、次のような状況に陥っているかもしれません。Web サイトを更新する必要...

スケーリングが12倍高速化されました! AWS Lambda 関数が大幅に改善されました!

編纂者:Xing Xuan制作 | 51CTO テクノロジースタック (WeChat ID: blo...

6 つの主要なインターネット収益モデルの完全な分析 (ケース スタディ付き)

最近では、インターネット企業が数百億、あるいは数千億の価値があると評されるニュースをよく目にし、イン...

天一インターネット: 香港 VPS フリー、1G メモリ/2 コア/30g ハードディスク/3M 帯域幅

Tianyi Interconnect は主に中国 (中国本土、香港、台湾を含む)、韓国、日本、フィ...

任志強、劉強東を指名:性的暴行事件は会社の社会的イメージに影響を与える

月給5,000~50,000のこれらのプロジェクトはあなたの将来ですA5 Startup Netwo...

2018 年のクラウド障害トップ 10: あなたもその 1 人ですか?

今年最大のクラウド障害は、市場の 3 大プレーヤーである AWS、Microsoft Azure、G...

コミュニティ3.0、O2Oへの扉を開く黄金の鍵

O2Oについては2、3年前から話題になっていますが、O2Oが人気になってから1年以上経ちます。 O2...

SEOは本来のプロモーション方法に戻るべき

検索エンジンの役割がウェブマスターに徐々に知られるようになったからです。ウェブマスターは、純粋なオン...

データ分析でチャンネル不正行為を効果的に特定する4つの指標!

周知のとおり、あらゆるインターネット製品のユーザー増加は、効果的なプロモーションと切り離せません。現...

クラウドネイティブ時代のエンタープライズマルチアクティブ災害復旧システムを構築するためのアイデアとベストプラクティス

[[409884]]クラウド ネイティブの概念を解釈するときに、マイクロサービスやコンテナについてよ...

Baiduの推奨の重要性を無視しないでください

月収10万元の起業の夢を実現するミニプログラム起業支援プランBaidu 関連の検索用語と Baidu...

小さなウェブサイトマガジンがいかに大きな成果をもたらすかについての簡単な講演

このような記事をシェアしたいと思ったとき、私はいつもとても葛藤します。なぜなら、インターネットがます...

Baidu スナップショットの変更によるウェブサイトの重量変更の詳細な説明

最近、多くの人がこのような状況に遭遇したと思います。サイトドメインのホームページのスナップショットは...