K8S 存储机制介绍

CSI 从1.9 开始引入用于在K8S和外部存储系统之间建立一套标准接口. 在1.13 GA

CSI 产生的背景是将存储提供方与K8S 代码解耦.

CSI 组件与容器化部署架构

image.png

CSI Controller

CSI Controller 的主要功能是对存储资源和存储卷进行管理操作.K8S 中建议部署为单实例pod 可以使用statefulset 或deployment 进行部署, 在controller pod中有两个容器

  1. 与kube-controller-manager 通信的sidecar 容器, 在 sidecar 容器内, 又可以包含 external-provisioner 和 external-attacher 两个容器
    1. external-attacher 容器监控 VolumeAttachment 资源对象的变更, 触发针对 CSI 端点的 ControllerPublish 和 ControllerUnpublish 操作
    2. external-provisioner 容器监控 PersistentVolumeClaim 资源对象的变更, 触发对 CSI 端点的 CreateVolume 和 DeleteVolume操作
  2. CSI Driver 存储驱动容器, 由第三方存储供应商提供, 需要实现上述接口

CSI NODE

CSI Node 的主要功能是对node 上的Volume进行管理和操作, 在K8S 中建议部署为DeamonSet. 在这个POD 中有一下两个容器

  1. sidecar 容器 Node-driver-registrar, 主要作用是将存储驱动注册到kubelet中
  2. CSI Driver 存储驱动容器, 由第三方存储供应商提供, 主要接受 kubelet 调用, 需要实现一些列与 node 相关的 CSI 接口, 例如 NodePublishVolume (用于将 Volume 挂在到目标路径)和 NodeUnPublishVolume (用于从容器中卸载Volume)

node-driver-registar 容器与 kubelet 通过 node 主机的一个 hostPath 目录下的unix socket 进行通信. CSI Driver 容器与 kubelet 通过node 主机的另一个 hostPath 目录下的Unix socket进行通信, 同事需要将 kubelet 的工作目录(默认为/var/lib/kubelet) 挂在给CSI driver 容器.

CSI 存储插件使用示例

  • API Server 配置:
--allow-privileged=true--feature-gates=CSIPersistentVolume=true,MountPropagation=true--runtime-config=storage.k8s.io/v1alpha1=true
  • Controller-manager 配置:
--feature-gates=CSIPersistentVolume=true
  • Kubelet 配置:
--allow-privileged=true--feature-gates=CSIPersistentVolume=true,MountPropagation=true

部署文档 样例文档

StorageClass

Storageclass 作为存储资源的抽象定义, 其作用是屏蔽后端存储细节, 同事减轻管理员手工管理PV的工作. 实现动态资源供应.

storageclass 的定义主要包括

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: standard
provisioner: kubernetes.io/aws-ebs
parameters:
  type: gp2
reclaimPolicy: Retain
mountOptions:
  - debug
volumeBindingMode: Immediate
  • provisioner: 供应者 ,看作存储驱动

目前支持的驱动列表如下

olume Plugin Internal Provisioner Config Example
AWSElasticBlockStore AWS EBS
AzureFile Azure File
AzureDisk Azure Disk
CephFS - -
Cinder OpenStack Cinder
FC - -
Flexvolume - -
Flocker -
GCEPersistentDisk GCE PD
Glusterfs Glusterfs
iSCSI - -
Quobyte Quobyte
NFS - -
RBD Ceph RBD
VsphereVolume vSphere
PortworxVolume Portworx Volume
ScaleIO ScaleIO
StorageOS StorageOS
Local - Local
  • parameters: 不同的provisioner 需要不同的的参数

设置默认的StorageClass

  1. 在APISERVER的启动参数中指定
--enable-admission-plugins=...,DefaultStorageClass
  1. 然后在SC 定义中添加annotation storageclass.kubernetes.io/is-default-class="true"
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: standard
  annotations:
    storageclass.kubernetes.io/is-default-class="true"
provisioner: kubernetes.io/aws-ebs
parameters:
  type: gp2
reclaimPolicy: Retain
mountOptions:
  - debug
volumeBindingMode: Immediate

如果觉得文章有帮助, 请点一下喜欢

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,509评论 6 504
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,806评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,875评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,441评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,488评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,365评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,190评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,062评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,500评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,706评论 3 335
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,834评论 1 347
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,559评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,167评论 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,779评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,912评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,958评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,779评论 2 354

推荐阅读更多精彩内容