コンテナの標準仕様
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
]
開始行:
「[[.NET 開発基盤部会 Wiki>http://dotnetdevelopmentinfras...
-[[戻る>Kubernetes]]
*目次 [#g57a4ed2]
#contents
*概要 [#fb781ad1]
-コンテナの標準仕様が色々策定されている。
-[[Docker]]、[[Kubernetes]]隆盛のバックグラウンド
*各種標準仕様 [#v5995e49]
**CRI(Container Runtime Interface) [#r82f49bd]
コンテナ・オーケストレーション・ツールとコンテナランタイ...
-kubeletとが通信するためのインターフェースを規定
-2016年12月にKubernetes 1.5のαリリースでAPIが実装された。
-これにより、コンテナランタイムをコンパチできるようになっ...
-OpenShiftは、CRI-O をv4.0からデフォルトに採用する予定。
**OCI(Open Container Initiative) [#y9807a95]
-「コンテナ」のフォーマット・ランタイムの標準化~
を目的として設立されたイニシアチブ(組織)である。
-Linux Foundationプロジェクトの1つ。
***Runtime Specification [#q4dcab6d]
コンテナランタイムの標準仕様
-Linuxコンテナの標準仕様
--Default Filesystem
--Namespace
--cgropus
--など
-Linuxコンテナ以外の標準仕様
--Solaris
--Windows
--Virtual Machine
***Image Format Specification [#tc1bb7a5]
コンテナイメージの標準仕様
-Image Manifest
-Image Index
-Image Layout
-Filesystem Layout
-Image Configuration
***Distribution Specification [#ec6eed18]
コンテナイメージ配布の標準仕様
※ 仕様の策定が止まっている?
**CSI(Container Storage Interface) [#f78e2849]
***概要 [#qc560132]
コンテナ・オーケストレーション・ツールとストレージの間のI...
-2018年11月にv1.0に到達
-外部ストレージを開発するベンダーが独立に~
ストレージ側の機能追加や修正を行えることを目指す。
***機能 [#ha065a72]
代表的な機能
-Volume Expansion
Volumeのサイズ拡張
--.spec.resources.requests.storageの値を~
変更することでPVC/PVのサイズを拡張する。
--縮小はサポートしない。
-Raw Block Volume~
File SystemでフォーマットしていないVolume
--.spec.volumeModeにBlockを設定したPVCのManifestをデプロイ
--File Systemはないので通常のVolumeのようにマウントされな...
-Volume Cloning GA~
Volumeのクローン(コピー)
--巨大なデータが格納されたVolumeをコピーする。
--必ずクローン元のPVCより大きなサイズを指定する。
-Volume Snapshot&Restore~
VolumeのSnapshotとRestore
--PVCではなく、VolumeSnapshotをデプロイしてスナップショッ...
--リストアは、PVCを作成する際に、VolumeSnapshotを指定する...
-Topology~
AZなどのトポロジー指定
--Availability Zoneを意識したPodの分散配置が可能に。
--PVC/PVで作成されるVolumeも配置先を指定できる。
***コンテナ・オーケストレーション・ツール側 [#ia2bd9c0]
3つのサイドカーコンテナを提供する必要がある。
CSIエンドポイントに対して
-external-attacher~
VolumeAttachmentオブジェクトを監視し、~
ボリュームをノードにアタッチする命令を行う。
-external-provisoner~
PersistentVolumeClaimオブジェクトを監視し、~
ボリューム作成や削除の命令を行う。
-driver-register
--CSI driverをkubeletに登録する。
--CSI driverとは
---コントローラ・ドライバとノード・ドライバ、製品個別CSP...
---機能:アタッチ・デタッチ、プロビジョン、マウント、ワー...
***ストレージ・ベンダー側 [#ic2f2283]
コンテナ・オーケストレーション・ツールの~
問い合わせに対応3つのサービスを実装する必要がある。
-Identity Service~
Capability/Health/その他メタデータなどの問い合わせを行う...
-Controller Service~
ボリュームやスナップショットの作成・削除・一覧表示を行う...
-Node Service~
ボリュームをマウントする際に呼び出される機能を実装。
**CNI(Container Network Interface) [#j757b1a3]
***概要と動作原理 [#qcc9fe66]
-コンテナがネットワークに接続するI/Fの標準仕様とリファレ...
-CNCF(Cloud Native Computing Foundation)にホストされた...
-動作原理
--JSONフォーマットのネットワーク設定が標準入力とする。
--[[ネットワーク設定>#z3ad2228]]が環境変数としてプラグイ...
--ブラグインが渡された情報に基づいて命令を実行する。
***サポートすべきオペレーション [#z5dc2b4d]
-ADD~
コンテナをネットワークへ追加
-DEL~
コンテナをネットワークから削除
-CHECK~
コンテナのネットワークをチェック
-VERSION~
バージョンの確認
***渡されるネットワーク設定 [#z3ad2228]
-cniVersion~
CNI Specificationのバージョン
-name~
ネットワーク名
-type~
実行するプラグインのファイル名
-args~
コンテナランタイムより与えられる追加情報
-ipMasq~
IPマスカレードの設定
-ipam~
IPAM設定のための情報
--type~
実行するIPAMプラグインのファイル名
-dns~
DNS設定のための情報
--name servers~
DNSネームサーバのリスト
--domain~
ローカルドメインの指定
--search~
サーチドメインのリスト
--options~
リゾルバに渡すオプションのリスト
*代表的なプラグイン [#b336a93d]
**CSI [#d6359315]
-CSI以前は、in-treeか、out-of-tree(FlexVolume)のVolume ...
-以下のようなストレージを使用できるよう、個別のプラグイン...
--高速なローカル・ストレージ(Ceph)
---ワーカ・ノードのローカル・ストレージをK8sのPersistentV...
---NVMe SSDの性能を活かして、高IOPSが必要なミドルウェアの...
---可用性はミドルウェアのレプリケーションで担保する。
--高可用ネットワークストレージ
---ネットワーク経由で利用可能なストレージをK8sのPersisten...
---ステートフルなアプリケーションの永続化ボリュームとして...
--大容量な分散オブジェクトストレージ
---ネットワーク経由で利用可能なストレージをAmazon S3互換...
---文書、画像、動画などの大容量データを保存
***TopoLVM [#yd14fed6]
Cybozuが自社DCでKubernetesを運用するために作成した、~
K8sのPodが高速なローカル・ストレージを有効に利用するCSI。
-[[LVM (Logical Volume Manager)>WindowsユーザがLinuxに乗...
-トポロジを考慮したダイナミック・プロビジョニング
-ノードの空き容量に応じたスケジューリング
***Rook [#j846d5f7]
-既存のストレージ機能を持つソフトウェアをK8sと統合するこ...
-例えば、分散ストレージを実現するCephなどと組み合わせて使...
***, etc. [#d76985d0]
**CNI [#c0ceb169]
***kubenet [#ea382ca6]
ノードにIPアドレスを割り当てて、配下のポッドにはNAT変換で...
***Weave Net [#lf394ea8]
1つのポッドにつき1つのIPアドレスを提供するシンプルなネッ...
***Azure CNI [#pc39eb67]
[[AKSもなにやら、専用のCNIを持っているというようなことを...
-[[kubenet>#ea382ca6]]と選択できる。
-Azure仮想ネットワークのサブネットからIPアドレスが割り当...
-配下のポッドの最大数に合わせてIPアドレスを事前予約する。
***Flannel [#k95f8abb]
L2 over L3ネットワーキング (デフォルトではVXLAN) で、Pod...
***Calico [#s168d218]
-BGPによるピュアL3ネットワーキングで、Pod間の到達性を確保。
-Kubernetes Network Policyに対応しているCNI
***Canal [#i68a8f5a]
[[Calico>#s168d218]]をKubernetes Network Policy機能のみで...
***Kube-Router [#h8e985ac]
1つのgoバイナリでKubernetesのネットワークまわりを全部処理...
-Kubernetes Network Policyの実装に加えてServiceの実装置き...
-ノード内はFlannelのようにブリッジ
-ノード間はBGPを使ったルーティング
***Romana [#a11ced9e]
L3の仮想ネットワーク + Kubernetes Network Policy制御
***NSX-T [#n099abf0]
-マルチ・クラウドおよびマルチ・ハイパーバイザー環境向けの~
ネットワーク仮想化とセキュリティのプラットフォーム
-異種のエンドポイントやテクノロジ・スタックを持つ~
新興のアプリケーション・フレームワークやアーキテクチャに...
-NSX-T Container Plug-in(NCP)~
コンテナベースのCaaS/PaaSプラットフォームとの統合を提供
***Coil [#k549e9e6]
Cybozuが自社DCでKubernetesを運用するために作成したCNI。
***, etc. [#m1d82dbf]
*参考 [#vd63d359]
**Wikipedia [#q5c7597c]
-Open Container Initiative~
https://ja.wikipedia.org/wiki/Open_Container_Initiative
-Cloud Native Computing Foundation~
https://ja.wikipedia.org/wiki/Cloud_Native_Computing_Foun...
**Qiita [#c194e046]
-してみた件
--Docker・Kubernetes周辺の動向を整理してみた件~
https://qiita.com/mamomamo/items/e4e9e44d9f77cd72b70a
--コンテナの標準仕様について調査してみた件~
https://qiita.com/mamomamo/items/448a8edf6d4ccfc22bbd
--コンテナランタイムの動向を整理してみた件~
https://qiita.com/mamomamo/items/ed5db2ab1555078f8a24
-CNCF主要プロジェクト動向まとめ
--2019年1月~
https://qiita.com/zembutsu/items/57a1a6270491e8b2594f
-CNCF CNI プラグイン~
https://qiita.com/hichihara/items/54ff9aeff476bf463509
-Kubernetes のストレージについて調べる~
https://qiita.com/toshihirock/items/0c91bbedf0e144acf6fc
終了行:
「[[.NET 開発基盤部会 Wiki>http://dotnetdevelopmentinfras...
-[[戻る>Kubernetes]]
*目次 [#g57a4ed2]
#contents
*概要 [#fb781ad1]
-コンテナの標準仕様が色々策定されている。
-[[Docker]]、[[Kubernetes]]隆盛のバックグラウンド
*各種標準仕様 [#v5995e49]
**CRI(Container Runtime Interface) [#r82f49bd]
コンテナ・オーケストレーション・ツールとコンテナランタイ...
-kubeletとが通信するためのインターフェースを規定
-2016年12月にKubernetes 1.5のαリリースでAPIが実装された。
-これにより、コンテナランタイムをコンパチできるようになっ...
-OpenShiftは、CRI-O をv4.0からデフォルトに採用する予定。
**OCI(Open Container Initiative) [#y9807a95]
-「コンテナ」のフォーマット・ランタイムの標準化~
を目的として設立されたイニシアチブ(組織)である。
-Linux Foundationプロジェクトの1つ。
***Runtime Specification [#q4dcab6d]
コンテナランタイムの標準仕様
-Linuxコンテナの標準仕様
--Default Filesystem
--Namespace
--cgropus
--など
-Linuxコンテナ以外の標準仕様
--Solaris
--Windows
--Virtual Machine
***Image Format Specification [#tc1bb7a5]
コンテナイメージの標準仕様
-Image Manifest
-Image Index
-Image Layout
-Filesystem Layout
-Image Configuration
***Distribution Specification [#ec6eed18]
コンテナイメージ配布の標準仕様
※ 仕様の策定が止まっている?
**CSI(Container Storage Interface) [#f78e2849]
***概要 [#qc560132]
コンテナ・オーケストレーション・ツールとストレージの間のI...
-2018年11月にv1.0に到達
-外部ストレージを開発するベンダーが独立に~
ストレージ側の機能追加や修正を行えることを目指す。
***機能 [#ha065a72]
代表的な機能
-Volume Expansion
Volumeのサイズ拡張
--.spec.resources.requests.storageの値を~
変更することでPVC/PVのサイズを拡張する。
--縮小はサポートしない。
-Raw Block Volume~
File SystemでフォーマットしていないVolume
--.spec.volumeModeにBlockを設定したPVCのManifestをデプロイ
--File Systemはないので通常のVolumeのようにマウントされな...
-Volume Cloning GA~
Volumeのクローン(コピー)
--巨大なデータが格納されたVolumeをコピーする。
--必ずクローン元のPVCより大きなサイズを指定する。
-Volume Snapshot&Restore~
VolumeのSnapshotとRestore
--PVCではなく、VolumeSnapshotをデプロイしてスナップショッ...
--リストアは、PVCを作成する際に、VolumeSnapshotを指定する...
-Topology~
AZなどのトポロジー指定
--Availability Zoneを意識したPodの分散配置が可能に。
--PVC/PVで作成されるVolumeも配置先を指定できる。
***コンテナ・オーケストレーション・ツール側 [#ia2bd9c0]
3つのサイドカーコンテナを提供する必要がある。
CSIエンドポイントに対して
-external-attacher~
VolumeAttachmentオブジェクトを監視し、~
ボリュームをノードにアタッチする命令を行う。
-external-provisoner~
PersistentVolumeClaimオブジェクトを監視し、~
ボリューム作成や削除の命令を行う。
-driver-register
--CSI driverをkubeletに登録する。
--CSI driverとは
---コントローラ・ドライバとノード・ドライバ、製品個別CSP...
---機能:アタッチ・デタッチ、プロビジョン、マウント、ワー...
***ストレージ・ベンダー側 [#ic2f2283]
コンテナ・オーケストレーション・ツールの~
問い合わせに対応3つのサービスを実装する必要がある。
-Identity Service~
Capability/Health/その他メタデータなどの問い合わせを行う...
-Controller Service~
ボリュームやスナップショットの作成・削除・一覧表示を行う...
-Node Service~
ボリュームをマウントする際に呼び出される機能を実装。
**CNI(Container Network Interface) [#j757b1a3]
***概要と動作原理 [#qcc9fe66]
-コンテナがネットワークに接続するI/Fの標準仕様とリファレ...
-CNCF(Cloud Native Computing Foundation)にホストされた...
-動作原理
--JSONフォーマットのネットワーク設定が標準入力とする。
--[[ネットワーク設定>#z3ad2228]]が環境変数としてプラグイ...
--ブラグインが渡された情報に基づいて命令を実行する。
***サポートすべきオペレーション [#z5dc2b4d]
-ADD~
コンテナをネットワークへ追加
-DEL~
コンテナをネットワークから削除
-CHECK~
コンテナのネットワークをチェック
-VERSION~
バージョンの確認
***渡されるネットワーク設定 [#z3ad2228]
-cniVersion~
CNI Specificationのバージョン
-name~
ネットワーク名
-type~
実行するプラグインのファイル名
-args~
コンテナランタイムより与えられる追加情報
-ipMasq~
IPマスカレードの設定
-ipam~
IPAM設定のための情報
--type~
実行するIPAMプラグインのファイル名
-dns~
DNS設定のための情報
--name servers~
DNSネームサーバのリスト
--domain~
ローカルドメインの指定
--search~
サーチドメインのリスト
--options~
リゾルバに渡すオプションのリスト
*代表的なプラグイン [#b336a93d]
**CSI [#d6359315]
-CSI以前は、in-treeか、out-of-tree(FlexVolume)のVolume ...
-以下のようなストレージを使用できるよう、個別のプラグイン...
--高速なローカル・ストレージ(Ceph)
---ワーカ・ノードのローカル・ストレージをK8sのPersistentV...
---NVMe SSDの性能を活かして、高IOPSが必要なミドルウェアの...
---可用性はミドルウェアのレプリケーションで担保する。
--高可用ネットワークストレージ
---ネットワーク経由で利用可能なストレージをK8sのPersisten...
---ステートフルなアプリケーションの永続化ボリュームとして...
--大容量な分散オブジェクトストレージ
---ネットワーク経由で利用可能なストレージをAmazon S3互換...
---文書、画像、動画などの大容量データを保存
***TopoLVM [#yd14fed6]
Cybozuが自社DCでKubernetesを運用するために作成した、~
K8sのPodが高速なローカル・ストレージを有効に利用するCSI。
-[[LVM (Logical Volume Manager)>WindowsユーザがLinuxに乗...
-トポロジを考慮したダイナミック・プロビジョニング
-ノードの空き容量に応じたスケジューリング
***Rook [#j846d5f7]
-既存のストレージ機能を持つソフトウェアをK8sと統合するこ...
-例えば、分散ストレージを実現するCephなどと組み合わせて使...
***, etc. [#d76985d0]
**CNI [#c0ceb169]
***kubenet [#ea382ca6]
ノードにIPアドレスを割り当てて、配下のポッドにはNAT変換で...
***Weave Net [#lf394ea8]
1つのポッドにつき1つのIPアドレスを提供するシンプルなネッ...
***Azure CNI [#pc39eb67]
[[AKSもなにやら、専用のCNIを持っているというようなことを...
-[[kubenet>#ea382ca6]]と選択できる。
-Azure仮想ネットワークのサブネットからIPアドレスが割り当...
-配下のポッドの最大数に合わせてIPアドレスを事前予約する。
***Flannel [#k95f8abb]
L2 over L3ネットワーキング (デフォルトではVXLAN) で、Pod...
***Calico [#s168d218]
-BGPによるピュアL3ネットワーキングで、Pod間の到達性を確保。
-Kubernetes Network Policyに対応しているCNI
***Canal [#i68a8f5a]
[[Calico>#s168d218]]をKubernetes Network Policy機能のみで...
***Kube-Router [#h8e985ac]
1つのgoバイナリでKubernetesのネットワークまわりを全部処理...
-Kubernetes Network Policyの実装に加えてServiceの実装置き...
-ノード内はFlannelのようにブリッジ
-ノード間はBGPを使ったルーティング
***Romana [#a11ced9e]
L3の仮想ネットワーク + Kubernetes Network Policy制御
***NSX-T [#n099abf0]
-マルチ・クラウドおよびマルチ・ハイパーバイザー環境向けの~
ネットワーク仮想化とセキュリティのプラットフォーム
-異種のエンドポイントやテクノロジ・スタックを持つ~
新興のアプリケーション・フレームワークやアーキテクチャに...
-NSX-T Container Plug-in(NCP)~
コンテナベースのCaaS/PaaSプラットフォームとの統合を提供
***Coil [#k549e9e6]
Cybozuが自社DCでKubernetesを運用するために作成したCNI。
***, etc. [#m1d82dbf]
*参考 [#vd63d359]
**Wikipedia [#q5c7597c]
-Open Container Initiative~
https://ja.wikipedia.org/wiki/Open_Container_Initiative
-Cloud Native Computing Foundation~
https://ja.wikipedia.org/wiki/Cloud_Native_Computing_Foun...
**Qiita [#c194e046]
-してみた件
--Docker・Kubernetes周辺の動向を整理してみた件~
https://qiita.com/mamomamo/items/e4e9e44d9f77cd72b70a
--コンテナの標準仕様について調査してみた件~
https://qiita.com/mamomamo/items/448a8edf6d4ccfc22bbd
--コンテナランタイムの動向を整理してみた件~
https://qiita.com/mamomamo/items/ed5db2ab1555078f8a24
-CNCF主要プロジェクト動向まとめ
--2019年1月~
https://qiita.com/zembutsu/items/57a1a6270491e8b2594f
-CNCF CNI プラグイン~
https://qiita.com/hichihara/items/54ff9aeff476bf463509
-Kubernetes のストレージについて調べる~
https://qiita.com/toshihirock/items/0c91bbedf0e144acf6fc
ページ名: