SlideShare a Scribd company logo
©2020 VMware, Inc.
CRX:
Container Runtime
Executive
ESXi上で動くコンテナの仕組み
22nd August 2020
ヴイエムウェア株式会社
村田 一平
©2020 VMware, Inc.
Agenda
2
Table of Contents
• VMwareがコンテナを扱うワケ
• CRXとは
• CRX Architecture詳細 全体像
• CRX Architecture詳細 コンテナ起動時のシーケンス
• 性能
• ユースケース
©2020 VMware, Inc. 3
VMwareがコンテナを扱うワケ
VMwareとは:
• 仮想化市場で有名な会社
• サーバ仮想化(vSphere)、ストレージ仮想化(vSAN)、
ネットワーク仮想化(NSX)、デスクトップ仮想化(Horizon), etc
なぜ仮想屋がコンテナランタイム?
• 仮想マシン(VM)とコンテナの一元管理
• リソースの最適化(集約・高速) ハイパバイザ
(ESXi)
VM
Container
同じ扱い
©2020 VMware, Inc. 4
VMwareがコンテナを扱うワケ
VMwareとは:
• 仮想化市場で有名な会社
• サーバ仮想化(vSphere)、ストレージ仮想化(vSAN)、
ネットワーク仮想化(NSX)、デスクトップ仮想化(Horizon), etc
なぜ仮想屋がコンテナランタイム?
• 仮想マシン(VM)とコンテナの一元管理
• リソースの最適化(集約・高速)
コンテナランタイム:CRX
ハイパバイザ
(ESXi)
VM
Container
同じ扱い
©2020 VMware, Inc. 5
CRXとは
CRX: Container Runtime Executive
(旧:Container Runtime for ESXi)
= ESXi上で動くコンテナランタイム
= コンテナ起動のための最小限の仮想マシン
= Linux Kernel + 最小限のコンポーネント
ESXi
VM
Ubuntu
Docker
VM
OS
(Photon)
vSphere
Agent
一般的な
スタック
CRX
©2020 VMware, Inc. 6
CRX Architecture詳細 全体像
ESXi
VM
OS
Spherelet
API
Master
Master Node
k8s
Sched
Image
Service
Hostd
Sched
ExtensionvCenter
Kubectl
CRX
CRX-tool
libcontainer
CRX-init
initrd
kernel
Spherelet
Agent
©2020 VMware, Inc. 7
CRX Architecture詳細 コンテナ起動時のシーケンス
API
Master
Scheduler
Extension
DRS vCenterkubectl
kubectl create
Hostd
Spherelet
Agent
Spherelet
Request Pod
location
Decide location
Request VM
creation
Create CRX(VM)
CRX Power on
VM UUID
Node, VM UUID
Add UUID to
annotation
Node, Pod spec
Request Pod creation Reconfigure CRX
Request Pod creation
kernel init
CRX
Boot init process
Initialize OS
Boot
Spherelet Agent
Pod status
vSphere
k8s Master
Request Pod
creation
Initialize network, etc
Assign VMDK, vNIC
Boot Container, etc
©2020 VMware, Inc. 8
高速起動のコツ(1) − ブートプロセス
API
Master
Scheduler
Extension
DRS vCenterkubectl
kubectl create
Hostd
Spherelet
Agent
Spherelet
Request Pod
location
Decide location
Request VM
creation
Create CRX(VM)
CRX Power on
VM UUID
Node, VM UUID
Add UUID to
annotation
Node, Pod spec
Request Pod creation Reconfigure CRX
Request Pod creation
kernel init
CRX
Boot init process
Initialize OS
Boot
Spherelet Agent
Pod status
vSphere
k8s Master
Request Pod
creation
Initialize network, etc
Assign VMDK, vNIC
Boot Container, etc
©2020 VMware, Inc. 9
高速起動のコツ(1) − ブートプロセス
API
Master
Scheduler
Extension
DRS vCenterkubectl
kubectl create
Hostd
Spherelet
Agent
Spherelet
Request Pod
location
Decide location
Request VM
creation
Create CRX(VM)
CRX Power on
VM UUID
Node, VM UUID
Add UUID to
annotation
Node, Pod spec
Request Pod creation Reconfigure CRX
Request Pod creation
kernel init
CRX
Boot init process
Initialize OS
Boot
Spherelet Agent
Pod status
vSphere
k8s Master
Request Pod
creation
Initialize network, etc
Assign VMDK, vNIC
Boot Container, etc
ブートプロセス
1. BIOS(UEFI)のブート
2. ブートローダによるカーネルのロード
3. カーネルの起動
カーネルの自己展開
組み込みドライバのロード
initrdの展開
4. initプロセスの起動
©2020 VMware, Inc. 10
高速起動のコツ(1) − ブートプロセス
API
Master
Scheduler
Extension
DRS vCenterkubectl
kubectl create
Hostd
Spherelet
Agent
Spherelet
Request Pod
location
Decide location
Request VM
creation
Create CRX(VM)
CRX Power on
VM UUID
Node, VM UUID
Add UUID to
annotation
Node, Pod spec
Request Pod creation Reconfigure CRX
Request Pod creation
kernel init
CRX
Boot init process
Initialize OS
Boot
Spherelet Agent
Pod status
vSphere
k8s Master
Request Pod
creation
Initialize network, etc
Assign VMDK, vNIC
Boot Container, etc
ブートプロセス
1. BIOS(UEFI)のブート
2. ブートローダによるカーネルのロード
3. カーネルの起動
カーネルの自己展開
組み込みドライバのロード
initrdの展開
4. initプロセスの起動
©2020 VMware, Inc. 11
高速起動のコツ(2)− 共有
initrd
Container
vmlinux
Container Container Container
・vmlinux, initrdはメモリ上でファイル共有
→キャッシュミス、PageFault削減
・initrdのメモリアライン最適化
(cpio改造によるアラインメント)
initrd
vmlinux
initrd
vmlinux
initrd
vmlinux
initrd
vmlinux
VisorFS
(tmpfsみたいなもの)
©2020 VMware, Inc. 12
性能
©2020 VMware, Inc. 13
性能
VM Creation: 200 ~ 300 ms
VM Power On: 300 ~ 400 ms
spherelet client/agent: 100 ~ 200 ms
0
1000
2000
3000
4000
5000
起動時間(ms)
Podの起動時間(Pauseコンテナ)
注意点:
K8sクラスタ上でのPodの起動時間 < CRXでPodを起動する時間
©2020 VMware, Inc. 14
ユースケース
• CRX単体でのユースケース
• as a Serviceの提供
• セキュリティ要件が厳しい場合
• 仮想マシンとCRXを使ったコンテナを組み合わせた場合のユースケース
• VMとPodで同じように管理・監視したい場合
• 柔軟にリソースを活用して運用したい場合
→ 例えば、DR用リソースをVMにもPodにも利用可能
©2020 VMware, Inc.
Thank You

More Related Content

PDF
Dockerからcontainerdへの移行
PDF
イマドキ!ユースケース別に見るAWS IoT への接続パターン
PDF
ゼロからはじめるKVM超入門
PDF
Fluentdのお勧めシステム構成パターン
PDF
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PPTX
KubernetesバックアップツールVeleroとちょっとした苦労話
PPTX
最近のKeycloakのご紹介 ~クライアントポリシーとFAPI~
PDF
Spannerに関する技術メモ
Dockerからcontainerdへの移行
イマドキ!ユースケース別に見るAWS IoT への接続パターン
ゼロからはじめるKVM超入門
Fluentdのお勧めシステム構成パターン
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
KubernetesバックアップツールVeleroとちょっとした苦労話
最近のKeycloakのご紹介 ~クライアントポリシーとFAPI~
Spannerに関する技術メモ

What's hot (20)

PDF
20190424 AWS Black Belt Online Seminar Amazon Aurora MySQL
PDF
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
PPTX
Karpenterで君だけの最強のオートスケーリングを実装しよう
PPTX
コンテナネットワーキング(CNI)最前線
PPTX
Dockerからcontainerdへの移行
PDF
Docker道場「Dockerの基本概念」0825インフラ勉強会資料
PPTX
Rootlessコンテナ
PDF
OpenStack超入門シリーズ Novaのディスク周りあれこれ
PDF
コンテナ未経験新人が学ぶコンテナ技術入門
PDF
Linux-HA Japanプロジェクトのこれまでとこれから
PDF
DockerとPodmanの比較
PDF
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
PDF
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
PDF
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
PDF
マイクロサービス時代の認証と認可 - AWS Dev Day Tokyo 2018 #AWSDevDay
PDF
Unified JVM Logging
PDF
Docker と ECS と WebSocket で最強のマルチプレイ・ゲームサーバを構築
PDF
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
PDF
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
PDF
大規模オンプレミス環境はGitOpsの夢を見るか(CI/CD Conference 2021 by CloudNative Days 発表資料)
20190424 AWS Black Belt Online Seminar Amazon Aurora MySQL
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
Karpenterで君だけの最強のオートスケーリングを実装しよう
コンテナネットワーキング(CNI)最前線
Dockerからcontainerdへの移行
Docker道場「Dockerの基本概念」0825インフラ勉強会資料
Rootlessコンテナ
OpenStack超入門シリーズ Novaのディスク周りあれこれ
コンテナ未経験新人が学ぶコンテナ技術入門
Linux-HA Japanプロジェクトのこれまでとこれから
DockerとPodmanの比較
Kubernetesのしくみ やさしく学ぶ 内部構造とアーキテクチャー
AWSとオンプレミスを繋ぐときに知っておきたいルーティングの基礎知識(CCSI監修!)
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
マイクロサービス時代の認証と認可 - AWS Dev Day Tokyo 2018 #AWSDevDay
Unified JVM Logging
Docker と ECS と WebSocket で最強のマルチプレイ・ゲームサーバを構築
Docker入門-基礎編 いまから始めるDocker管理【2nd Edition】
PostgreSQLをKubernetes上で活用するためのOperator紹介!(Cloud Native Database Meetup #3 発表資料)
大規模オンプレミス環境はGitOpsの夢を見るか(CI/CD Conference 2021 by CloudNative Days 発表資料)
Ad

Similar to CRX: Container Runtime Executive  (20)

PDF
第6回「VMware vSphere 5」(2011/08/11 on しすなま!)
PDF
VMware が考えるコンテナと Kubernetes の世界
PDF
Kubernetes に開かれる新しい海 -Project Pacific とは?-
PPTX
20120822_dstn技術交流会_仮想化について
PDF
[Interact 2018] 別視点からのハイパーコンバージドインフラ ~ ソフトウェアによる華麗な “ものづくり“ の世界
PDF
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
PDF
VMwareの歩き方 ~SDDCに向けた最強アンダーレイとは?
PDF
コンテナ今昔物語_2021_12_22
PDF
ここで差がつく「仮想化導入」性能、信頼性、コストの最新トレンド
PDF
20190124 hccjp vmware_final
PDF
Lxc で始めるケチケチ仮想化生活?!
PPTX
Containers and Virtual Machines: Friends or Enemies?
PDF
20180706_VxRailCC_ワークショップ編_NW
PDF
Azure VMware Solution by CloudSimple 概要
PDF
Osc2009 Sendai Xen 0124
PPTX
Dell EMC Forum 2017_networld_20171026
PDF
第3回「マイクロソフトの仮想化と、クラウドの今後」(2011/06/16 on しすなま!) ①Microsoft様資料
第6回「VMware vSphere 5」(2011/08/11 on しすなま!)
VMware が考えるコンテナと Kubernetes の世界
Kubernetes に開かれる新しい海 -Project Pacific とは?-
20120822_dstn技術交流会_仮想化について
[Interact 2018] 別視点からのハイパーコンバージドインフラ ~ ソフトウェアによる華麗な “ものづくり“ の世界
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
VMwareの歩き方 ~SDDCに向けた最強アンダーレイとは?
コンテナ今昔物語_2021_12_22
ここで差がつく「仮想化導入」性能、信頼性、コストの最新トレンド
20190124 hccjp vmware_final
Lxc で始めるケチケチ仮想化生活?!
Containers and Virtual Machines: Friends or Enemies?
20180706_VxRailCC_ワークショップ編_NW
Azure VMware Solution by CloudSimple 概要
Osc2009 Sendai Xen 0124
Dell EMC Forum 2017_networld_20171026
第3回「マイクロソフトの仮想化と、クラウドの今後」(2011/06/16 on しすなま!) ①Microsoft様資料
Ad

CRX: Container Runtime Executive 

  • 1. ©2020 VMware, Inc. CRX: Container Runtime Executive ESXi上で動くコンテナの仕組み 22nd August 2020 ヴイエムウェア株式会社 村田 一平
  • 2. ©2020 VMware, Inc. Agenda 2 Table of Contents • VMwareがコンテナを扱うワケ • CRXとは • CRX Architecture詳細 全体像 • CRX Architecture詳細 コンテナ起動時のシーケンス • 性能 • ユースケース
  • 3. ©2020 VMware, Inc. 3 VMwareがコンテナを扱うワケ VMwareとは: • 仮想化市場で有名な会社 • サーバ仮想化(vSphere)、ストレージ仮想化(vSAN)、 ネットワーク仮想化(NSX)、デスクトップ仮想化(Horizon), etc なぜ仮想屋がコンテナランタイム? • 仮想マシン(VM)とコンテナの一元管理 • リソースの最適化(集約・高速) ハイパバイザ (ESXi) VM Container 同じ扱い
  • 4. ©2020 VMware, Inc. 4 VMwareがコンテナを扱うワケ VMwareとは: • 仮想化市場で有名な会社 • サーバ仮想化(vSphere)、ストレージ仮想化(vSAN)、 ネットワーク仮想化(NSX)、デスクトップ仮想化(Horizon), etc なぜ仮想屋がコンテナランタイム? • 仮想マシン(VM)とコンテナの一元管理 • リソースの最適化(集約・高速) コンテナランタイム:CRX ハイパバイザ (ESXi) VM Container 同じ扱い
  • 5. ©2020 VMware, Inc. 5 CRXとは CRX: Container Runtime Executive (旧:Container Runtime for ESXi) = ESXi上で動くコンテナランタイム = コンテナ起動のための最小限の仮想マシン = Linux Kernel + 最小限のコンポーネント ESXi VM Ubuntu Docker VM OS (Photon) vSphere Agent 一般的な スタック CRX
  • 6. ©2020 VMware, Inc. 6 CRX Architecture詳細 全体像 ESXi VM OS Spherelet API Master Master Node k8s Sched Image Service Hostd Sched ExtensionvCenter Kubectl CRX CRX-tool libcontainer CRX-init initrd kernel Spherelet Agent
  • 7. ©2020 VMware, Inc. 7 CRX Architecture詳細 コンテナ起動時のシーケンス API Master Scheduler Extension DRS vCenterkubectl kubectl create Hostd Spherelet Agent Spherelet Request Pod location Decide location Request VM creation Create CRX(VM) CRX Power on VM UUID Node, VM UUID Add UUID to annotation Node, Pod spec Request Pod creation Reconfigure CRX Request Pod creation kernel init CRX Boot init process Initialize OS Boot Spherelet Agent Pod status vSphere k8s Master Request Pod creation Initialize network, etc Assign VMDK, vNIC Boot Container, etc
  • 8. ©2020 VMware, Inc. 8 高速起動のコツ(1) − ブートプロセス API Master Scheduler Extension DRS vCenterkubectl kubectl create Hostd Spherelet Agent Spherelet Request Pod location Decide location Request VM creation Create CRX(VM) CRX Power on VM UUID Node, VM UUID Add UUID to annotation Node, Pod spec Request Pod creation Reconfigure CRX Request Pod creation kernel init CRX Boot init process Initialize OS Boot Spherelet Agent Pod status vSphere k8s Master Request Pod creation Initialize network, etc Assign VMDK, vNIC Boot Container, etc
  • 9. ©2020 VMware, Inc. 9 高速起動のコツ(1) − ブートプロセス API Master Scheduler Extension DRS vCenterkubectl kubectl create Hostd Spherelet Agent Spherelet Request Pod location Decide location Request VM creation Create CRX(VM) CRX Power on VM UUID Node, VM UUID Add UUID to annotation Node, Pod spec Request Pod creation Reconfigure CRX Request Pod creation kernel init CRX Boot init process Initialize OS Boot Spherelet Agent Pod status vSphere k8s Master Request Pod creation Initialize network, etc Assign VMDK, vNIC Boot Container, etc ブートプロセス 1. BIOS(UEFI)のブート 2. ブートローダによるカーネルのロード 3. カーネルの起動 カーネルの自己展開 組み込みドライバのロード initrdの展開 4. initプロセスの起動
  • 10. ©2020 VMware, Inc. 10 高速起動のコツ(1) − ブートプロセス API Master Scheduler Extension DRS vCenterkubectl kubectl create Hostd Spherelet Agent Spherelet Request Pod location Decide location Request VM creation Create CRX(VM) CRX Power on VM UUID Node, VM UUID Add UUID to annotation Node, Pod spec Request Pod creation Reconfigure CRX Request Pod creation kernel init CRX Boot init process Initialize OS Boot Spherelet Agent Pod status vSphere k8s Master Request Pod creation Initialize network, etc Assign VMDK, vNIC Boot Container, etc ブートプロセス 1. BIOS(UEFI)のブート 2. ブートローダによるカーネルのロード 3. カーネルの起動 カーネルの自己展開 組み込みドライバのロード initrdの展開 4. initプロセスの起動
  • 11. ©2020 VMware, Inc. 11 高速起動のコツ(2)− 共有 initrd Container vmlinux Container Container Container ・vmlinux, initrdはメモリ上でファイル共有 →キャッシュミス、PageFault削減 ・initrdのメモリアライン最適化 (cpio改造によるアラインメント) initrd vmlinux initrd vmlinux initrd vmlinux initrd vmlinux VisorFS (tmpfsみたいなもの)
  • 12. ©2020 VMware, Inc. 12 性能
  • 13. ©2020 VMware, Inc. 13 性能 VM Creation: 200 ~ 300 ms VM Power On: 300 ~ 400 ms spherelet client/agent: 100 ~ 200 ms 0 1000 2000 3000 4000 5000 起動時間(ms) Podの起動時間(Pauseコンテナ) 注意点: K8sクラスタ上でのPodの起動時間 < CRXでPodを起動する時間
  • 14. ©2020 VMware, Inc. 14 ユースケース • CRX単体でのユースケース • as a Serviceの提供 • セキュリティ要件が厳しい場合 • 仮想マシンとCRXを使ったコンテナを組み合わせた場合のユースケース • VMとPodで同じように管理・監視したい場合 • 柔軟にリソースを活用して運用したい場合 → 例えば、DR用リソースをVMにもPodにも利用可能