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

VMをPodで起動するKubeVirtの真髄 / KubeVirt

VMをPodで起動するKubeVirtの真髄 / KubeVirt

Oracle Cloud Hangout Cafe で LT した KubeVirt についてです。

Takuya Utsunomiya

June 05, 2024
Tweet

More Decks by Takuya Utsunomiya

Other Decks in Technology

Transcript

  1. VM を Pod で起動する KubeVirt の真髄 2024/06/05 宇都宮 卓也 @japan_rook 1

    Oracle Cloud Hangout Café - Season 8 #5 Kubernetes で作る IaaS 基盤
  2. 2 kind: HumanBeings metadata: name: 宇都宮 卓也 spec: group: レッドハット株式会社

    title: ソリューションアーキテクト born: 大阪 age: 42歳 favorites: technology: [“ストレージ”, “KubeVirt”] hobby: [“プロレス”, “麻雀”, “将棋”, “スピードキュービング”] drink: [“ワイン”, “ビール”, “無糖サワー”] annoyance: [“スマホ老眼”, “最近疲れが取れない”] うつぼ @japan_rook Japan Rook https://rook.connpass.com/ Cloud Native Data Community https://cndata.connpass.com/ https://www.shoeisha.co.jp/book/detail/ 9784798175027 $ whoami
  3. 3 • コンテナ ◦ Linux Kernel が提供する機能でプロセス分離とリソース制 御の技術 ▪ Namespace,

    cgroup, OverlayFS, Capability, etc… ◦ 同一の Linux OS Kernel を共有、ハイパーバイザ不要 ▪ コンテナにはアプリで使用するバイナリ / ライブラリ / ツールの みを包含 Infrastructure Operating System App 1 App 3 App 2 Hypervisor Guest OS Guest OS Guest OS Infrastructure 仮想マシン コンテナ App 1 App 3 App 2 コンテナと仮想マシンは違うもの
  4. 4 仮想マシンの “コンテナ化” KVM 仮想マシンとコンテナの共通点 • どちらも Linux ホストから見ると Linux

    プロセスである • どちらもリソース(CPU / メモリ、ネットワーク、ストレージ)を必要とする 仮想マシンはコンテナと同じように扱える?! Red Hat Enterprise Linux CoreOS Kernel Red Hat Enterprise Linux CoreOS Kernel Linux ホスト コンテナ 仮想マシン /usr/bin/conmon -b /run/container/storag e/overlay-contain… /usr/libexec/qemu-kvm -name guest=rhel9-01- dev… プロセス プロセス
  5. 5 Kubernetes 上で仮想マシンを動かすことを目的としたオープンソースプロジェクト • 2016年にRed Hatがプロジェクトをスタート • 2017年にOSSとして公開 • 2019年にCNCFプロジェクトの一部に

    • 2023年7月にversion1.0をリリース The v1.0 release signifies the incredible growth that the community has gone through in the past six years from an idea to a production-ready Virtual Machine Management solution. The next stage with v1.0 is the additional focus on maintaining APIs while continuing to grow the project. This has led KubeVirt to adopt community practices from Kubernetes in key parts of the project. v1.0のリリースは、過去6年間にコミュニティがアイデアから 本番稼動可能な仮想マシン管理ソリューションまで、信じられないほどの成 長を遂げたことを意味します。 v1.0の次の段階は、APIを維持しながらプロジェクトを継続的に成長させる ことにさらに重点を置くことです。 KubeVirtはプロジェクトの鍵となる箇所に おいて、Kubernetesのコミュニティ・プラクティスを採用していきます。 What does v1.0 mean to the community? KubeVirtのコミュニティブログより KubeVirt
  6. Linux User Land 6 • Linux カーネルが持つ仮想化機能 ◦ Kernel Land

    で稼働するカーネルモジュール • KVM + QEMU + libvirt のスタックで仮想化 ◦ QEMU ▪ 仮想マシンのハードウェアエミュレーションを提供 ▪ User Land で Linux プロセス (qemu-kvm) として稼働 ◦ libvirt ▪ 仮想マシンの管理レイヤーを提供 ▪ User Land で Linux プロセス (virtqemud) として稼働 Hardware Linux Kernel Land KVM QEMU libvirt VM QEMU libvirt VM QEMU libvirt VM KVM : Kernel-based Virtual Machine
  7. Kubernetes virt-launcher Pod virt-launcher Pod virt-launcher Pod 7 Hardware Linux

    Kernel Land KVM QEMU libvirt VM QEMU libvirt VM QEMU libvirt VM • KVM は Linux ホストの Kernel Land で実行し、KubeVirt で実行さ れる仮想マシンで共有される。 • QEMU + libvirt は Kubernetes の Namespace 内でコンテナ (Pod) の形で実行される ◦ virt-launcher Pod ▪ qemu-kvm と virtqemud(libvirt) が一つのコンテナに同梱 ▪ 1 つの VM に対して 1 つの virt-launcher Pod が対応 ▪ “コンテナ化された仮想マシン” ◦ virt-laucher Pod に CPU/RAM、ネットワーク、ストレージなどのリソー スを割り当てる ◦ Namespace 内に複数の VM を作ることも可能 • “Virtual Machine” カスタムリソースで VM を作成する ◦ virt-launcher Pod を作るのではない KubeVirt での実装
  8. 8 • 代表的なカスタムリソース ◦ VirtualMachine : 仮想マシン ◦ VirtualMachineInstance(VMI) :

    稼働中の仮想マシン ◦ VirtualMachineInstanceMigration : ライブマイグレーション ◦ VirtualMachineSnapshot : スナップショット ◦ DataVolume : 仮想ディスク カスタムリソース VirtualMachine DataVolume PVC VirtualMachine Instance Pod (virt-launcher) VM ディスクイ メージ VirtualMachine Snapshot VolumeSnapshot スナップショッ ト VM 起動
  9. 9 ネットワーク Worker Node Control Plane Node Control Plane Node

    Worker Node Worker Node Control Plane Node NIC NIC NIC NIC NIC NIC Logical Switch Logical Switch Logical Switch Logical Switch Logical Switch Logical Switch NIC NIC NIC NIC NIC NIC Linux Bridge Linux Bridge Linux Bridge • Kubernetes CNI plugin で構成される overlay network が利用可能 • Multus とホスト上の Bridge を使って、クラスタ外部のネットワークも利用可能 Overlay Network L2 Network 外部システム
  10. 10 ストレージ Kubernetes Red Hat Enterprise Linux CoreOS Kernel Red

    Hat Enterprise Linux CoreOS Kernel • 一般的なストレージシステムを利用可能 ◦ ハードウェアアプライアンス ◦ SDS(Rook-Ceph など) • Block Storage と File Storage の両方に対応 ◦ FC, iSCSI, 他 ◦ NFS, 他 • 仮想ディスクごとに PV = ボリュームを作成 ◦ VM の処理をストレージシステム側と連携しやすい ▪ スナップショット、クローン 等 ◦ ストレージシステムの機能を仮想ディスクに適用可能 ▪ リモートミラー、QoS 等 Control Plane Node / Worker Node VM SDS FC, iSCSI, NFS, etc Persistent Volume
  11. 11 結局 Kubernetes で仮想マシンを動かして何がうれしいの? ▶ クラウドっぽいセルフサービスの仕組が苦労せず作れ る ▶ ワークロード管理手法の統一して運用負荷を下げられ る

    ◦ VM とコンテナの管理インターフェースの統合 ◦ レガシー App と モダンな App を一括管理 ▶ Cloud-Native な開発/デプロイ手法を採用できる ◦ IaC, CI/CD Pipeline, GitOps ◦ OCM ( Open Cluster Management ) を使うことでマル チクラスタのワークロード管理も可能に CI/CD GitOps Container Virtual Machine Create from Git Triggered by “git push” Virtual Machine Zone 1 Zone 2
  12. linkedin.com/company/red-hat youtube.com/user/RedHatVideos facebook.com/redhatinc twitter.com/RedHat Red Hat is the world’s leading

    provider of enterprise open source software solutions. Award-winning support, training, and consulting services make Red Hat a trusted adviser to the Fortune 500. Thank you 12