Kubernetes/容器相关的标准化系统备忘录
基于Kubernetes的容器编排系统不是单一的整体系统,而是由不同的生态工具组合和微服务思想构建而成。
通过定义标准接口,例如存储和网络等各种组件可以与Kubernetes(或容器系统)结合使用,作为构成整个系统的要素,从而使各种参与者(供应商和开源项目)能够灵活地创建和协同/提供扩展功能。
有许多这种标准界面、规范和项目,所以我会作为备忘录汇总一些。
[1] CSI:容器存储接口

-
- KubernetesなどのContainer Orchestration Systems(CO)上のコンテナ化されたワークロードに任意のブロックおよびファイルストレージシステムを公開するための標準仕様/API
-
- CSIを使用すると、サードパーティのストレージプロバイダーは、コアのKubernetesコードに触れることなく、Kubernetesで新しいストレージシステムを公開するプラグインを作成してデプロイできる
-
- CSI ドライバをインストールすると、Kubernetes でネイティブにサポートされないストレージ システムがサポートされるようになる
-
- CSI を使用すると、スナップショットやサイズ変更などの最新のストレージ機能を使用できる
- Kubernetes v1.13 でGAになった
以下是该句的中文本土化改写:
参考)
这是一个只需要一种选择的中文本土化改写。
- https://cloud.google.com/anthos/gke/docs/on-prem/archive/1.2/how-to/install-csi-driver?hl=ja
亚马逊弹性容器服务(Amazon EKS)和亚马逊弹性文件系统(Amazon EFS)。
如果要从Amazon EKS的Kubernetes集群使用Amazon EFS(托管文件系统),可以安装在GitHub上公开的EFS用CSI驱动程序(使用kubectl apply或helm install命令),然后可以直接在Kubernetes集群上的Pod中使用EFS存储。
-
- 参考URL
https://github.com/kubernetes-sigs/aws-efs-csi-driver
https://docs.aws.amazon.com/ja_jp/eks/latest/userguide/efs-csi.html
[2] 容器网络接口:CNI

-
- CoreOSが提唱し、現在はCNCFプロジェクト
-
- Linuxコンテナでネットワークインターフェイスを構成するプラグインと、それを作成するための仕様とライブラリで構成されている
- CNIは、コンテナのネットワーク接続と、コンテナが削除されたときに割り当てられたリソースの削除の役割を担う
著名的CNI插件
flannel(https://github.com/coreos/flannel)
Calico(https://www.projectcalico.org/)
Canal(https://github.com/projectcalico/canal)
Weave Net(https://www.weave.works/oss/net/)
etc.
参考URL:
– https://rancher.com/blog/2019/2019-03-21-comparing-kubernetes-cni-providers-flannel-calico-canal-and-weave/
比较Kubernetes CNI提供者Flannel、Calico、Canal和Weave的文章。
[3] SMI:服务网格接口

-
- マイクロソフトやHashiCorpらが共同で発表したサービスメッシュソフトウェアの標準インターフェース
-
- 最も一般的なサービスメッシュのユースケースの基本機能例
Traffic policy : サービス間のトラフィックに対する暗号化や認証といったポリシーの設定
Traffic telemetry : サービス間のエラー発生率やレイテンシといったトラフィック上重要なメトリクスの取得
Traffic management : サービスに対するトラフィックの切り替えといったトラフィック管理
SMI対応サービスメッシュプラグイン例
Istio(https://github.com/servicemeshinterface/smi-adapter-istio)
linkerd(https://linkerd.io/)
Consul(https://www.consul.io/docs/connect)
etc.
请参考以下链接对HashiCorp Service Mesh(HSM)与Kubernetes API之间的接口进行了解。
[4] 国际广播电台:容器运行时接口
Kubernetes中的容器运行时连接的标准接口。
CNCFが管理
kubeletが再コンパイルせずにさまざまなコンテナランタイムを使用できるようにするプラグインインターフェイス
CRIは、プロトコルバッファとgRPC API、およびライブラリで構成されている
CRIをサポートするHigh-Levelコンテナランタイム例
Docker(dockershim + containerd)(https://www.docker.com/)
containerd(https://containerd.io/)
CRI-O(https://cri-o.io/)
※自 Kubernetes v1.20起,Docker(dockershim + containerd)已被弃用。
[5] 开放容器倡议:OCI

-
- Linux Foundationプロジェクトの1つ
-
- コンテナ仮想化の標準仕様策定を目的として設立された
-
- 主に2つの仕様を策定している
Runtime Specification (runtime-spec) :コンテナランタイムとライフサイクル仕様
Image Specification (image-spec):コンテナイメージ仕様
High-levelランタイムとLow-levelランタイムについてはこちら
https://qiita.com/suzukihi724/items/d1dba5a2ed33d9c0d868
[6] 开放式追踪

分散トレーシングのためのベンダ非依存のAPI仕様とライブラリを提供する
ライブラリ対応言語:Go, JavaScript, Java, Python, Ruby, PHP, Objective-C, C++, C#
Open Tracing互換の分散トレーシングツール例
Jager(https://www.jaegertracing.io/)
[7] 运营商中心

- 検証済みのKubernetes Operatorを検索、共有できるリポジトリサービス
究竟什么是Kubernetes Operator?
-
- Kubernetes上で主にステートフルなアプリケーション(データベースなど)をパッケージ、デプロイ、管理するためのフレームワーク
-
- 例えばデータベースの場合、バックアップ、障害対応、クラスタ管理、監視などの管理タスクを実装する必要があるが、そのようなオペレーションの自動化を目的とする
-
- 以下のKubernetes API拡張機能をベースとしてる
CRD [Custom Resource Definitions]:Kubernetes APIを拡張して独自のリソース[Custom Resource]を定義する
Custom Controller:Custom Resourceをコントロールするためのdeclarative API(宣言的なAPI)
参考文献:
https://qiita.com/MahoTakara/items/af4ad8ab69c24102bd72
https://www.redhat.com/ja/topics/containers/what-is-a-kubernetes-operator
https://www.sraoss.co.jp/tech-blog/pgsql/kubernetes-postgres-operator/
参考资料:
https://qiita.com/MahoTakara/items/af4ad8ab69c24102bd72
https://www.redhat.com/ja/topics/containers/what-is-a-kubernetes-operator
https://www.sraoss.co.jp/tech-blog/pgsql/kubernetes-postgres-operator/
资料来源:
https://qiita.com/MahoTakara/items/af4ad8ab69c24102bd72
https://www.redhat.com/ja/topics/containers/what-is-a-kubernetes-operator
https://www.sraoss.co.jp/tech-blog/pgsql/kubernetes-postgres-operator/