iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 26
0

Kubernetes CSI 介紹

前言

Kubernetes CSI(Container Storage Interface)是用於將儲存系統與kubernetes這類容器編排系統接觸的標準介面。使用CSI的第三方套件可以撰寫與部署自訂的儲存系統,而無需接觸Kubernetes原始碼。

在CSI釋出之前,K8s 原有的 Volume plugin 是 in-tree 的,代表 plugin 的原始碼位於 K8s 的 repository 中,它們與Kubernetes核心原始碼鏈結、編譯、構建與交付。要向Kubernetes增加新的儲存系統需將原始碼merge至kubernetes核心,使得核心系統與plugin強耦合,這會造成一些問題:

  • 儲存套件開發必須跟隨kubernetes同時發布
  • Kubernetes開發人員/社群必須測試與維護所有儲存插件
  • 儲存插件的Bug可能造成Kubernetes核心元件Crash
  • 儲存插件開發人員必須提供完整原始碼

Kubernetes CSI Sidecar Containers

Kubernetes CSI Sidecar Containers是一組標準容器,為了簡化Kubernetes上CSI的開發與部屬。

這些容器通常用以監控Kubernetes API、針對CSI容器觸發一些適當的操作,且根據需求更新Kubernetes API。它們通常與第三方CSI Driver一起使用,並作為Pod部署。

Kubernetes開發團隊維護以下Kubernetes CSI Sidecar Containers:

  • External-attacher:
    監聽Kubernetes VolumeAttachment並透過CSI endpoint 觸發ControllerPublish 和 ControllerUnPublish 操作的 sidecar container
  • External-provisioner:
    監聽Kubernetes PersistentVolumeClaim 的sidecar container並觸發CSI endpoint的CreateVolume 和DeleteVolume 操作
  • Node-driver-register:
    藉由NodeGetInfo取得CSI endpoint的driver information並在該Node上向Kubelet註冊
  • Cluster-driver-register:
    在Kubernetes cluster中註冊一個CSIDriver Object
  • External-resizer:
    監聽Kubernetes API對PersistentVolumeClaim的編輯,若用戶對PersistentVolumeClaim要求更多的儲存空間,則觸發ControllerExpandVolume

CephFS

接下來會示範如何以CephFS作為Kubernetes CSI driver使用。
The Ceph Filesystem (Ceph FS)是Ceph提供的相容於POSIX協議的檔案系統,可讓使用者mount到Ceph Cluster內的目錄,並作存取使用。

Reference

https://kubernetes-csi.github.io/docs/introduction.html
https://docs.ceph.com/docs/mimic/cephfs/


上一篇
Day25 - Tacker使用教學 Part2
下一篇
Day27 - Ceph介紹
系列文
SDN/NFV 網路虛擬化調度平台30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言