云原生 第十章 应用存储和持久化数据卷:存储快照和拓扑调度

很多细节还是要注意的,多熟悉才好,猛然发现自己的第九章记录被转载到了https://www.pianshen.com/article/78591186436/,有点小开森~

文字版课程:https://edu.aliyun.com/lesson_1651_18358?spm=5176.10731542.0.0.54e320be5jeffr#_18358

之前记录的笔记,有前辈说我复制了文字版的课程,我尝试改进下,将自己关注的点总结出来

存储快照

  • k8s通过csi snapshotter controller实现存储快照
  • 流程:用户通过volumesnapshot对象来声明,指定volumesnapshotclass对象,然后集群中的controller生产volumesnapshotcontent

利用存储快照恢复数据

  • 通过yaml文件,将.spec.dataSource指定为VolumeSnapshot对象,然后根据pvc生成pv,数据通过volumesnapshotcontent恢复。

拓扑

  • 基本概念:管理的nodes划分的一种位置关系
    • region:标记nodes属于哪个地区
    • zone:available zone,标识跨zone的nodes属于哪个可用区
    • hostname:单机维度

存储拓扑调度

  • k8s创建pod的流程和创建pv的流程,并行独立
    • 需要保障pod最后运行的node,可以访问到存储
  • 解决方案
    • pod调度结果出来后,根据pod的拓扑动态创建pv
    • kube-scheduler为pod选择node节点时,需要考虑pv的nodeAffinity
  • 具体例子1
    • 当用户开始提交 PVC 的时候,pv controller 在看到这个 pvc 的时候,它会找到相应的 storageClass,发现这个 BindingMode 是延迟绑定,它就不会做任何事情。
    • 之后当真正使用这个 pvc 的 pod,在调度的时候,当它恰好调度在符合 pv nodeaffinity 的 node 的上面后,这个 pod 里面所使用的 PVC 才会真正地与 PV 做绑定,这样就保证我 pod 调度到这台 node 上之后,这个 PVC 才与这个 PV 绑定,最终保证的是创建出来的 pod 能访问这块 Local PV
  • 具体例子2
    • 在动态创建 PV 的时候,创建出来的 PV 必须是在这个可用区可以访问的;
    • 因为声明的是延迟绑定,那调度器在发现使用它的 PVC 正好对应的是该 storageclass 的时候,调度 pod 就要选择位于该可用区的 nodes。

相关命令

  • kubectl get volumesnapcontent
  • storageclass 指定BindingMode 为 WaitForFirstConsumer

csi如何实现存储扩展

  • K8s 社区推动实现的 csi controller 部分,也就是这里的 csi-snapshottor controller 以及 csi-provisioner controller,这些主要是通用的 controller 部分;
  • 由特定的云存储厂商用自身 OpenAPI 实现的不同的 csi-plugin 部分,也叫存储的 driver 部分。

测试题目

https://gitchat.csdn.net/columnTopic/5d8b062b49b2b1063b5594b4

1.使用存储快照功能需要用到哪些 Kubernetes API 资源对象?(多选题)ABCD

  • A. VolumeSnapshot
  • B. VolumeSnapshotClass
  • C. VolumeSnapshotContent
  • D. PersistentVolumeClaim

2.Kubernetes 中基于 CSI 实现存储快照(snapshot&restore)功能需要的组件有?(多选题)ABCD

  • A. Kubernetes csi-snapshotter Controller
  • B. 云存储厂商基于存储快照的 OpenAPI 实现的 Driver: Kubernetes csi-snapshotter GRPC server
  • C. Kubernetes csi-provisioner Controller
  • D. 云存储厂商基于存储快照 create 存储的 OpenAPI 实现的 Driver: Kubernetes csi-provisioner GRPC server

3.下列有关使用存储拓扑调度时对 StorageClass 的配置正确的有?(多选题)ABC

  • A. 需要通过设置 .volumeBindingMode: WaitForFirstConsumer 来声明 PVC 延时处理
  • B. 可以通过 .allowedTopologies 限制动态生成的 PV 的拓扑限制,拓扑限制会写到动态生成的 PV .spec.nodeAffinity中
  • C. 可以干预哪些需要使用该 StorageClass 动态生成 PV 对象的 PVC 的使用方 Pod 的可调度的 Node

4.Kubernetes csi-snapshotter Controller 中实现的功能包括?(多选题)ABC

  • A. watch VolumeSnapshot&&VolumeSnapshotContent 等 API 资源对象变化
  • B. 根据 VolumeSnapshot API 资源对象声明调用相应云存储 Driver(即 csi-snapshotter GRPC server)创建快照,并生成 VolumeSnapshotContent
  • C. bind VolumeSnapshot and VolumeSnapshotContent
  • D. 根据存储快照 restore 数据到新的 PV 对象中

5.Kubernetes 中 Node 的拓扑信息记录在哪里?(单选题)B

  • A. .metadata.annotations
  • B. .metadata.labels

6.在 Kubernetes 中使用自定义的拓扑(如 rack, foo, bar)是否需要相关组件做修改?(单选题)B

  • A. 是
  • B. 否

7.可以限制 PV 对象可被访问拓扑位置限制的地方?(多选题) AB

  • A. StorageClass: .allowedTopologies
  • B. PV: .spec.nodeAffinity
  • C. Node: .metadata.labels

8.下列有关如何使用存储拓扑调度的说法正确的有?(多选题) ABCD

  • A. 声明 delay binding 的 StorageClass 对象(.volumeBindingMode=WaitForFirstConsumer)
  • B. PVC 对象 .spec.storageClassName 指定为声明了 delay binding 的 StorageClass 对象
  • C. 在静态(预)创建的 PV 上的 .spec.nodeAffinity 添加对使用该 PV 的 Pod 所在 Node 拓扑限制
  • D. 在需要动态创建的 PV 所使用的 StorageClass 的 .allowedTopologies 中限制动态创建的存储能被使用的拓扑限制

9.Kubernetes 中为了支持存储拓扑调度相关组件做的改变有?(多选题)ABC

  • A. PersistentVolumeController 支持 PVC 与 PV 的 delay binding
  • B. 动态创建 PV 的 csi-provisioner 支持将第一个使用 PV 的 Pod 待运行 Node 的拓扑信息以及 StorageClass .allowedTopologies 传递给创建存储的 Driver
  • C. Kube-Scheduler 结合 Pod 使用的 PVCs,预分配的 PV Node Affinity 以及 StorageClass .allowedTopologies 选择合适的Node

10.下面在 Kube-Scheduler 中结合 Pod 中声明的 PVCs 选择 Node 过程描述正确的有?(单选题) C

  • A. Pod 中已经 Bound 的 PVCs 在 Kube-Scheduler 不做处理
  • B. Pod 中所有 UnBound 的 PVCs 会先找到能匹配的 PV 列表,并 check PV 的 NodeAffinity 与 Node Labals 中的拓扑信息是否匹配
  • C. Pod 中需要 Dynamic Provisioning PV 的 PVCs,check StorageClass .allowedTopologies 与 Node Labals 中的拓扑信息是否匹配
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值