Suche senden
Hochladen
Container Storage Interface のすべて
•
1 gefällt mir
•
9,215 views
祐司 伊藤
Folgen
KubeFest Tokyo 2020 発表資料
Weniger lesen
Mehr lesen
Technologie
Melden
Teilen
Melden
Teilen
1 von 41
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
Kubernete Meetup Tokyo #18 - Kubebuilder/controller-runtime 入門
Kubernete Meetup Tokyo #18 - Kubebuilder/controller-runtime 入門
Preferred Networks
サイバーエージェント様 発表「OpenStackのNWと物理の話」
サイバーエージェント様 発表「OpenStackのNWと物理の話」
VirtualTech Japan Inc.
Kubernetes ControllerをScale-Outさせる方法 / Kubernetes Meetup Tokyo #55
Kubernetes ControllerをScale-Outさせる方法 / Kubernetes Meetup Tokyo #55
Preferred Networks
なぜディスクレスハイパーバイザに至ったのか / Why did we select to the diskless hypervisor? #builde...
なぜディスクレスハイパーバイザに至ったのか / Why did we select to the diskless hypervisor? #builde...
whywaita
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
NTT DATA Technology & Innovation
AS45679 on FreeBSD
AS45679 on FreeBSD
Tomocha Potter
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」
Masahito Zembutsu
BuildKitの概要と最近の機能
BuildKitの概要と最近の機能
Kohei Tokunaga
Empfohlen
Kubernete Meetup Tokyo #18 - Kubebuilder/controller-runtime 入門
Kubernete Meetup Tokyo #18 - Kubebuilder/controller-runtime 入門
Preferred Networks
サイバーエージェント様 発表「OpenStackのNWと物理の話」
サイバーエージェント様 発表「OpenStackのNWと物理の話」
VirtualTech Japan Inc.
Kubernetes ControllerをScale-Outさせる方法 / Kubernetes Meetup Tokyo #55
Kubernetes ControllerをScale-Outさせる方法 / Kubernetes Meetup Tokyo #55
Preferred Networks
なぜディスクレスハイパーバイザに至ったのか / Why did we select to the diskless hypervisor? #builde...
なぜディスクレスハイパーバイザに至ったのか / Why did we select to the diskless hypervisor? #builde...
whywaita
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
NTT DATA Technology & Innovation
AS45679 on FreeBSD
AS45679 on FreeBSD
Tomocha Potter
コンテナの作り方「Dockerは裏方で何をしているのか?」
コンテナの作り方「Dockerは裏方で何をしているのか?」
Masahito Zembutsu
BuildKitの概要と最近の機能
BuildKitの概要と最近の機能
Kohei Tokunaga
CyberAgentのインフラについて メディア事業編 #catechchallenge
CyberAgentのインフラについて メディア事業編 #catechchallenge
whywaita
Rootlessコンテナ
Rootlessコンテナ
Akihiro Suda
KubernetesバックアップツールVeleroとちょっとした苦労話
KubernetesバックアップツールVeleroとちょっとした苦労話
imurata8203
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
NTT DATA Technology & Innovation
GPU仮想化最前線 - KVMGTとvirtio-gpu -
GPU仮想化最前線 - KVMGTとvirtio-gpu -
zgock
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
NTT DATA Technology & Innovation
コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門
Kohei Tokunaga
root権限無しでKubernetesを動かす
root権限無しでKubernetesを動かす
Akihiro Suda
AvailabilityZoneとHostAggregate
AvailabilityZoneとHostAggregate
Hiroki Ishikawa
ゼロからはじめるKVM超入門
ゼロからはじめるKVM超入門
VirtualTech Japan Inc.
Stargz Snapshotter: イメージのpullを省略しcontainerdでコンテナを高速に起動する
Stargz Snapshotter: イメージのpullを省略しcontainerdでコンテナを高速に起動する
Kohei Tokunaga
Argo CD Deep Dive
Argo CD Deep Dive
shunki fujiwara
コンテナセキュリティにおける権限制御(OCHaCafe5 #3 Kubernetes のセキュリティ 発表資料)
コンテナセキュリティにおける権限制御(OCHaCafe5 #3 Kubernetes のセキュリティ 発表資料)
NTT DATA Technology & Innovation
OpenStackをさらに”使う”技術 概要と基礎操作
OpenStackをさらに”使う”技術 概要と基礎操作
irix_jp
日本OpenStackユーザ会 第37回勉強会
日本OpenStackユーザ会 第37回勉強会
Yushiro Furukawa
ML2/OVN アーキテクチャ概観
ML2/OVN アーキテクチャ概観
Yamato Tanaka
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
Preferred Networks
大規模サービスを支えるネットワークインフラの全貌
大規模サービスを支えるネットワークインフラの全貌
LINE Corporation
Akkaで分散システム入門
Akkaで分散システム入門
Shingo Omura
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
Preferred Networks
CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜
CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜
Masaya Aoyama
VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発
Yuta Matsumura
Weitere ähnliche Inhalte
Was ist angesagt?
CyberAgentのインフラについて メディア事業編 #catechchallenge
CyberAgentのインフラについて メディア事業編 #catechchallenge
whywaita
Rootlessコンテナ
Rootlessコンテナ
Akihiro Suda
KubernetesバックアップツールVeleroとちょっとした苦労話
KubernetesバックアップツールVeleroとちょっとした苦労話
imurata8203
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
NTT DATA Technology & Innovation
GPU仮想化最前線 - KVMGTとvirtio-gpu -
GPU仮想化最前線 - KVMGTとvirtio-gpu -
zgock
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
NTT DATA Technology & Innovation
コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門
Kohei Tokunaga
root権限無しでKubernetesを動かす
root権限無しでKubernetesを動かす
Akihiro Suda
AvailabilityZoneとHostAggregate
AvailabilityZoneとHostAggregate
Hiroki Ishikawa
ゼロからはじめるKVM超入門
ゼロからはじめるKVM超入門
VirtualTech Japan Inc.
Stargz Snapshotter: イメージのpullを省略しcontainerdでコンテナを高速に起動する
Stargz Snapshotter: イメージのpullを省略しcontainerdでコンテナを高速に起動する
Kohei Tokunaga
Argo CD Deep Dive
Argo CD Deep Dive
shunki fujiwara
コンテナセキュリティにおける権限制御(OCHaCafe5 #3 Kubernetes のセキュリティ 発表資料)
コンテナセキュリティにおける権限制御(OCHaCafe5 #3 Kubernetes のセキュリティ 発表資料)
NTT DATA Technology & Innovation
OpenStackをさらに”使う”技術 概要と基礎操作
OpenStackをさらに”使う”技術 概要と基礎操作
irix_jp
日本OpenStackユーザ会 第37回勉強会
日本OpenStackユーザ会 第37回勉強会
Yushiro Furukawa
ML2/OVN アーキテクチャ概観
ML2/OVN アーキテクチャ概観
Yamato Tanaka
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
Preferred Networks
大規模サービスを支えるネットワークインフラの全貌
大規模サービスを支えるネットワークインフラの全貌
LINE Corporation
Akkaで分散システム入門
Akkaで分散システム入門
Shingo Omura
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
Preferred Networks
Was ist angesagt?
(20)
CyberAgentのインフラについて メディア事業編 #catechchallenge
CyberAgentのインフラについて メディア事業編 #catechchallenge
Rootlessコンテナ
Rootlessコンテナ
KubernetesバックアップツールVeleroとちょっとした苦労話
KubernetesバックアップツールVeleroとちょっとした苦労話
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
PGOを用いたPostgreSQL on Kubernetes入門(PostgreSQL Conference Japan 2022 発表資料)
GPU仮想化最前線 - KVMGTとvirtio-gpu -
GPU仮想化最前線 - KVMGTとvirtio-gpu -
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
オンプレミス回帰の動きに備えよ ~クラウドの手法をオンプレミスでも実現するには~(CloudNative Days Fukuoka 2023 発表資料)
コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門
root権限無しでKubernetesを動かす
root権限無しでKubernetesを動かす
AvailabilityZoneとHostAggregate
AvailabilityZoneとHostAggregate
ゼロからはじめるKVM超入門
ゼロからはじめるKVM超入門
Stargz Snapshotter: イメージのpullを省略しcontainerdでコンテナを高速に起動する
Stargz Snapshotter: イメージのpullを省略しcontainerdでコンテナを高速に起動する
Argo CD Deep Dive
Argo CD Deep Dive
コンテナセキュリティにおける権限制御(OCHaCafe5 #3 Kubernetes のセキュリティ 発表資料)
コンテナセキュリティにおける権限制御(OCHaCafe5 #3 Kubernetes のセキュリティ 発表資料)
OpenStackをさらに”使う”技術 概要と基礎操作
OpenStackをさらに”使う”技術 概要と基礎操作
日本OpenStackユーザ会 第37回勉強会
日本OpenStackユーザ会 第37回勉強会
ML2/OVN アーキテクチャ概観
ML2/OVN アーキテクチャ概観
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
わかる!metadata.managedFields / Kubernetes Meetup Tokyo 48
大規模サービスを支えるネットワークインフラの全貌
大規模サービスを支えるネットワークインフラの全貌
Akkaで分散システム入門
Akkaで分散システム入門
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
PFNのML/DL基盤を支えるKubernetesにおける自動化 / DevOpsDays Tokyo 2021
Ähnlich wie Container Storage Interface のすべて
CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜
CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜
Masaya Aoyama
VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発
Yuta Matsumura
AKS と ACI を組み合わせて使ってみた
AKS と ACI を組み合わせて使ってみた
Hideaki Aoyagi
130329 04
130329 04
openrtm
20130329 rtm4
20130329 rtm4
openrtm
Kubernetes Operator for vSphere VM
Kubernetes Operator for vSphere VM
Masanori Nara
WebRTC on Native App
WebRTC on Native App
WebRTCConferenceJapan
成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略
Hiroshi SHIBATA
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
normalian
Node.jsアプリの開発をモダン化するために取り組んできたこと
Node.jsアプリの開発をモダン化するために取り組んできたこと
bitbank, Inc. Tokyo, Japan
Next2Dで始めるゲーム開発 - Game Development Starting with Next2D
Next2Dで始めるゲーム開発 - Game Development Starting with Next2D
Toshiyuki Ienaga
Open Source x AI
Open Source x AI
Tsukasa Kato
Osc fukuoka xAI Meetup
Osc fukuoka xAI Meetup
ru pic
AnsibleおよびDockerで始めるInfrastructure as a Code
AnsibleおよびDockerで始めるInfrastructure as a Code
Satoru Yoshida
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(DevNet編)
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(DevNet編)
シスコシステムズ合同会社
オープンソースのIoT向けスケールアウト型データベース GridDB 〜性能ベンチマーク結果とOSSを利用したビッグデータ分析環境〜
オープンソースのIoT向けスケールアウト型データベース GridDB 〜性能ベンチマーク結果とOSSを利用したビッグデータ分析環境〜
griddb
Smart Tennis Lesson Serverless Design
Smart Tennis Lesson Serverless Design
Ryuji TAKEHARA
Kube con + cloudnativecon 2017 社内報告会(外部公開用)
Kube con + cloudnativecon 2017 社内報告会(外部公開用)
Masaya Aoyama
ASP.NET vNext / Visual Studio "14" に見る .NET の未来像
ASP.NET vNext / Visual Studio "14" に見る .NET の未来像
Akira Inoue
Firefox OS and Web server
Firefox OS and Web server
Tomoaki Konno
Ähnlich wie Container Storage Interface のすべて
(20)
CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜
CI/CD Pipeline を考える 〜KubeCon 2017 + CyberAgent の最大公倍数〜
VSCodeで始めるAzure Static Web Apps開発
VSCodeで始めるAzure Static Web Apps開発
AKS と ACI を組み合わせて使ってみた
AKS と ACI を組み合わせて使ってみた
130329 04
130329 04
20130329 rtm4
20130329 rtm4
Kubernetes Operator for vSphere VM
Kubernetes Operator for vSphere VM
WebRTC on Native App
WebRTC on Native App
成長を加速する minne の技術基盤戦略
成長を加速する minne の技術基盤戦略
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
Node.jsアプリの開発をモダン化するために取り組んできたこと
Node.jsアプリの開発をモダン化するために取り組んできたこと
Next2Dで始めるゲーム開発 - Game Development Starting with Next2D
Next2Dで始めるゲーム開発 - Game Development Starting with Next2D
Open Source x AI
Open Source x AI
Osc fukuoka xAI Meetup
Osc fukuoka xAI Meetup
AnsibleおよびDockerで始めるInfrastructure as a Code
AnsibleおよびDockerで始めるInfrastructure as a Code
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(DevNet編)
Cisco Modeling Labs (CML)を使ってネットワークを学ぼう!(DevNet編)
オープンソースのIoT向けスケールアウト型データベース GridDB 〜性能ベンチマーク結果とOSSを利用したビッグデータ分析環境〜
オープンソースのIoT向けスケールアウト型データベース GridDB 〜性能ベンチマーク結果とOSSを利用したビッグデータ分析環境〜
Smart Tennis Lesson Serverless Design
Smart Tennis Lesson Serverless Design
Kube con + cloudnativecon 2017 社内報告会(外部公開用)
Kube con + cloudnativecon 2017 社内報告会(外部公開用)
ASP.NET vNext / Visual Studio "14" に見る .NET の未来像
ASP.NET vNext / Visual Studio "14" に見る .NET の未来像
Firefox OS and Web server
Firefox OS and Web server
Mehr von 祐司 伊藤
C/C++とWebAssemblyを利用したライブラリ開発
C/C++とWebAssemblyを利用したライブラリ開発
祐司 伊藤
C++からWebRTC (DataChannel)を利用する
C++からWebRTC (DataChannel)を利用する
祐司 伊藤
詳説WebAssembly
詳説WebAssembly
祐司 伊藤
シンプル Processing !
シンプル Processing !
祐司 伊藤
PROCESS WARP「プロセスがデバイス間で移動する」仕組みを作る
PROCESS WARP「プロセスがデバイス間で移動する」仕組みを作る
祐司 伊藤
PROCESS WARP
PROCESS WARP
祐司 伊藤
Webブラウザで使えるいろんな処理系
Webブラウザで使えるいろんな処理系
祐司 伊藤
PROCESS WARP
PROCESS WARP
祐司 伊藤
PIAXで作る P2Pネットワーク
PIAXで作る P2Pネットワーク
祐司 伊藤
新しい分散実行の仕組み PROCESS WARPについて
新しい分散実行の仕組み PROCESS WARPについて
祐司 伊藤
emscriptenでC/C++プログラムをwebブラウザから使うまでの難所攻略
emscriptenでC/C++プログラムをwebブラウザから使うまでの難所攻略
祐司 伊藤
Mehr von 祐司 伊藤
(11)
C/C++とWebAssemblyを利用したライブラリ開発
C/C++とWebAssemblyを利用したライブラリ開発
C++からWebRTC (DataChannel)を利用する
C++からWebRTC (DataChannel)を利用する
詳説WebAssembly
詳説WebAssembly
シンプル Processing !
シンプル Processing !
PROCESS WARP「プロセスがデバイス間で移動する」仕組みを作る
PROCESS WARP「プロセスがデバイス間で移動する」仕組みを作る
PROCESS WARP
PROCESS WARP
Webブラウザで使えるいろんな処理系
Webブラウザで使えるいろんな処理系
PROCESS WARP
PROCESS WARP
PIAXで作る P2Pネットワーク
PIAXで作る P2Pネットワーク
新しい分散実行の仕組み PROCESS WARPについて
新しい分散実行の仕組み PROCESS WARPについて
emscriptenでC/C++プログラムをwebブラウザから使うまでの難所攻略
emscriptenでC/C++プログラムをwebブラウザから使うまでの難所攻略
Kürzlich hochgeladen
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
Toru Tamaki
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
Toru Tamaki
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Hiroshi Tomioka
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
sn679259
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
CRI Japan, Inc.
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
atsushi061452
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
CRI Japan, Inc.
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
WSO2
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
Kürzlich hochgeladen
(11)
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
Container Storage Interface のすべて
1.
Container Storage Interface のすべて KubeFest
Tokyo 2020 2020/06/13 サイボウズ株式会社 Yuji Ito
2.
自己紹介 ▌伊藤祐司 ⚫ 分散システムにかかわる仕事がしたく、2019年10月 からNecoチームでデータセンタの開発に参画している。 ▌サイボウズ株式会社 Necoチーム ⚫
自社データセンタに1000ノード規模のKubernetes クラスタを構築する。 ⚫ ストレージ専従ではなく、約1ヵ月ごとに班を変えながら 満遍なく知識を蓄える。 2
3.
本発表の目的 ▌Container Storage Interface
(CSI) について知ってもらう。 ⚫ 概要 ⚫ どのような機能が実装可能なのか ▌CSIドライバの開発を行うための情報を提供する。 ⚫ CSIドライバの開発方法 ⚫ CSIドライバのテスト方法 3
4.
発表の流れ ▌PV, PVC, SC
のおさらい ▌CSIの概要 ▌CSI・CSIドライバの構造 ▌最小限のCSIドライバの実装 ▌CSIドライバのテスト ▌オプション機能の拡張方法 ▌ドキュメント・参考情報 ▌まとめ 4
5.
metadata: name: pv01 spec: capacity: ... storageClassName:
sc01 PV: Persistent Volume metadata: name: sc01 provisioner: ... parameters: ... SC: Storage Class metadata: name: pvc01 spec: resources: ... storageClassName: sc01 PVC: Persistent Volume Claim PV, PVC, SC のおさらい 5 metadata: name: pod01 spec: containers: volumes: - name: volume01 persistentVolumeClaim: claimName: pvc01 1. PodおよびPodが利用する volumeをPVCとして定義 0. (前準備) SCでPVをグループ分け することが可能 ストレージ システム 2. Podから利用可能なvolume (ファイルシステムまたはRawブロックデバイス) ごとにPVを定義し、関連付ける 4. PVCに関連付けられた PVのvolumeを用い、 Podが起動 3. PVCで定義した条件に マッチするPVがPVCに 関連付けられる
6.
CSIの概要 6
7.
CSIの定義に 従った拡張 CSIとはなんなのか ▌各種Container Orchestrators (CO)において、 ストレージ機能を拡張するための 統一されたインタフェース。 ▌PVCの変更に対し、PV・スト レージを自動で作成・拡張・削 除するなどの仕組みを追加可能。 7 ストレージ システム CSIドライバ K8s CSI
sidecar container 開発対象となるCSIドライバはKubernetesから 独立しており (out of tree) 誰でも開発可能 監視 作成・変更 操作 Kubernetes プロジェクトから 提供されている CSIで定義されたgRPC Kubernetesに絞って説明
8.
CSI関連の用語 ▌Volume CSIを通して利用可能になるストレージの単位。ファイルシステムまたはブロックデバイ スのこと。 KubernetesのPVから指示される実際に利用可能な領域に対応。 ▌CSIドライバ /
CSIDriver オブジェクト CSIドライバ: CSIを利用するドライバ全体。 CSIDriver: KubernetesにCSIの情報を渡すためのオブジェクト。 ▌Node Plugin 各KubernetesのNode上で動く、CSIドライバのプログラム及びコンテナ。 8
9.
CSIを利用して実現できる機能 ▌ファイルシステム, Rawブロックデバイスを扱う。 ▌PVCの作成・削除に対応し、PV・ストレージを自動で割当て、削除する。 - Dynamic
Provisioning ▌PVCで定義される容量の変更に対応し、ストレージを拡張する。 - Volume Expansion ▌Podの終了とともに開放される短期的な領域の割り当て。 9
10.
CSIを利用して実現できる機能 (続き) ▌既存のPVをコピーしたPVを作成する。 ▌PVのSnapshotを作成し、それをコピーしたPVを作成する。 ▌ストレージシステムが利用できるRackやRegionが制限される場合に、 その状態に応じてPodを作る場所を制御する。 10 CSIドライバを開発することで、前述のような機能を Kubernetesクラスタのサービスとして提供可能
11.
CSI・CSIドライバの構造 11
12.
CSIドライバに関連する主な要素 12 CSIDriver (Object) 当該CSIドライバの存在と機能をKubernetes に伝える Controller
Plugin の Pod (Deployment/StatefulSet) Node Plugin の Pod (DaemonSet) Controller Plugin コンテナ ・ Controller サービス ・ Identity サービス K8s CSI の sidecar コンテナ Node Plugin コンテナ ・ Node サービス ・ Identity サービス Kubernetes プロジェクトから 提供されている K8s CSI の sidecar コンテナ Kubernetes プロジェクトから 提供されている Kubernetes プロジェクトから 提供されている 開発対象
13.
apiVersion: v1 kind: Pod metadata: name:
pod-name spec: containers: - image: container1:latest name: container-1 volumeMounts: - mountPath: /mnt/share name: shared-volume - image: container2:latest name: container-2 volumeMounts: - mountPath: /mnt/share name: shared-volume volumes: - name: shared-volume emptyDir: {} sidecarのおさらい ▌複数のコンテナを内包するPod ▌コンテナ間で、Volumeの共有や Volume内の Unix Domain Socket (USD) を利用した通信 が可能 13 Pod Container#2Container#1 Container#1 Container#2 Volume
14.
Kubernetesプロジェクトから提供される主要な CSI sidecar ▌external-provisioner Dynamic
Provisioning 機能を提供する場合に利用する。 ▌livenessprobe CSIドライバの状態を Kubernetes に伝えるため、 Readiness Probe 機能と連 携する。 ▌node-driver-registrar Kubernetes がNodeを認識するための CSINode オブジェクトを作成する。 14
15.
Kubernetes の Node CSIに関するコンポーネントの連携 15 Controller
Plugin の Pod (Deployment/StatefulSet) Controller Plugin コンテナ ・ Controller サービス ・ Identity サービス K8s CSI の sidecar コンテナ Node Plugin の Pod (DaemonSet) Node Plugin コンテナ ・ Node サービス ・ Identity サービス K8s CSI の sidecar コンテナ API Server gRPC Unix Domain Socket gRPC Unix Domain Socket Kubelet Volume Volume詳しくは、CSI Volume Plugins in Kubernetes Design Doc を参照 作成 利用
16.
最小限のCSIドライバの実装 16
17.
CSIのspecについて ▌CSIドライバが実装するプロシージャの 細かい仕様が記載されている。 ⚫ 引数の内容 ⚫ 期待する戻り値 ⚫
エラー時の戻り値 ▌https://github.com/ container-storage-interface/ spec/blob/master/spec.md 17
18.
最小限のCSIドライバの状態遷移 ▌host pathを用意するだけの最小限のCSIドライバを例示する。 ▌構成要素はNodeサービスとIdentityサービスだけ。 18 Podの起動準備 完了 PUBLISHED NodePublishVolume プロシージャの呼び出し NodeUnpublishVolumeプロシージャの呼び出し この時点でPodが動作する Podの削除処理がトリガになる
19.
サービスのスケルトンを生成 ▌各gRPCサービス用のコードを生成。 ⚫ gRPCの定義は以下のリポジトリで公開されている。 https://github.com/container-storage- interface/spec/blob/master/csi.proto ⚫ 言語について制限は無いが、Kubernetesの機能を利用する場合、ライブラリが 充実しているgo言語が無難。 19 ##
protocコマンドをダウンロード・展開しておく ## csi.protoフィルをダウンロードしておく GO111MODULE=on go get github.com/golang/protobuf/protoc-gen-go protoc -I=. --go_out=plugins=grpc:. csi.proto
20.
生成されたスケルトンについて ▌csi.pb.goが生成される ▌Identity, Controller, Node
の各サービスで実装するべきプロシー ジャが定義されている。 20 type IdentityServer interface { GetPluginInfo(context.Context, *GetPluginInfoRequest) (*GetPluginInfoResponse, error) ... type ControllerServer interface { CreateVolume(context.Context, *CreateVolumeRequest) (*CreateVolumeResponse, error) ... type NodeServer interface { NodeStageVolume(context.Context, *NodeStageVolumeRequest) (*NodeStageVolumeResponse, ... ...
21.
ドライバが提供する機能とcapability ▌CSIドライバで提供したい機能に応じて実装するgRPCメソッドは異なる。 ▌gRPCのAPIを通じて、ドライバ・コンポーネントが提供する機能を Kubernetes や CSI
sidecar に伝える。 ⚫ GetPluginCapabilities (Identityサービス) ⚫ ControllerGetCapabilities (Controllerサービス) ⚫ NodeGetCapabilities (Nodeサービス) 21
22.
func (ns *nodeServer)
NodeGetCapabilities(ctx context.Context, req *csi.NodeGetCapabilitiesRequest) (*csi.NodeGetCapabilitiesResponse, error) { return &csi.NodeGetCapabilitiesResponse{ Capabilities: []*csi.NodeServiceCapability{ { Type: &csi.NodeServiceCapability_Rpc{ Rpc: &csi.NodeServiceCapability_RPC{ Type: csi.NodeServiceCapability_RPC_STAGE_UNSTAGE_VOLUME, }, }, }, ... }, }, nil } Capabilityの設定例 22https://github.com/kubernetes-csi/csi-driver-host-path/blob/v1.3.0/pkg/hostpath/nodeserver.go#L279-L299 CSIドライバで提供する機能に応じ、 capabilityを列挙する
23.
NodePublishVolumeの例 ▌領域をPodが利用可能な状態にする。 ⚫ ファイルシステムの場合、指定されたpathにファイルシステムをマウントする。 ⚫ Rawブロックデバイスの場合、指定されたpathにデバイスファイルを用意する。 23 targetPath
:= req.GetTargetPath() ... if req.GetVolumeCapability().GetBlock() != nil { ... loopDevice, err := volPathHandler.GetLoopDevice(vol.VolPath) ... mount.New("").Mount(loopDevice, targetPath, "", options) ... } ... return &csi.NodePublishVolumeResponse{}, nil https://github.com/kubernetes-csi/csi-driver-host-path/blob/v1.3.0/pkg/hostpath/nodeserver.go#L50-L189 loop deviceを作成している 引数で渡された場所に loop device をマウントしている
24.
プロシージャ実装時の注意点 ▌CSIプロシージャは冪等性を満たすように実装する必要がある。 ⚫ Kubernetes 側でプロシージャの成否を取得できなかった場合などに、再度プロ シージャを呼び出すことを許容するため。 ⚫
capacityやparameterが許容可能であれば、正常終了のレスポンスを返す。 24
25.
CSIDriverの例 ▌CSIドライバの存在と機能を Kubernetes に伝える 25 apiVersion:
storage.k8s.io/v1beta1 kind: CSIDriver metadata: name: topolvm.cybozu.com spec: attachRequired: true podInfoOnMount: true volumeLifecycleModes: - Persistent - Ephemeral 該当CSIドライバが提供している機能についての定義 https://github.com/cybozu-go/topolvm/blob/v0.4.8/deploy/manifests/controller.yaml#L2-L11 該当CSIドライバが Kubernetes に要求する 挙動についての定義
26.
CSIドライバのテスト 26
27.
CSI Driver Sanity
Tester ▌Kubernetes プロジェクトから提供されるCSIドライバのテストツール。 ⚫ https://github.com/kubernetes-csi/csi- test/tree/master/pkg/sanity ▌CSIドライバを起動した状態で、gRPC の応答が正しく実装されているか をテストしてくれる。 ▌コマンドラインから起動 / Ginkgo (Go言語のTesting Framework) から利用。 27 Tip: 手戻りをなくすため、最初からテストを実行できるようにする。
28.
Sanity Testerの利用例 28 var _
= Describe("TopoLVM", func() { Context("CSI sanity", func() { ... テスト対象のCSIドライバを起動しておく sanity.GinkgoTest(&sanity.Config{ Address: "/tmp/topolvm/worker1/plugins/topolvm.cybozu.com/node/csi-topolvm.sock", ControllerAddress: "/tmp/topolvm/worker1/plugins/topolvm.cybozu.com/controller/csi-topolvm.sock", TargetPath: "/tmp/topolvm/worker1/plugins/topolvm.cybozu.com/node/mountdir", StagingPath: "/tmp/topolvm/worker1/plugins/topolvm.cybozu.com/node/stagingdir", TestVolumeSize: 1073741824, IDGen: &sanity.DefaultIDGenerator{}, }) }) }) https://github.com/cybozu-go/topolvm/blob/v0.4.8/e2e/suite_test.go#L99-L137 Controller と Node の両方のエンドポイントに アクセス可能な環境で実行
29.
Sanity Tester 以外のテスト ▌Sanity
Testerだけでは全てのテストをカバーしているわけではない。 ▌実際にストレージが使えるかのE2Eテストを行っていない。 ⚫ Cybozuで開発しているCSIドライバ (TopoLVM) では、 kindを利用したE2E テストを別途実施している。 ▌個々のCSIドライバの実装に関する単体テストも必要に応じて追加する。 29
30.
オプション機能の拡張方法 30
31.
Volume Expansion 機能を提供する ▌定義するCapabilities ⚫
EXPAND_VOLUME (ControllerCapabilities) ⚫ EXPAND_VOLUME (NodeCapabilities) ▌実装するメソッド ⚫ ControllerExpandVolume (Controllerサービス) ⚫ NodeExpandVolume (Nodeサービス) ▌Sidecarとして external-resizer を追加 ▌StorageClass に allowVolumeExpansion を定義 31
32.
ControllerExpandVolumeの例 ▌サイズの変更が可能かどうかを判定する。 requestGb, err :=
convertRequestCapacity(req.GetCapacityRange().GetRequiredBytes(), req.GetCapacityRange().GetLimitBytes()) ... if requestGb <= currentGb { return &csi.ControllerExpandVolumeResponse{ CapacityBytes: currentGb << 30, NodeExpansionRequired: true, }, nil } ... if capacity < (requestGb<<30 - currentGb<<30) { return nil, status.Error(codes.Internal, "not enough space") } ... return &csi.ControllerExpandVolumeResponse{ CapacityBytes: requestGb << 30, NodeExpansionRequired: true, }, nil 領域の縮小が要求される場合もある 領域の拡張を許容する場合 NodeExpansionRequired が true の場合、 Node の NodeExpandVolume (次スライド) が呼ばれる https://github.com/cybozu-go/topolvm/blob/v0.4.8/driver/controller.go#L310-L376 32
33.
NodeExpandVolumeの例 ▌各ノード上で、サイズ変更後のVolumeを利用可能にする。 ⚫ TopoLVMではlvmd (Kubernetes
node 上の daemon) でlvを拡張してい るため、NodeExpandVolume ではファイルシステムの拡張のみを行う。 33 vpath := req.GetVolumePath() ... err = fs.Resize(vpath) ... return &csi.NodeExpandVolumeResponse{}, nil https://github.com/cybozu-go/topolvm/blob/v0.4.8/driver/node.go#L414-L498
34.
Dynamic Provisioning 機能を提供する ▌定義するCapabilities ⚫
CREATE_DELETE_VOLUME (ControllerCapabilities) ▌実装するメソッド ⚫ CreateVolume (Controllerサービス) ⚫ DeleteVolume (Controllerサービス) ▌Sidecarとして external-provisioner を追加 ▌StorageClass の provisioner と、GetPluginInfo で戻すnameの 値を同じにしておく。 34 詳しい実装はTopoLVMを参照
35.
ドキュメント・参考情報 35
36.
CSIのバージョンについて ▌CSIのバージョンはKubernetesと 独立している。 ▌Kubernetes v1.13 のタイミン グで
CSIはGAとなりバージョンが 1.0になった。 36https://github.com/container-storage-interface/spec/releases
37.
CSI sidecarのバージョンについて ▌各sidecarのバージョンはspecか ら独立して管理される ⚫ CSIがGAになった後に追加された機 能もあり、機能ごとにalpha,
beta, GAの状況は異なる ▌Kubernetes, spec, sidecar のバージョンの対応については、各 sidecarのReleasesに記載があ る。 37https://github.com/kubernetes-csi/external-provisioner/releases
38.
参考となるCSIドライバ ▌sig-storage でCSIドライバのサンプルを公開している。 ▌https://github.com/kubernetes-csi/ ⚫ csi-driver-host-path ⚫
csi-driver-nfs ⚫ csi-driver-smb 38
39.
既存のCSIドライバ ▌以下のページより既存のCSIドライバ一覧が探すことが可能。 ⚫ https://kubernetes-csi.github.io/docs/drivers.html ▌サイボウズでもTopoLVMというCSIドライバを開発・公開している。 ⚫ 各NodeのLVM領域を動的に提供する。 ⚫
Topologyを考慮し、ストレージ容量の空きが多いNodeにPodが優先配置され る。 ⚫ https://blog.cybozu.io/entry/2019/11/08/090000 39
40.
ドキュメント ▌Container Storage Interface
(CSI) のspec https://github.com/container-storage-interface/spec/ ▌CSI Volume Plugins in Kubernetes Design Doc https://github.com/kubernetes/community/blob/master/contribut ors/design-proposals/storage/container-storage-interface.md ▌Kubernetes CSI Developer Documentation https://kubernetes-csi.github.io/docs/introduction.html ▌各sidecarのREADME.mdにオプションなどが記載されている 40
41.
まとめ ▌シンプルなCSIドライバを例に、実装方法ついて説明した。 ⚫ まだたくさんのドキュメントを読む必要がある。 ⚫ 特にCSIのspecは、詳細まで記述してある。 ▌実装時の注意点・Tipについて説明した。 ⚫
CSIドライバで提供したい機能に合わせて利用するsidecarや実装するプロシー ジャが変わる。 ⚫ CSIドライバのプロシージャは冪等性を満たす必要がある。 ⚫ 開発初期からSanity Testerを利用し、手戻りを防ぐ。 41
Jetzt herunterladen