应用存储和持久化数据卷:存储快照与拓扑调查(二)|学习笔记

简介: 快速学习应用存储和持久化数据卷:存储快照与拓扑调查(二)

开发者学堂课程【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 处理流程

image.png

主流程说明:

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 流程真正执行

相关文章
|
Go 开发者
掌握Go语言:Go语言结构体,精准封装数据,高效管理实体对象(22)
掌握Go语言:Go语言结构体,精准封装数据,高效管理实体对象(22)
157 0
|
存储 缓存 Linux
【实战指南】嵌入式RPC框架设计实践:六大核心类构建高效RPC框架
在先前的文章基础上,本文讨论如何通过分层封装提升一个针对嵌入式Linux的RPC框架的易用性。设计包括自动服务注册、高性能通信、泛型序列化和简洁API。框架分为6个关键类:BindingHub、SharedRingBuffer、Parcel、Binder、IBinder和BindInterface。BindingHub负责服务注册,SharedRingBuffer实现高效数据传输,Parcel处理序列化,而Binder和IBinder分别用于服务端和客户端交互。BindInterface提供简单的初始化接口,简化应用集成。测试案例展示了客户端和服务端的交互,验证了RPC功能的有效性。
758 79
|
Java Spring Maven
gradle 配置指南
在`build.gradle`中配置Gradle仓库,首先添加阿里云公共仓库
|
Python
Django 项目重命名
  在日常学习工作过程中,我们难免需要复用以前的项目,这里讲下复用 Django 项目并重命名的过程。 1.修改项目名称,使用 pycharm -> refactor 重命名整个项目。   2.修改 manage.py 和 Django 下和项目名称相同的文件夹,使用 grep 指令找出和项目有关的字符串,如: grep 'test4' *.py 逐一修改。
4786 0
|
存储 XML 计算机视觉
YCRB色彩空间域助力快速完成人脸识别数据集
YCRB色彩空间域助力快速完成人脸识别数据集
297 0
|
Shell 分布式数据库 开发者
HBase 安装配置 &启动 | 学习笔记
快速学习 HBase 安装配置 &启动 。
212 0
|
3天前
|
数据采集 人工智能 安全
|
12天前
|
云安全 监控 安全