.NET 開発基盤部会 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

  • コンテナの標準仕様が色々策定されている。
  • DockerKubernetes隆盛のバックグラウンド

各種標準仕様

CRI(Container Runtime Interface)

コンテナ・オーケストレーション・ツールとコンテナランタイムの間のI/Fの標準仕様

  • kubeletとが通信するためのインターフェースを規定
  • 2016年12月にKubernetes 1.5のαリリースでAPIが実装された。
  • これにより、コンテナランタイムをコンパチできるようになった。
  • OpenShiftは、CRI-O をv4.0からデフォルトに採用する予定。

OCI(Open Container Initiative)

  • 「コンテナ」のフォーマット・ランタイムの標準化
    を目的として設立されたイニシアチブ(組織)である。
  • Linux Foundationプロジェクトの1つ。

Runtime Specification

コンテナランタイムの標準仕様

  • Linuxコンテナの標準仕様
    • Default Filesystem
    • Namespace
    • cgropus
    • など
  • Linuxコンテナ以外の標準仕様
    • Solaris
    • Windows
    • Virtual Machine

Image Format Specification

コンテナイメージの標準仕様

  • Image Manifest
  • Image Index
  • Image Layout
  • Filesystem Layout
  • Image Configuration

Distribution Specification

コンテナイメージ配布の標準仕様

※ 仕様の策定が止まっている?

CSI(Container Storage Interface)

概要

コンテナ・オーケストレーション・ツールとストレージの間のI/Fの標準仕様

  • 2018年11月にv1.0に到達
  • 外部ストレージを開発するベンダーが独立に
    ストレージ側の機能追加や修正を行えることを目指す。

機能

代表的な機能

  • 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も配置先を指定できる。

コンテナ・オーケストレーション・ツール側

3つのサイドカーコンテナを提供する必要がある。

CSIエンドポイントに対して

  • external-attacher
    VolumeAttachment?オブジェクトを監視し、
    ボリュームをノードにアタッチする命令を行う。
  • external-provisoner
    PersistentVolumeClaim?オブジェクトを監視し、
    ボリューム作成や削除の命令を行う。
  • driver-register
  • CSI driverをkubeletに登録する。
  • CSI driverとは
    • コントローラ・ドライバとノード・ドライバ、製品個別CSPを実装。
    • 機能:アタッチ・デタッチ、プロビジョン、マウント、ワークフローアロケーション

ストレージ・ベンダー側

コンテナ・オーケストレーション・ツールの
問い合わせに対応3つのサービスを実装する必要がある。

  • Identity Service
    Capability/Health/その他メタデータなどの問い合わせを行う機能を実装。
  • Controller Service
    ボリュームやスナップショットの作成・削除・一覧表示を行う機能を実装。
  • Node Service
    ボリュームをマウントする際に呼び出される機能を実装。

CNI(Container Network Interface)

概要と動作原理

  • コンテナがネットワークに接続するI/Fの標準仕様とリファレンス・プラグインを提供
  • CNCF(Cloud Native Computing Foundation)にホストされたプロジェクトの一つ。
  • 動作原理
    • JSONフォーマットのネットワーク設定が標準入力とする。
    • ネットワーク設定が環境変数としてプラグインへ渡される。
    • ブラグインが渡された情報に基づいて命令を実行する。

サポートすべきオペレーション

  • ADD
    コンテナをネットワークへ追加
  • DEL
    コンテナをネットワークから削除
  • CHECK
    コンテナのネットワークをチェック
  • VERSION
    バージョンの確認

渡されるネットワーク設定

  • cniVersion
    CNI Specificationのバージョン
  • name
    ネットワーク名
  • type
    実行するプラグインのファイル名
  • args
    コンテナランタイムより与えられる追加情報
  • ipMasq
    IPマスカレードの設定
  • ipam
    IPAM設定のための情報
  • type
    実行するIPAMプラグインのファイル名
  • dns
    DNS設定のための情報
  • name servers
    DNSネームサーバのリスト
  • domain
    ローカルドメインの指定
  • search
    サーチドメインのリスト
  • options
    リゾルバに渡すオプションのリスト

代表的なプラグイン

CSI

  • CSI以前は、in-treeか、out-of-tree(FlexVolume?)のVolume Pluginがあった。
  • 以下のようなストレージを使用できるよう、個別のプラグインが開発される。
  • 高速なローカル・ストレージ(Ceph)
    • ワーカ・ノードのローカル・ストレージをK8sのPersistentVolume?として扱う。
    • NVMe SSDの性能を活かして、高IOPSが必要なミドルウェアのストレージとして利用する。
    • 可用性はミドルウェアのレプリケーションで担保する。
  • 高可用ネットワークストレージ
    • ネットワーク経由で利用可能なストレージをK8sのPersistentVolume?として扱う
    • ステートフルなアプリケーションの永続化ボリュームとして利用
  • 大容量な分散オブジェクトストレージ
    • ネットワーク経由で利用可能なストレージをAmazon S3互換のAPI経由で扱う
    • 文書、画像、動画などの大容量データを保存

TopoLVM

Cybozuが自社DCでKubernetesを運用するために作成した、
K8sのPodが高速なローカル・ストレージを有効に利用するCSI。

  • LVM (Logical Volume Manager)によるボリューム管理
  • トポロジを考慮したダイナミック・プロビジョニング
  • ノードの空き容量に応じたスケジューリング

Rook

  • 既存のストレージ機能を持つソフトウェアをK8sと統合することを目的とする。
  • 例えば、分散ストレージを実現するCephなどと組み合わせて使用する。

, etc.

CNI

kubenet

ノードにIPアドレスを割り当てて、配下のポッドにはNAT変換でアクセス。

Weave Net

1つのポッドにつき1つのIPアドレスを提供するシンプルなネットワーク。

Azure CNI

AKSもなにやら、専用のCNIを持っているというようなことを言っていた。

  • kubenetと選択できる。
  • Azure仮想ネットワークのサブネットからIPアドレスが割り当てる。
  • 配下のポッドの最大数に合わせてIPアドレスを事前予約する。

Flannel

L2 over L3ネットワーキング (デフォルトではVXLAN) で、Pod間の到達性を確保。

Calico

  • BGPによるピュアL3ネットワーキングで、Pod間の到達性を確保。
  • Kubernetes Network Policyに対応しているCNI

Canal

CalicoをKubernetes Network Policy機能のみで動作させ、Flannelと統合するCNI

Kube-Router

1つのgoバイナリでKubernetesのネットワークまわりを全部処理する。

  • Kubernetes Network Policyの実装に加えてServiceの実装置き換えもできる
  • ノード内はFlannelのようにブリッジ
  • ノード間はBGPを使ったルーティング

Romana

L3の仮想ネットワーク + Kubernetes Network Policy制御

NSX-T

  • マルチ・クラウドおよびマルチ・ハイパーバイザー環境向けの
    ネットワーク仮想化とセキュリティのプラットフォーム
  • 異種のエンドポイントやテクノロジ・スタックを持つ
    新興のアプリケーション・フレームワークやアーキテクチャに焦点
  • NSX-T Container Plug-in(NCP)
    コンテナベースのCaaS/PaaSプラットフォームとの統合を提供

Coil

Cybozuが自社DCでKubernetesを運用するために作成したCNI。

, etc.

参考

Wikipedia

Qiita


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2021-02-19 (金) 19:16:52 (60d)