GKE On-Prem 通过 VMware vSphere 存储、Kubernetes 树形卷插件和容器存储界面(CSI)驱动程序与外部块或文件存储系统集成。
vSphere 存储
默认情况下,GKE On-Prem 管理员和用户集群都使用 vSphere 存储。管理员集群需要为其 etcd 数据预配 VMware 数据存储区。
当您创建用户集群时,GKE On-Prem 使用 vSphere Kubernetes 卷插件在管理集群使用的同一个 VMware 数据存储区中动态配置新虚拟机磁盘(VMDK)。此 VMDK 保存用户集群的 etcd 数据。
用户集群的默认 StorageClass 指向 VMware 数据存储区。默认情况下,为用户集群预配的 Kubernetes PersistentVolumes 就是该数据存储区的 VMDK。这并未是管理员集群使用的那个数据存储区。
管理员集群和用户集群使用的 VMware 数据存储区可能由块设备上的 NFS、vSAN 或 VMFS(例如外部存储阵列)提供支持。在多主机环境中,每个块存储设备都必须挂接到环境中的所有主机,并且必须通过在其他主机上装载数据存储区选项在每个主机上配置数据存储区。
在 GKE On-Prem 中,StatefulSets 会使用 PersistentVolumeClaim(由指向 vSphere 存储空间的 StorageClasses 支持)。
Kubernetes 树内卷插件
Kubernetes 随附了很多树内卷插件。您可以选择使用其中任何一种来为您的有状态工作负载提供块或文件存储。借助树内插件,工作负载可以直接连接到存储空间,而无需通过 vSphere 存储。
vSphere 存储可在由任意 iSCSI、FC 或 NFS 存储设备支持的数据存储区内自动动态预配卷,而许多树内插件不支持动态预配。它们需要您手动创建 PersistentVolume。
下表介绍了几种树内卷插件:
树内卷插件 | 说明 | 支持的访问模式 | 动态预配 |
---|---|---|---|
Fibre Channel | 通用存储插件 | 读取/写入单个 Pod | 否 |
iSCSI | 通用存储插件 | 读取/写入单个 Pod | 否 |
NFS | 通用存储插件 | 读取/写入多个 Pod | 否 |
Ceph RBD | 开源软件定义存储 | 读取/写入单个 Pod | 是 |
CephFS | 开源软件定义存储 | 读取/写入多个 Pod | 否 |
Portworx | 专有软件定义存储 | 读取/写入多个 Pod | 是 |
Quobyte | 专有软件定义存储 | 读取/写入单个 Pod | 是 |
StorageOS | 专有软件定义存储 | 读取/写入单个 Pod | 是 |
容器存储接口
容器存储接口 (CSI) 是一种标准 API,可让 Kubernetes 将任意存储系统提供给容器化工作负载。当您将 CSI 兼容的卷驱动程序部署到 Kubernetes 集群时,工作负载无需通过 vSphere 存储空间即可直接连接到存储。
GKE On-Prem 随 Kubernetes 1.13+ 一起发布,该版本支持 CSI v1.0。要在集群中使用 CSI,您需要部署由存储供应商提供的 CSI 驱动程序。然后,您可以将工作负载配置为使用驱动程序的 StorageClass,或将其设置为默认 StorageClass。
问题排查
请参阅排查存储问题。