HarmonyOS 鸿蒙Next 当创建pvc后,kubernetes组件如何协作
HarmonyOS 鸿蒙Next 当创建pvc后,kubernetes组件如何协作 摘要:当创建一个pvc后,kubernetes会发生什么?
本文分享自华为云社区《当创建一个pvc后,kubernetes会发生什么?》,作者:可以交个朋友。
一、背景
外部存储接入 Kubernetes 的方式主要有两种:In-Tree 和 Out-of-Tree:
- In-Tree 是指存储驱动的源码都在 Kubernetes 代码库中,与 Kubernetes 一起发布、迭代、管理,这种方式灵活性较差,且门槛较高。
- Out-of-Tree 是指存储插件由第三方编写、发布、管理,作为一种扩展与 Kubernetes 配合使用。Out-of-Tree 主要有 FlexVolume 和 CSI 两种实现方式,其中,FlexVolume 因为其命令式的特点,不易维护和管理,从 Kubernetes v1.23 版本开始已被弃用。因此 CSI 已经成为 Kubernetes 存储扩展( Out-of-Tree )的唯一方式。
外部存储最终的效果是将存储(磁盘、obs、nas盘等)挂载到容器中被业务使用,所以一般包括存在两个过程:
- attach 是将存储介质在指定虚拟机上绑盘,部分存储介质才需要attach操作,比如容器中使用块存储,大致流程是1)需要先调用openstack接口,将某块evs绑到某个虚拟机上,成为虚拟机设备;2)在将存储设备挂载到容器目录上
- mount 将某个存储挂载到对应文件系统上,是操作系统层面的行为,所有的存储介质挂载到容器中都需要mount阶段,比如容器中使用nas或者obs,本质上就是执行nfs命令将网络存储挂载到容器目录上
二、CSI 架构解读
kubernetes CSI存储插件的关键组件与推荐的容器化部署架构
三、动态创建 Volume 执行过程
以块类型存储为例,从声明pvc到pod挂载卷成功时序图:
四、存储拓展-延迟绑定
kubernetes里面有两个绑定:
- kube-schedule将pod和node绑定
- Pvc controller将pvc和pv绑定。正常情况下,kube-schedule绑定pod和node时候,如果pod有pvc,会等待pvc和pv绑定完成后根据pv所在的az选择node过滤一部分不满足节点,然后再完成绑定pod和node。延迟绑定场景,kube-schedule 先不等待PVC和PV绑定,先预调度node,然后把预调度结果写到PVC注解中,pvc控制接获取到预调度az信息后,再完成pv创建和pv绑定。所以,延迟绑定时延迟了pvc和pv绑定阶段。
stroageclass延迟绑定作用字段:VolumeBindingMode
- Immediate :表示一旦创建了 PersistentVolumeClaim 也就完成了卷绑定和动态制备(不参与调度)。 对于由于拓扑限制而非集群所有节点可达的存储后端,PersistentVolume 会在不知道 Pod 调度要求的情况下绑定或者制备。
- WaitForFirstConsumer :该模式将延迟 PersistentVolume 的绑定和制备,直到使用该 PersistentVolumeClaim 的 Pod 被创建。 PersistentVolume 会根据 Pod 调度约束指定的拓扑来选择或制备。 这些包括但不限于资源需求、 节点筛选器、 Pod 亲和性和互斥性、 以及污点和容忍度。
更多关于HarmonyOS 鸿蒙Next 当创建pvc后,kubernetes组件如何协作的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
学习了~~~
更多关于HarmonyOS 鸿蒙Next 当创建pvc后,kubernetes组件如何协作的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS鸿蒙Next环境中,当创建PersistentVolumeClaim(PVC)后,Kubernetes组件的协作过程主要涉及以下几个核心组件:
-
API Server:接收PVC的创建请求,并将其存储在etcd中。API Server作为Kubernetes集群的前端接口,负责处理所有RESTful API请求。
-
Controller Manager:监控etcd中PVC的状态变化。一旦检测到新的PVC,Controller Manager会触发PersistentVolume(PV)的绑定流程,尝试找到合适的PV来满足PVC的存储需求。
-
Scheduler:虽然不直接参与PVC的创建和PV的绑定过程,但Scheduler在Pod调度时会考虑PVC的存储需求,确保Pod被调度到能够提供所需存储资源的节点上。
-
Kubelet:在节点上运行,负责监听并管理Pod的生命周期。当Pod需要使用PVC提供的存储时,Kubelet会与底层的存储插件交互,确保Pod能够正确挂载和使用存储卷。
-
存储插件:如CSI(Container Storage Interface)插件,负责具体的存储卷管理操作,如创建、挂载、卸载和删除存储卷。
这些组件协同工作,确保PVC能够被正确创建、绑定,并供Pod使用。如果PVC创建或使用过程中遇到问题,通常可以通过检查各组件的日志来定位问题。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html,