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 将任意存储系统提供给容器化工作负载。在 Kubernetes 集群中部署与 CSI 兼容的卷驱动程序时,工作负载无需通过 vSphere 存储空间即可直接连接到存储。
GKE On-Prem 随 Kubernetes 1.12+ 一起发布,该版本支持 CSI v0.3。某些存储驱动程序支持此旧版 CSI,您可以使用这些驱动程序为有状态工作负载提供块或文件存储。
未来计划
在以后的版本中,GKE On-Prem 将随附 Kubernetes 1.13+,您将可以部署 CSI v1.0 驱动程序。这将实现与更多第三方存储系统的直接集成。我们将提供经过 Google 验证完成的存储空间合作伙伴列表,以便与 GKE On-Prem 配合使用。
我们正致力于开发高级数据管理界面,以实现应用快照,备份和恢复等使用场合。敬请关注更多详情。