Upgrade to Pro — share decks privately, control downloads, hide ads and more …

vclusterでお手軽Kubernetesマルチテナント

Kazuto Kusama
June 03, 2021
1.1k

 vclusterでお手軽Kubernetesマルチテナント

VMware DevOps Meetupで発表した資料です。

これまでKubernetesでマルチテナントを実現するには、1つのクラスタ内でSoft Multi-tenantをするか、複数のクラスタを立ち上げるHard Multi-tenantの2択がありました。

しかし最近、クラスタの中にさらに仮想的なクラスタを立ち上げる方法も生まれています。今回はそんな仮想kubernetesクラスタの選択肢のひとつであるvclusterを紹介します。

Kazuto Kusama

June 03, 2021
Tweet

More Decks by Kazuto Kusama

Transcript

  1. Soft Multi-tenancyのつらいところ • 管理者による適切な管理が必要 • Cluster-wideな Resourceの管理が難しい(CRD, Ingress controllerなど) •

    Helm chartでポンとアプリを入れるのすら難しい • 複数バージョンのCRDを扱うことができない • Noisy neighborを完全に排除できるわけではない
  2. Hard Multi-tenancyの辛いところ • オーバーヘッドがデカい ◦ クラスタ分だけリソースが必要 • 共通リソースのセットアップがめんどくさい ◦ 各環境にIngress

    controller入れないといけないとか • プロビジョニングにちょっと時間がかかる ◦ 10分とか15分とか。すごく困るわけではないけど、カンタンに作ったり 消したりは難しい
  3. Nested Hardware Hypervisor VM Hypervisor Nested VM Nested VM VMを活用している人たちがイメージする

    Nested環境ってこんな感じですよね。 VMの 中にさらにハイパーバイザを立ち上げ、 VMをネストさせる。
  4. Nested Hardware Hypervisor VM Hypervisor Nested VM Nested VM 便利だけど無視出来ない速度低下

    便利な一方無視出来ない速度低下があり、検証用途にしか使えないイメージじゃな いでしょうか
  5. vcluster vclusterのしくみ Host Kubernetes Vcluster Control plane vclusterを立ち上げると、ホスト側の Kubernetesにk3sという軽量k8s ディストリビューションの

    Control PlaneがPodとして立ち上がります。 k3sによって、もう一つの Kubernetesが生まれたわけで、上の箱にそ れを表現しています
  6. vclusterのしくみ Host Kubernetes Vcluster Control plane vcluster Namespace 1 Namespace

    2 Pod svc Pod svc では、上の箱(仮想k8sクラスタ)にkubectlでPodを立ち上げます。仮想 k8sクラスタ側では当然、対象の NamespaceにPodやServiceが作ら れたように見えます。
  7. vclusterのしくみ Host Kubernetes Vcluster Control plane vcluster syncer Namespace 1

    Namespace 2 Pod svc Pod svc Pod svc Pod svc しかし、ここでsyncerというコンポーネントが動きます。 syncerはPodや Serviceの作成を検知すると、仮想 k8sではなくホストKubernetesのほ うにPod, Serviceを作成します。 実体はホスト側に出来るわけです。
  8. vclusterのしくみ Host Kubernetes Vcluster Control plane vcluster syncer Namespace 1

    Namespace 2 Pod svc Pod svc Pod svc Pod svc 実体がホスト側にあるが故に、仕組みとしては通常の k8sと同じであ り、性能低下は起きないというわけです。 Pod間ネットワークも、ホスト側のものをそのまま使います。