架构
DirectPV 按照 CSI 规范 实现。它附带以下作为 Kubernetes 中 Pod 运行的组件。
控制器节点服务器
当 DirectPV 包含来自 DirectCSI 的传统卷时,以下附加组件也会作为 Pod 运行。
传统控制器传统节点服务器
控制器

控制器作为名为 controller 的 Deployment Pod 运行。DirectPV 控制器有三个副本。副本会选举一个实例来处理请求。
每个 Pod 都有以下容器。
-
控制器满足 CSI 创建、删除和扩展卷的请求。
-
CSI 供应器将来自
Persistent Volume Claim的卷创建和删除请求桥接到 CSI 控制器。 -
CSI 调整大小器将来自
Persistent Volume Claim的卷扩展请求桥接到 CSI 控制器。
控制器服务器
控制器服务器作为 controller Deployment Pod 中名为 controller 的容器运行。
它处理以下请求。
-
创建卷控制器服务器在合适
DirectPVDriveCRD 上反转请求的存储空间后,创建一个新的DirectPVVolumeCRD。有关更多信息,请参阅 卷调度指南。 -
删除卷控制器服务器在释放
DirectPVDriveCRD 中先前保留的空间后,删除了未绑定卷的现有DirectPVVolumeCRD。 -
扩展卷控制器服务器在
DirectPVDriveCRD 中反转请求的存储空间后,扩展了现有DirectPVVolumeCRD。
传统控制器

传统控制器作为名为 legacy-controller 的 Deployment Pod 运行。传统控制器有三个副本,位于任何 Kubernetes 节点。副本会选举一个实例来处理请求。
每个 Pod 都有以下容器。
-
CSI 供应器将来自
Persistent Volume Claim的传统卷创建和删除请求桥接到 CSI 控制器。 -
控制器仅满足 CSI 删除和扩展卷的请求。创建卷的请求被禁止。传统控制器仅适用于先前在
DirectCSI中创建的传统卷。 -
CSI 调整大小器将来自
Persistent Volume Claim的传统卷扩展请求桥接到 CSI 控制器。
传统控制器服务器
传统控制器服务器作为 legacy-controller Deployment Pod 中的 controller 容器运行。它处理以下请求。
-
创建卷控制器服务器对此请求返回错误。DirectPV 不创建新的传统 DirectCSI 卷。
-
删除卷控制器服务器在释放
DirectPVDriveCRD 中之前预留的空间后,会删除未绑定卷的DirectPVVolumeCRD。 -
扩展卷控制器服务器在撤销
DirectPVDriveCRD 中请求的存储空间后,会扩展DirectPVVolumeCRD。
节点服务器

节点服务器以名为 node-server 的 DaemonSet Pod 形式运行在所有或选定的 Kubernetes 节点中。每个节点服务器 Pod 在节点上独立运行。
每个 Pod 都有以下容器。
-
节点驱动程序注册器将节点服务器注册到 kubelet 以接收 CSI RPC 调用。
-
节点服务器响应
stage、unstage、publish、unpublish和expand卷 RPC 请求。 -
节点控制器响应来自
DirectPVDrive、DirectPVVolume、DirectPVNode和DirectPVInitRequest的 CRD 事件。 -
存活性探测公开
/healthz端点,供 Kubernetes 检查节点服务器的存活性。
传统节点服务器
传统节点服务器以名为 legacy-node-server 的 DaemonSet Pod 形式运行在所有或选定的 Kubernetes 节点中。每个传统节点服务器 Pod 在节点上独立运行。
每个 Pod 包含以下正在运行的容器
-
节点驱动程序注册器将传统节点服务器注册到 kubelet 以接收 CSI RPC 调用。
-
节点服务器响应
stage、unstage、publish、unpublish和expand卷 RPC 请求。 -
存活性探测公开
/healthz端点,供 Kubernetes 检查传统节点服务器的存活性。