开发者学堂课程【Kubernetes 入门:应用存储和持久化数据卷:存储快照与拓扑调查(二)】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/51/detail/1016
应用存储和持久化数据卷:存储快照与拓扑调查(二)
三、操作演示
限制 Dynamic Provisioning PV 拓扑示例
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: csi-disk provisioner: diskplugin.csi.alibabacloud.com parameters: regionld: cn-hangzhou fsType: ext4 type: cloud_ssd volumeBindingMode: WaitForFirstConsumer allowedTopologies: - matchLabelExpressions: #拓扑域限制:动态创建的PV只能在可用区 cn-hangzhou-d被使用 - key: topology.diskplugin.csi.alibabacloud.com/zone values: - cn-hangzhou-d reclaimPolicy: Delete #当该PVC对象被创建之后由于对应StorageClass的 BindingMode为 # WaitForFirstConsumer并不会马上动态生成PV对象,而是要等到使用 #该PVC对象的第一个Pod调度结果出来之后,而且kube-scheduler在调 #度Pod的时候会去选择满足StorageClass.allowedTopologies中指定的#拓扑限制的Nodes apiVersion: v1 kind: PersistentVolumeClaim metadata: name: disk-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 30Gi storageClassName: csi-disk |
四、处理流程
Kubernetes 对 Volume Snapshot/Restore 处理流程
主流程说明:
1.首先 PV Controller 对需要 Delay Binding(通过 StorageClass 设置)的 PVC 暂不做任何处理
2.Scheduler 根据 Pod PVCs 过滤 per Node 流程:
-找到一个 Pod 所有Bound的 PVCs 以及需要 Delay Binding 的
PVCs
- Bound 的 PVCs 要 check bound 的 PV NodeAffinity 与当前 Node 的拓扑是否匹配,不匹配就skip this Node
- Delay Binding 的 PVCs,先 check 存量的 PVs 能满足 PVC 的列表,并将它们的NodeAffinity 与当前 Node 拓扑做匹配,都不匹配进一步 check PVCs 对应的StorageClass.AllowedTopologies 是否与 Node 的拓扑匹配,不匹配就 skip this Node
3.更新经过预选( Predicates )和优选( Priorities )选中 Node 的 Pod 在 scheduler 中的 PVC&PV cache,为 step(4)做准备
4.触发相关组件对 Pod 使用的 UnBound PVCs 的 Binding 或 Dynamic Provisioning 流程真正执行