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とエッジの関係

推薦する

プロメテウス VPS 1 つ買うと 1 つ無料

prometeus は、イタリアの VPS に重点を置いた LEB で第 1 位です。その特徴は、非...

ipage - 無制限の米国ホスティングが 25% オフ / ドメイン名無料 / 3 年間 71 ドル

下のリンクから購入し、割引コードを入力して購入ページに入ります。1年間の購入で42ドル、3年間の購入...

医療業界に代表される関連業界向けの検索エンジン最適化

医療広告は長い間、グレーな業界であった。近年、オンラインで医療を求める人が増えています。調査によると...

AWS が Amazon GuardDuty を発表

[51CTO.com からのオリジナル記事] 本日の AWS re:Invent カンファレンスで、...

バラと棘:インターネットマーケティングは美しく見える

最近、Mu Niu Liu Ma は Hao Young を再開しました。今日は、クライアントの C...

Xuan Jing Zhou Xing が「クラウド ネイティブでの IAST 実装の実践」について説明します。

クラウドネイティブテクノロジーは近年注目されており、ビジネスの革新と発展の重要な原動力となっています...

Database as a Service (DBaaS) を使用する必要がありますか?

クラウド コンピューティングの急速な発展に伴い、トップレベルのフレームワークから始めて、全体的なデー...

Red Hat と NVIDIA が共同でオープンソース ソリューションを開発し、新たなワークロードの処理を向上

オープンソースソリューションのリーディングプロバイダーであるRed Hat, Inc. (NYSE:...

メイパイと他の自撮りコミュニティの秘密の戦い:2つの自撮りコミュニティは正反対の方向へ

新浪テクノロジー 孟宏これは偶然の物語です。 2月19日、百度美牌はiOSプラットフォームで初の正式...

Virpus 7周年記念 XEN 特別オファーでユーザーに還元

Virpus はすでに 7 周年を迎えました。誕生日を機に、皆様への恩返しとして、XEN VPS の...

最新のクラウド コンピューティング セキュリティのベスト プラクティスを適用する方法

今日でも、多くの企業は、ビジネスを移行する際にデータが危険にさらされる可能性があるため、クラウド コ...

ニーズに合ったクラウドホストの選び方

他のビジネス システムの購入と同様に、組織はマーケティングの売り込みやセールストークを超えて、ニーズ...

百度の2大事業グループ設立の背景:モバイルレイアウトが加速する

中国新聞社、6月9日。百度は6月7日午後、従業員にメールを送り、組織体制の調整を発表した。当日から「...

InceptionHosting の lowendspirit 3 ユーロ/年 VPS

InceptionHosting は、非常に信頼性の高い品質を備えた VPS プロバイダーです。その...