About OpenEBS
OpenEBS
OpenEBS
は、Kubernetesワーカーノードが利用できるあらゆるストレージ(ローカルや分散など) をKubernetes Persistent Volumesに変換します
Reference
- https://openebs.io/
- https://github.com/openebs/openebs
- https://github.com/openebs/charts
- https://openebs.github.io/charts/
- https://blog.openebs.io/arming-kubernetes-with-openebs-1-b450f41e0c1f
- https://note.com/ryoma_0923/n/n7d2837212028
- https://qiita.com/ysakashita/items/8ca805cb6ac10df911be
- https://blog.cybozu.io/entry/2018/03/29/080000
- https://www.infoq.com/jp/news/2020/08/kubernetes-storage-kubera/
OpenEBS について
- MayaDataが実装を公開し、現在はCNCF sandbox projectのContainer Storage Interface (CSI) Providerです
Container Attached Storage(CAS)
アーキテクチャーを採用している- Dynamic Provisionerをサポートしている
- Kubernetes Nativeの local PersistentVolume volume はStatic Provisioningのみをサポート
Container Attached Storage(CAS)
- https://openebs.io/docs/concepts/cas
- https://www.cncf.io/blog/2018/04/19/container-attached-storage-a-primer/
- https://www.cncf.io/blog/2020/09/22/container-attached-storage-is-cloud-native-storage-cas/
- https://www.cncf.io/online-programs/kubernetes-and-storage-kubernetes-for-storage-an-overview/
-
https://blog.mayadata.io/container-attached-storage-cas-vs.-shared-storage-which-one-to-choose
In Kubernetes, shared storage is typically achieved by mounting volumes and connecting to an external filesystem or block storage solution. Container Attached Storage (CAS) is a relatively newer solution that allows Kubernetes administrators to deploy storage as containerized microservices in a cluster.
Container Attached Storage(CAS)
とはPodで利用可能なストレージをコンテナ化したマイクロサービスとしてKubernetes Clusterへデプロイする仕組みです。
CAS
ではPersistent Volumesをマイクロサービス ベースのストレージ レプリカとして構成します。その際、ストレージ レプリカを管理するためのストレージ コントローラを、独立してスケーリングおよび実行できる 構成ユニットとしてデプロイします。(つまり、OpenEBS におけるPVはVolumeをホストするreplica pod と replica podを管理するcontroller podで構成されます)
- 以下は Deploy Jenkins with OpenEBS で作成されるストレージ レプリカとコントローラ
$ kubectl get pods -n openebs | grep pvc-2fee1acb openebs pvc-2fee1acb-2d7f-4068-b56e-777eefa35e4a-jiva-ctrl-66d449fp8jp8 2/2 Running 0 3h58m 10.200.0.39 k8s-master <none> <none> openebs pvc-2fee1acb-2d7f-4068-b56e-777eefa35e4a-jiva-rep-0 1/1 Running 1 (3h34m ago) 4h16m 10.200.2.194 k8s-node2 <none> <none> openebs pvc-2fee1acb-2d7f-4068-b56e-777eefa35e4a-jiva-rep-1 1/1 Running 1 (3h40m ago) 4h16m 10.200.0.38 k8s-master <none> <none> openebs pvc-2fee1acb-2d7f-4068-b56e-777eefa35e4a-jiva-rep-2 0/1 Pending 0 4h16m <none> <none> <none> <none>
Node Disk Manager(NDM)
- https://openebs.io/docs/main/concepts/ndm
- CPUやMemory、Networkなどと同じようにNode上のblock deviceをkubernetes resources(CustomResource)として管理するためのコンポーネント
- DeamonSetとして各Nodeにデプロイされる
- Node上のblock deviceへのアクセスするのに
/dev
,/proc
,/sys
へのアクセス権限が必要なためPrivileged modeで動作する Local PV
とcStor PV
で使用されるJIVA PV
はNDMへアクセスしていない?- https://openebs.io/docs/main/user-guides/ndm
ストレージエンジン
-
https://openebs.io/docs/main/concepts/casengines
Storage Engine Status Description link Local PV
Beta 単一ノードで利用可能なVolumeを提供
Dynamic Provisioningをサポート(Kubernetes Nativeの local PersistentVolume volume はStatic Provisioning(事前のPVを手動作成する必要がある))https://openebs.io/docs/concepts/localpv
https://openebs.io/docs/main/user-guides/localpv-deviceJIVA PV
Stable 複数ノードでレプリカを構成したVolumeを提供(高可用性)
iSCSI Volumeをエミュレート
Dynamic Provisioningをサポート
シン プロビジョニングをサポートhttps://openebs.io/docs/concepts/jiva cStor PV
Beta 複数ノードでレプリカを構成したVolumeを提供(高可用性)
iSCSI Volumeをエミュレート
Dynamic Provisioningをサポート
シン プロビジョニングをサポート
Snapshotをサポートhttps://openebs.io/docs/concepts/cstor