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

コンテナと仮想マシン、敵か味方か!? 〜最適な Kubernetes プラットフォームとは〜

コンテナと仮想マシン、敵か味方か!? 〜最適な Kubernetes プラットフォームとは〜

CloudNative Days Fukuoka 2019での講演資料です。

マイクロサービスに基づくモダンなアプリケーションを実現するための手段としてコンテナが多く使われるようになってきていますが、今後、全てのアプリケーションはコンテナ化されていくのでしょうか? また、コンテナを管理するためのオーケストレーションツールとしてKubernetesが多くの支持を集めていますが、Kubernetesを実行するプラットフォームはベアメタルを採用すべきなのか、それともハイパーバイザーを使った仮想環境を使うべきなのでしょうか? 本セッションではベストプラクティスを紹介しながら、これらの点について解説を行います。

More Decks by Motonori Shindo / 進藤資訓

Other Decks in Technology

Transcript

  1. ©2019 VMware, Inc. 2 コンピュートの抽象化の流れ コンテナ 仮想マシン ベアメタル ファンクション <Fn>

    <Fn> <Fn> <Fn> <Fn> <Fn> 抽 象 化 の 粒 度 インフラからの独⽴度 IaaS FaaS CaaS Hosting
  2. ©2019 VMware, Inc. 3 物理 vs 仮想マシン vs コンテナ Hardware

    Host OS (Hypervisor) Guest OS Hardware Host OS (Linux) App Container Engine App App Guest OS Guest OS App App App 仮想マシン コンテナ ハードウェア を抽象化 OSを 抽象化 Lib Lib Lib Lib Lib Lib Hardware OS App App App 物理(仮想化なし) Lib
  3. ©2019 VMware, Inc. 9 コンテナでアプリケーション依存性を解決 アプリケーション オペレーティング システム ハードウェア コンテナ

    コンテナはオペレーティング システムを仮想化し、 オペレーティングシステムに インストールしなければ いけない依存部分を削減 仮想マシン
  4. ©2019 VMware, Inc. 10 仮想マシンとコンテナは別の⽬的を持った別のテクノロジー ハードウェアから OS を抽象化 OS から

    アプリケーションを抽象化 ⼀つの OS の上で複数のアプリケーションを 動かすことが可能になった ⼀つのハードウェアで複数のOSを 動かすことが可能になった アプリケーション オペレーティング システム ハードウェア コンテナ vSphere 仮想マシン Docker
  5. ©2019 VMware, Inc. 14 A 社の IT チームはインフラ、Linux/ミドル、開発チームでタテ割りになった組織(サイロ) 社内のシステムの約9 割は

    vSphere で仮想化されている デジタル変⾰(DX)を推進し、より顧客とフィードバックにフォーカスすることになった • アジャイルな開発が求められる それを実現するための技術としてコンテナと Kubernetes を採⽤することを決定︕ よくある話︓とある A 社での出来事
  6. ©2019 VMware, Inc. 15 A 社の Linux チームが Kubernetes をベアメタル上で使う⽅針を決定

    Linux チームの主張︓ • クラウドネイティブなアプリケーションは HA や vMotion などの vSphere の機能はいらない • コンテナは VM より軽量 • Kubernetes がリソース管理や HA といったハイパーバイザーが持つ機能を提供している • 仮想化によるパフォーマンスの低下 • ハイパーバイザーをスタックから取り除くことにより複雑性とコストを削減できる • インフラチームがアジャイルでない(セルフサービスでやりたい) A 社のインフラチームが VMware に相談 ベアメタルでやるぞ︕
  7. ©2019 VMware, Inc. 18 複数クラスタ vs シングルクラスタ 隔離の柔軟性 仮想インフラ上に異なったクラスタを混在させることが可能 Kubernetes

    のクラスタで隔離を⾏うとリソースが有効に活⽤できない • クラスタによる分割を⾏うと、多 くのハードウェアが必要となる、 リソースも有効に活⽤できない。 • リソースを有効に利⽤するために シングルクラスタになりがち。 • さまざまな動機(アプリ、部⾨、 サービス、など)で⾃由にクラス タ分離してもリソースが有効に利 ⽤される。 K8S on vSphere K8S on ベアメタル
  8. ©2019 VMware, Inc. 19 HA、アドミッションコントロール、優先順位 コントロールプレーンの信頼性 vSphere HA はリカバリプロセスを⾃動化。リソースは常に保証されている タイムアウト後に

    Pod は再作成されるが、 あらかじめ⾼い priority を設定しておく必要がある • ノード障害時にはタイムアウト (デフォルト5分)後に Pod は再作成される • 空いているリソースがなければ Pod は再作成されない。 • 他の Pod よりも⾼い priority を 設定しておく必要がある • K8S のコントローラコンポーネン トや複雑なステートフルアプリ ケーションは vSphere の HA の メリットを享受できる • vSphere の HA は常にリソースが 確保されている K8S on vSphere K8S on ベアメタル
  9. ©2019 VMware, Inc. 20 マルチレベル スケジューリング vs 静的なスケジューリング ワークロードのバランシング •

    ワークロードの配置は Pod の デプロイ時に決まる。 • 新たな Pod をデプロイする際に、 既存の Pod が追い出される (preemption)場合はあるが、 他の契機でリバランシングが ⾏われることはない。 • DRS (Distributed Resource Scheduler) が継続的に ワークロードの配置を最適化。 K8S on vSphere K8S on ベアメタル DRS と組みわせて多段スケジューリングすることで継続的に最適化 配置は最初のデプロイ時に決まり、原則その後、変わることはない
  10. ©2019 VMware, Inc. 21 A 社の Linux チームが Kubernetes をベアメタル上で使う⽅針を決定

    Linux チームの主張︓ • クラウドネイティブなアプリケーションはHA や vMotion などの vSphere の機能はいらない • コンテナは VM より軽量 • Kubernetes がリソース管理や HA といったハイパーバイザーが持つ機能を提供している • 仮想化によるパフォーマンスの低下 • ハイパーバイザーをスタックから取り除くことにより複雑性とコストを削減できる • インフラチームがアジャイルでない(セルフサービスでやりたい) A 社のインフラチームが VMware に相談 ベアメタルでやるぞ︕
  11. ©2019 VMware, Inc. 22 CNCF Survey conducted in March and

    November 2018 実際ワークロードはどこで動いている︖ 引⽤: https://www.cncf.io/blog/2018/11/13/cncf-survey-china-november-2018/
  12. ©2019 VMware, Inc. 23 最新の Kubernetes をどこでも︕ 23 オンプレ |

    ハイブリッド クラウド | パブリック クラウド パッケージ SaaS VMware PKS
  13. ©2019 VMware, Inc. 24 最新の Kubernetes をどこでも︕ 24 オンプレ |

    ハイブリッド クラウド | パブリック クラウド パッケージ SaaS VMware Enterprise PKS ターンキー︓ SDDC への 投資を最⼤限に活かした統合 ソリューション VMware Essential PKS カスタム︓ ⾃由なデザイン とプロアクティブなサポート VMware Cloud PKS SaaS︓ マネージメント / メンテナンスフリーで クラスタを利⽤
  14. ©2019 VMware, Inc. 25 コンテナ管理のターンキーソリューション VMware Enterprise PKS vSphere |

    Hybrid Cloud | Public Cloud アップストリーム版 Kubernetes 含まれるコンポーネント︓ 統合、検証され、セキュア ライフサイクル管理 [BOSH] レジストリ [Harbor] ネットワーク [NSX-T] 補完コンポーネント (⼀部) Pivotal Platform Dojo: CI/CD integration 推奨される追加サービス Training: Private, role-specific courseware Support: Troubleshoot, repair SDDC オープン モニタリング Wavefront Prometheus ストレージ vSAN ⾃動化 vRealize 適合性検査 Sonobuoy Ingress / LB NSX-T Contour サービスメッシュ NSX SM Istio バックアップ/移⾏ BBR Velero 含まれるサービス
  15. ©2019 VMware, Inc. 26 カスタマイズ可能な Kubernetes 基本サービス VMware Essential PKS

    Bare Metal | vSphere | Public Cloud アップストリーム版 Kubernetes 必要なコンポーネント アーキテクト︓接敵、デプロイ、開発 必要となる追加サービス トレーニング︓ 個別、ロール別コース ライフサイクル管理 [kubeadm, Cluster API] レジストリ [Harbor, Quay] ネットワーク [NSX-T, Flannel, Calico] サポート︓アップグレード、パッチ、 メンテナンス 含まれるサービス 補完コンポーネント (⼀部) SDDC オープン モニタリング Wavefront Prometheus ストレージ vSAN ⾃動化 vRealize 適合性検査 Sonobuoy Ingress / LB NSX-T Contour バックアップ/移⾏ Velero 推奨される追加サービス
  16. ©2019 VMware, Inc. 27 Kubernetes を SaaS で提供 VMware Cloud

    PKS AWS | VMC (coming) | Azure (coming) なし 必要となる追加サービス なし サポートとオペレーション︓ アップグレード、パッチ、ヘルス管理 含まれるサービス 補完コンポーネント(⼀部) CSP/VMware オープン モニタリング Wavefront Prometheus ストレージ AWS EBS ⾃動化 Cluster API 適合性検査 Sonobuoy Ingress/LB Contour Nginx バックアップ/移⾏ Velero 推奨される追加サービス ライフサイクル管理 レジストリ ネットワーク サービスメッシュ ポリシー アップストリーム版 Kubernetes 含まれるコンポーネント