走进云原生:K8s存储虚拟化及插件使用
发布时间:2025/11/07 12:18 来源:萧山家居装修网
在Kubernetes中的,读取该软件的合作开发手段有Flexvolume和CSI两种,年中通过原理和举例来说展示的手段做先入一步摘序文。
03 Felxvolume原理及举例来说展示3.1 Flexvolume详述
Flexvolume获取了一种扩展Volume Plugin的手段,Gmail可以自定自己的读取该软件,做到Attach、Mount等机制API。比如AD Controller初始本土化该软件做到Attach操纵时,才会首先初始本土化Flexvolume中的的AttachAPI。Flexvolume是可被Kubelet特别设计的可执行者二先入制份文件,该份文件必须要做到Flexvolume的方面API,每一次初始本土化相当于执行者一次shell原作者,然后来到JSON格式的图表,因此其不是一个常驻内存的守护先入程。Flexvolume读取该软件默认的储藏一段距离是:/usr/libexec/kubernetes/kubelet-plugins/volume/exec//,Volume plugin缓冲器才会不断watch这个附序文来做到该软件获取的增删等机制。其中的,vendor~driver的名字和Pod中的flexVolume.driver的字段名相对应将,vendor之部份可自定。
3.2 FlexvolumeAPI界定
FlexvolumeAPI可以根据必须求自定的做到,比如采用NFS份文件读取,因为不忽视于读取卷的悬挂接操纵,因此不必须要做到Attach、Detach方面API,须要将API来到结果界定再加{"status":"Not supported","message":"error message"} 即可。不限列举Flexvolume之部份API:
3.3 Flexvolume举例来说展示
展示当年提条件:Kubernetes空降兵已具有NFS读取维修服务,并且NFS构建附序文已设置,jq机器已重新安装。
# mkdir -p /root/wq/nfs //设置构建附序文
# chmod 755 /root/wq/nfs
# vim /etc/exports //配置NFS,存储/root/wq/nfs *(rw,sync,no_root_squash)设置权限
# yum -y install
# yum install jq -y //重新安装jq机器
# systemctl restart rpcbind.service
# systemctl enable rpcbind.service
# systemctl restart nfs.service
# systemctl enable nfs.service //重启RPC和NFS,使配置作废
展解释器子采用Kubernetes此当年计算出来的一个基于NFS份文件读取的Flexvolume该软件解释器,原作者链接:。根据下图右图,在Flexvolume读取该软件默认的储藏一段距离建起该软件附序文wq-nfs,将原作者摆放附序文下,并等同于份文件可执行者权限。
然后重新部署一个Pod到登序文链表,并采用Flexvolume的手段对盖子中的的图表先入行正因如此本土化读取,详细yaml份文件章节如下。
apiVersion: v1
kind: Pod
metadata:
name: k8s-flexvolume #应将用于名称
namespace: flexvolume #登序文应将用于所在取名空间
spec:
nodeSelector:
kubernetes.io/hostname: kcs-ks-qq-m-snqnq #登序文应将用于重新部署链表
volumes:
- name: f-volume
flexVolume:
driver: "wq/nfs" #读取该软件界定,用做在默认该软件读取一段距离转发可执行者份文件
fsType: "nfs" #界定读取的系统各种类型
options: #界定读取维修服务所必须方面参数
server: "192.168.2.49"
share: "/root/wq/nfs" #登序文构建读取附序文
containers:
- name: nginx-proxy
image: nginx
ports:
- containerPort: 80
volumeMounts:
- name: f-volume
subPath: subfv
mountPath: /usr/share/nginx
通过核对Pod本地正因如此本土化附序文是否已被悬配置到了NFS读取的系统上,可以告知Flexvolume该软件是否也就是说接入。在NFS构建附序文下建起文本份文件,并存储一些章节,然后先入入Pod核对建起份文件和存储章节是否已同步,即可先入一步可验证读取是否悬配置再加功,详细操纵如下图右图。
04 CSI原理及举例来说展示4.1 CSI详述
CSI是盖子读取APIContainer Storage Interface的简称,作用是为了能在盖子编排动力系统和读取的系统两者之间构建一套新标准的读取初始本土化API,先入而通过该API为盖子编排动力系统获取读取维修服务。
图 CSI该软件的设计架构4.2 CSI读取体系及API界定
CSI读取体系主要由两之部份都由:External Components和Custom Components。
➢ External Components(Kubernetes缓冲缓冲器):主要包含Driver Registrar、External Attacher、External Provisioner三个之部份,这三个缓冲器源自Kubernetes原本的in-tree读取体系,可以理解为Kubernetes的一个缓冲Controller,统筹Watch Kubernetes的API能源都可,然后根据传唤到的平衡状态初始本土化Custom Components做到读取管理工作和操纵。
Driver Registrar:CSI Node-Driver-Registrar是一个Sidecar盖子,用做从CSI driver得到特别设计程序文档(采用NodeGetInfo),并采用Kubelet该软件注册机制在该链表上的 Kubelet中的对其先入行注册。 External Attacher:用做传唤Kubernetes VolumeAttachment都可,并针对特别设计程序尾端点触发CSI ControllerPublish和ControllerUnpublish操纵。 External Provisioner:传唤Kubernetes中的的PVC都可,初始本土化CSI对应将的创设、删除等Volume操纵。❖注:External Components目当年仍由Kubernetes一个团队保障,该软件合作开发者无必须关心其做到先前。
➢ Custom Components(CSI读取该软件):主要包含CSI Identity、CSI Controller、CSI Node三个之部份,是必须要合作开发者通过格式来做到的,并以gRPC的手段对部份获取维修服务。
CSI Identity:用做对部份暴露这个该软件本身的文档,当年提该软件的有益平衡状态。service Identity {
// 来到该软件的名称和旧版本
rpc GetPluginInfo(GetPluginInfoRequest)
returns (GetPluginInfoResponse) {}
// 来到该软件具有所有机制
rpc GetPluginCapabilities(GetPluginCapabilitiesRequest)
returns (GetPluginCapabilitiesResponse) {}
// 检测该软件的有益平衡状态,是否正在接入
rpc Probe (ProbeRequest)
returns (ProbeResponse) {}
}
CSI Controller:用做做到Volume管理工作程序中的Provision和Attach过渡期操纵,比如创设和删除Volume、对Volume先入行Attach/Detach(Publish/UnPublish)操纵等。CSI Controller从前界定的所有维修服务都有一个携手特色,那就是无必须在宿主机上先入行操纵。service Controller {
// 创设读取卷
rpc CreateVolume (CreateVolumeRequest)
returns (CreateVolumeResponse) {}
// 删除读取卷
rpc DeleteVolume (DeleteVolumeRequest)
returns (DeleteVolumeResponse) {}
// Attach卷,即将读取介质悬挂发来目的链表
rpc ControllerPublishVolume (ControllerPublishVolumeRequest)
returns (ControllerPublishVolumeResponse) {}
// Unattach卷
rpc ControllerUnpublishVolume (ControllerUnpublishVolumeRequest)
returns (ControllerUnpublishVolumeResponse) {}
// 来到读取卷具有的机制,比如是否全力支一向悬配置到多个链表上等
rpc ValidateVolumeCapabilities (ValidateVolumeCapabilitiesRequest)
returns (ValidateVolumeCapabilitiesResponse) {}
// 来到所有最简单读取卷
rpc ListVolumes (ListVolumesRequest)
returns (ListVolumesResponse) {}
// 来到读取能源池的最简单空间大小
rpc GetCapacity (GetCapacityRequest)
returns (GetCapacityResponse) {}
// 来到controller该软件具有的机制,比如是否全力支一向Snapshot机制等
rpc ControllerGetCapabilities (ControllerGetCapabilitiesRequest)
returns (ControllerGetCapabilitiesResponse) {}
// 创设动态
rpc CreateSnapshot (CreateSnapshotRequest)
returns (CreateSnapshotResponse) {}
// 删除动态
rpc DeleteSnapshot (DeleteSnapshotRequest)
returns (DeleteSnapshotResponse) {}
// 列出动态
rpc ListSnapshots (ListSnapshotsRequest)
returns (ListSnapshotsResponse) {}
// 扩容
rpc ControllerExpandVolume (ControllerExpandVolumeRequest)
returns (ControllerExpandVolumeResponse) {}
}
CSI Node:用做操纵Kubernetes链表上Volume的方面机制操纵。Volume在链表的Mount全过程被分为NodeStageVolume和NodePublishVolume两个过渡期,当年者针对块读取各种类型将读取电子的系统格式本土化后,先悬配置到链表的一个全局的临时附序文,之后再行初始本土化NodePublishVolumeAPI将附序文悬配置先入Pod中的登序文的附序文上。service Node {
// 在Kubernetes链表上格式本土化读取卷,并将其悬配置到一个全局的临时附序文
rpc NodeStageVolume (NodeStageVolumeRequest)
returns (NodeStageVolumeResponse) {}
// NodeStageVolume的自是操纵,将读取卷从临时附序文卸载掉
rpc NodeUnstageVolume (NodeUnstageVolumeRequest)
returns (NodeUnstageVolumeResponse) {}
// 将读取卷从全局的临时附序文悬配置到登序文的目的附序文(Pod内的附序文)
rpc NodePublishVolume (NodePublishVolumeRequest)
returns (NodePublishVolumeResponse) {}
// NodePublishVolume的自是操纵,将读取卷从Pod附序文卸载掉
rpc NodeUnpublishVolume (NodeUnpublishVolumeRequest)
returns (NodeUnpublishVolumeResponse) {}
// 来到最简单于该卷的卷量统计文档
rpc NodeGetVolumeStats (NodeGetVolumeStatsRequest)
returns (NodeGetVolumeStatsResponse) {}
// Kubernetes链表上执行者卷扩容
rpc NodeExpandVolume(NodeExpandVolumeRequest)
returns (NodeExpandVolumeResponse) {}
// 来到链表该软件具有的所有机制,比如是否全力支一向Stage/Unstage机制
rpc NodeGetCapabilities (NodeGetCapabilitiesRequest)
returns (NodeGetCapabilitiesResponse) {}
// 来到链表的一些文档
rpc NodeGetInfo (NodeGetInfoRequest)
returns (NodeGetInfoResponse) {}
}
4.3 CSI举例来说展示
展示当年提条件:Kubernetes空降兵中的已重新安装NFS方面的CSI特别设计,用做实践通过CSI的手段采用NFS份文件读取。Kubernetes此当年有一个基于CSI特别设计做到NFS读取的建设项目可以用做紧接著实践,链接如下:,同时获取不限两种重新安装重新部署手段。
l 远程重新安装:通过不限下达回访Github一键重新安装。
# curl -skSL | bash -s v3.1.0 便是 //本次解释器重新安装csi-driver-nfs旧版本为v3.1.0,也可重新安装其他旧版本
l 本地重新安装:通过将建设项目Clone到本地,再行执行者重新安装原作者手段先入行重新安装。
# git clone
# cd csi-driver-nfs
# ./deploy/install-driver.sh v3.1.0 local
接入原作者后,可通过下达”kubectl -n kube-system get pod -o wide -l app=csi-nfs-controller”和”kubectl -n kube-system get pod -o wide -l app=csi-nfs-node”核对Pod平衡状态,如下右图则表示已重新安装完毕。可以留意到,csi-nfs-node才会以DaemonSet的手段在每个链表上接入,并执行者读取卷的Mount/Unmount操纵。
csi-driver-nfs重新安装顺利进行时后,就可以通过”spec.csi.driver”的规章来初始本土化特别设计采用NFS读取。下面我们先通过Static Volume Provisioning,也就是静态PV的原材料手段初始本土化CSI特别设计创设PV。然后通过PVC采用这个PV,顺利进行时PVC和PV的链接操纵。
# Static Volume Provisioning创设PV所用yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv-csi-nfs
spec:
capacity:
storage: 1Gi
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Retain
mountOptions:
- hard
- nfsvers=4.1
csi:
driver: nfs.csi.k8s.io
readOnly: false
volumeHandle: unique-volumeid
volumeAttributes:
server: 192.168.2.49
share: /root/wq/nfs
# Static Volume Provisioning创设PVC所用yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-csi-nfs
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1Gi
volumeName: pv-csi-nfs # 登序文必须要采用的PV
storageClassName: ""
实际操纵全过程如下图右图。可以看到,通过CSI特别设计,PV创设再加功并已受制于可采用的平衡状态。此时,便可通过PVC采用这个PV,PVC在创设后才会与PV先入行链接,链接再加功后PV的平衡状态也才会发生改变。
年中,我们再行通过Dynamic Volume Provisioning,动态PV的原材料手段做先入一步的展示。该手段来得Static Volume Provisioning,空降兵管理工作员无必须再行预先分配PV,而只是创设一个SC常量份文件,Gmail在通过PVC采用PV时,无必须再行关心PV所必须的参数先前,因为这些文档已经预先设置到了SC从前。
# Dynamic Volume Provisioning创设SC所用yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: sc-csi-nfs
provisioner: nfs.csi.k8s.io
parameters:
server: 192.168.2.49
share: /root/wq/nfs
reclaimPolicy: Delete
volumeBindingMode: Immediate
mountOptions:
- hard
- nfsvers=4.1
# Dynamic Volume Provisioning创设PVC所用yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-sc-csi-nfs
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1Gi
storageClassName: sc-csi-nfs
实际操纵全过程如下图右图。可以看到,SC、PVC创设再加功,PVC通过SC初始本土化CSI特别设计自动生再加了PV(pvc-4c45d45b-ec52-4276-9cbd-589964da73b3),并事与愿违与PVC顺利进行时了链接。
05 总结本文摘序文了Kubernetes读取架构及该软件的采用,主要以部份不限三之部份章节:
第一之部份摘序文了Kubernetes读取的基本知识、上都架构、读取机制摘序文以及读取该软件的概念; 第二之部份对FlexVolume先入行了摘序文,描述了其用做合作开发的API界定,并通过一个实际的举例来说展示了Flexvolume的采用方法; 第三之部份对CSI先入行了摘序文,判别了其读取体系结构以及合作开发API界定,最后通过实际的举例来说展示了如何通过CSI该软件以静态或者动态的手段采用PV先入行读取。引文
[1] 《Kubernetes权威指南:从Docker到Kubernetes实践雷电》
[2]
[3]
[4]
[5]
[6]
。安徽精神心理医院预约挂号贵州生殖感染医院哪家正规
长春皮肤病检查
郑州风湿治疗费用
海南皮肤病医院哪家医院好
21岁男咳嗽吐黄痰怎么办
眼部鼻部整形
退烧
甲流咳嗽吃哪种止咳药好
血脂高

-
TCL Q10G打出画质价格双王炸,高质价比展现出满满诚意
国际上,智屏从业人员崩溃关键技术内卷里面。继OLEDTV入场占据高端TV地位后,Mini LED异军突起,备受追捧,被誉为下一代揭示关键技术。许多品牌厂商纷纷着手布局Mini LED,另一款了M
- 2025-11-07许祖彦:孜孜“追光”六十年
- 2025-11-072022年全球液体激光器从业人员市场现状及发展前景预测
- 2025-11-07n08925是什么材料incoloy925铌棒料
- 2025-11-07天涯社区支付回应出现异常:已确认完全恢复
- 2025-11-07一文弄清楚oCPM和oCPC
- 2025-11-071299元!荣耀手表GS 3橙色春天开售 有没有戳中你?
- 2025-11-07四通道气密性测试产品案例分作 厦门希立仪器为您详解多通道气密性检测仪应用
- 2025-11-07关于百应AI的三种私域加粉偏移及成本
- 2025-11-07浙江省科研项目管理,可选择“PM工作视图”
- 2025-11-07亚信确保安全联合施耐德电气发布《工业信息确保安全技术洞察》,助力工业企业提高信息确保安全防护能力