K8s 中通过 pvc 以及 pv 的设计体系来简化用户对存储的使用,而存储快照的设计其实是仿照 pvc & pv 体系的设计思想。当用户需要存储快照的功能时,可以通过 VolumeSnapshot 对象来声明,并指定相应的 VolumeSnapshotClass 对象,之后由集群中的相关组件动态生成存储快照以及存储快照对应的对象 VolumeSnapshotContent。
拓扑是 K8s 集群中为管理的 nodes 划分的一种“位置”关系,意思为:可以通过在 node 的 labels 信息里面填写某一个 node 属于某一个拓扑。
常见的有三种:
可自定义拓扑,例如可以用 rack,也就是机房中的机架这个纬度来做一个拓扑域
K8s 中创建 pod 的流程和创建 PV 的流程,其实可以认为是并行进行的,这样的话,就没有办法来保证 pod 最终运行的 node 是能访问到 有位置限制的 PV 对应的存储(例如 I/O 性能高的本地存储),最终导致 pod 没法正常运行。可以通过 nodeAffinity 来指定哪些 node 可以访问这个 PV。
在 K8s 中将 PV 和 PVC 的 binding 操作和动态创建 PV 的操作做了 delay,delay 到 pod 调度结果出来之后,再去做这两个操作。
no-provisioner
:告诉 K8s 它不会去动态创建 PVVolumeBindingMode
:显示指定延迟绑定K8s 中对存储的扩展功能都是推荐通过 csi out-of-tree 的方式来实现的。csi 实现存储扩展主要包含两部分:
minikube node list
minikube node add
kubectl edit sc <scname>
:编辑资源,不用修改编排文件,再去apply
sc
:StorageClass