Cloud Native Storage 环境和加入 Kubernetes 集群的虚拟机必须满足多个要求。

Cloud Native Storage 要求

  • 兼容的 vSphere 版本。
  • 兼容版本的 Kubernetes。
  • 部署在虚拟机上的 Kubernetes 集群。有关部署 vSphere CSI 插件并在 vSphere 上运行 Kubernetes 集群的详细信息,请参见 VMware vSphere 容器存储插件文档

Kubernetes 集群虚拟机的要求

  • 硬件版本为 15 或更高版本的虚拟机。在每个节点虚拟机上安装 VMware Tools。
  • 虚拟机硬件建议:
    • 根据工作负载要求充分设置 CPU 和内存。
    • 对节点虚拟机上的主磁盘使用 VMware 准虚拟 SCSI 控制器。
  • 所有虚拟机都必须有权访问共享数据存储,例如 vSAN。
  • 在每个节点虚拟机上设置 disk.EnableUUID 参数。请参见在 vSphere 虚拟机中配置 Kubernetes 集群
  • 为避免出现错误和不可预知的行为,请勿对 CNS 节点虚拟机生成快照。

CNS 文件卷的要求

  • 将 vSphere 版本 7.0 或更高版本与兼容的 Kubernetes 版本结合使用。
  • 使用兼容版本的 CSI。有关信息,请参见 VMware vSphere 容器存储插件文档
  • 启用并配置 vSAN 文件服务。必须配置必要的文件服务域、IP 池、网络等。有关信息,请参见 《管理 VMware vSAN》文档。
  • 按照特定准则配置从 Kubernetes 节点中的客户机操作系统到 vSAN 文件共享的网络访问。请参见配置 vSAN 文件共享的网络访问

配置 vSAN 文件共享的网络访问

要能够在通用 vSphere Kubernetes 环境中置备 ReadWriteMany 持久卷,请配置 Kubernetes 节点到 vSAN 文件服务网络所需的网络、交换机和路由器。

设置网络

配置网络时,请遵循以下要求:
  • 在每个 Kubernetes 节点上,可以使用专用虚拟网卡传输 vSAN 文件共享流量。仅当要对文件卷使用安全数据流量路径时,才需要此选项。
  • 如果使用专用虚拟网卡,请确保通过专用虚拟网卡的流量可路由到一个或多个 vSAN 文件服务网络。
  • 确保每个 Kubernetes 节点上只有客户机操作系统可以通过文件共享 IP 地址直接访问 vSAN 文件共享。节点中的 pod 不能 ping 或通过 IP 地址访问 vSAN 文件共享。

    CNS CSI 驱动程序确保仅那些配置为使用 CNS 文件卷的容器可以通过在客户机操作系统中创建挂载点来访问 vSAN 文件共享。

  • 避免在节点虚拟机和 vSAN 文件共享之间产生 IP 地址冲突。

下图是使用 vSAN 文件共享服务的 CNS 网络配置示例。

图中显示了具有 vSAN 文件共享的 CNS 网络配置。

在该图中,示例网络配置遵循以下准则。
  • 该配置对 CNS 环境中的不同项目使用单独的网络。
    网络 描述
    vSphere 管理网络 通常,在通用 Kubernetes 集群中,每个节点都有权访问此网络。
    Pod 或节点网络 Kubernetes 使用该网络进行节点到节点通信或 pod 到 pod 通信。
    专用文件共享网络 CNS 文件卷数据流量使用此网络。
    vSAN 文件共享网络 启用了 vSAN 文件共享且文件共享可用的网络。
  • 每个 Kubernetes 节点都有一个专用虚拟网卡用于文件流量。此虚拟网卡与用于节点到节点通信或 pod 到 pod 通信的虚拟网卡不同。此配置仅用作示例,但并不强制。
  • 只有那些配置为使用 CNS 文件共享的应用程序才能通过节点客户机操作系统中的挂载点访问 vSAN 文件共享。例如,在该图中,存在以下行为:
    • App-1 和 App-2 pod 配置为使用文件卷,并且可以通过 CSI 驱动程序创建的挂载点访问文件共享。
    • App-3 和 App 4 未配置文件卷,无法访问文件共享。
  • vSAN 文件共享作为容器部署在 ESXi 主机上的 vSAN 文件共享设备虚拟机中。Kubernetes Deployer 是一种可配置、部署和管理 Kubernetes 集群的软件或服务,可配置必要的路由器和交换机,以便 Kubernetes 节点中的客户机操作系统可以访问 vSAN 文件共享。

安全限制

尽管专用虚拟网卡可防止未经授权的 pod 直接访问文件共享,但存在某些安全限制:
  • CNS 文件功能假设具有 CNS 文件卷 ID 的任何用户都是卷的授权用户。具有 CNS 文件卷 ID 的任何用户都可以访问卷中存储的数据。
  • CNS 文件卷仅支持 AUTH_SYS 身份验证,该身份验证是基于用户 ID 的身份验证。为保护对 CNS 文件卷中数据的访问,必须对访问 CNS 文件卷的容器使用相应的用户 ID。
  • 引用 CNS 文件卷的未绑定 ReadWriteMany 持久卷可由任何命名空间下任何 Kubernetes 用户创建的持久卷声明绑定。确保只有授权用户才能访问 Kubernetes 以避免出现安全问题。

配置 CSI 驱动程序以访问 vSAN 文件服务集群

根据配置,CSI 驱动程序可以在启用了文件服务的一个或多个 vSAN 集群上置备文件卷。

可以限制仅对启用了文件服务的特定 vSAN 集群进行访问。部署 Kubernetes 集群时,配置 CSI 驱动程序,使其能够访问特定的文件服务 vSAN 集群。因此,CSI 驱动程序只能在这些 vSAN 集群上置备文件卷。

在默认配置中,CSI 驱动程序使用 vCenter Server 中提供的任何文件服务 vSAN 集群进行文件卷置备。CSI 驱动程序不会验证在置备文件卷时可访问的文件服务 vSAN 集群。