Professional Documents
Culture Documents
管理
Update 1
修改日期:2020 年 11 月 20 日
VMware vSphere 7.0
vCenter Server 7.0
VMware ESXi 7.0
vSphere with Tanzu 配置和管理
https://docs.vmware.com/cn/。
©
版权所有 2019、2020 VMware, Inc. 保留所有权利。 版权和商标信息
VMware, Inc. 2
目录
更新信息 9
3 启用工作负载管理的必备条件 42
设置具有 vSphere 网络连接的 主管集群 的系统要求和拓扑 42
设置具有 NSX-T Data Center 的 主管集群 的系统要求和拓扑 49
为使用 vSphere 网络堆栈的 主管集群 创建 vSphere Distributed Switch 55
为 vSphere with Tanzu 创建存储策略 56
创建已订阅内容库 58
为 vSphere with Tanzu 安装并配置 NSX-T Data Center 59
创建 vSphere Distributed Switch 61
创建分布式端口组 62
将主机添加到 vSphere Distributed Switch 63
部署和配置 NSX Manager 64
部署 NSX Manager 节点以形成集群 65
添加许可证 67
添加计算管理器 68
创建传输区域 68
为主机隧道端点 IP 地址创建 IP 池 69
VMware, Inc. 3
vSphere with Tanzu 配置和管理
创建主机上行链路配置文件 70
创建 Edge 上行链路配置文件 70
创建传输节点配置文件 71
在集群上配置 NSX-T Data Center 72
配置和部署 NSX Edge 传输节点 72
创建 NSX Edge 集群 74
创建第 0 层上行链路分段 75
创建第 0 层网关 75
4 启用工作负载管理 78
vSphere with Tanzu 的许可 78
使用 vSphere 网络堆栈启用工作负载管理平台 79
将具有 NSX-T Data Center 的工作负载平台配置为网络堆栈 82
将 Tanzu 版本许可证分配给 主管集群 84
vSphere with Tanzu 配置最佳做法 85
更改 Kubernetes API 端点证书 85
VMware, Inc. 4
vSphere with Tanzu 配置和管理
持久卷的动态置备和静态置备 113
更改 主管集群上的存储设置 114
更改命名空间上的存储设置 114
显示 主管命名空间或 Tanzu Kubernetes 集群中的存储类 115
为有状态应用程序置备动态持久卷 116
为有状态应用程序置备静态持久卷 118
扩展持久卷 120
监控 主管命名空间 或 Tanzu Kubernetes 集群中的卷运行状况 121
在 vSphere Client 中监控持久卷 123
在 vSphere with Tanzu 中使用持久服务 125
为 vSphere with Tanzu 设置 vSAN Direct 126
VMware, Inc. 5
vSphere with Tanzu 配置和管理
VMware, Inc. 6
vSphere with Tanzu 配置和管理
VMware, Inc. 7
vSphere with Tanzu 配置和管理
《vSphere with Tanzu 配置和管理》提供有关使用 vSphere Client 配置和管理 vSphere with Tanzu 的
信息。此外,还提供了有关使用 kubectl 连接到在 vSphere with Tanzu 上运行的命名空间以及在指定的
命名空间上运行 Kubernetes 工作负载的信息。
目标读者
《vSphere with Tanzu 配置和管理》的目标用户是希望在 vSphere 中启用 vSphere with Tanzu、为
DevOps 团队配置和提供命名空间,以及在 vSphere 中管理和监控 Kubernetes 工作负载的 vSphere 管
理员。希望使用 vSphere with Tanzu 的 vSphere 管理员应具备容器和 Kubernetes 的基本知识。
VMware, Inc. 8
更新信息
修订版本 描述
VMware, Inc. 9
vSphere with Tanzu 配置和管理
修订版本 描述
2020 年 10 月 编辑较少。
09 日
2020 年 10 月 初始版本。
06 日
VMware, Inc. 10
vSphere with Tanzu 基础知识
1
通过使用 vSphere with Tanzu,可以将 vSphere 集群转换为在专用资源池中运行 Kubernetes 工作负载
的平台。在 vSphere 集群上启用 vSphere with Tanzu 后,会在 Hypervisor 层中直接创建一个
Kubernetes 控制平面。之后,可以通过部署 vSphere Pod 运行 Kubernetes 容器,也可以通过
VMware Tanzu™ Kubernetes Grid™ 服务 创建上游 Kubernetes 集群,并在这些集群中运行应用程序。
本章讨论了以下主题:
当今应用体系的挑战
如今的分布式系统由多个通常运行大量 Kubernetes Pod 和虚拟机的微服务构成。不以 vSphere with
Tanzu 为基础的典型堆栈包含一个底层虚拟环境,其中,Kubernetes 基础架构部署在虚拟机内,
Kubernetes pod 也分别运行在这些虚拟机中。有三个单独的角色分别控制该体系的每个部分,即应用程
序开发人员、Kubernetes 集群管理员和 vSphere 管理员。
VMware, Inc. 11
vSphere with Tanzu 配置和管理
图 1-1. 当今的应用体系
Kubernetes 工作负载
Pod 卷 服务 ...
开发人员
Kubernetes 集群
虚拟环境
虚拟机 网络 存储
...
vSphere Admin
不同角色无法看到或控制其他角色的环境:
整个堆栈上的操作可能会非常困难,因为这些操作需要所有三个角色之间进行通信。堆栈的不同层之间缺
乏集成,这也可能带来难题。例如,Kubernetes 调度程序无法查看 vCenter Server 清单,并且无法智能
地放置容器。
VMware, Inc. 12
vSphere with Tanzu 配置和管理
命名空间
开发人员
存储
CPU 内存 存储
虚拟环境
Kubernetes 层
ESXi 网络 存储
vSphere Admin
什么是工作负载?
在 vSphere with Tanzu 中,工作负载是通过以下方式之一部署的应用程序:
VMware, Inc. 13
vSphere with Tanzu 配置和管理
ESXi 主机
容器
容器
容器
Linux 内核 Linux 内核
CPU 内存 存储 CPU 内存 存储
VMware, Inc. 14
vSphere with Tanzu 配置和管理
vSphere Pod
容器
容器映像
容器
容器引擎
临时磁盘
Pod 引擎 Spherelet
持久卷
hostd
vNIC
NSX vSwitch
对于网络连接,vSphere Pod 和通过 Tanzu Kubernetes Grid 服务 创建的 Tanzu Kubernetes 集群的虚
拟机使用 NSX-T Data Center 提供的拓扑。有关详细信息,请参见 vSphere with Tanzu 的网络连接。
仅使用 NSX-T Data Center 作为网络连接堆栈的 主管集群 支持 vSphere Pod。配置了 vSphere 网络连
接堆栈的集群不提供此支持。
n Kubernetes 的固有安装
n 与 vSphere 基础架构集成
VMware, Inc. 15
vSphere with Tanzu 配置和管理
n 可用于生产
n VMware 提供全面支持
n 由 Kubernetes 管理
Kubernetes 的固有安装
Tanzu Kubernetes 是 Kubernetes 的固有安装。
与 vSphere 基础架构集成
Tanzu Kubernetes 集群与底层 vSphere 基础架构相集成,该基础架构针对运行 Kubernetes 进行了优
化。
可用于生产
Tanzu Kubernetes 集群针对运行生产工作负载进行了调优。
VMware, Inc. 16
vSphere with Tanzu 配置和管理
VMware 提供全面支持
Tanzu Kubernetes 集群受 VMware 支持。
Tanzu Kubernetes 集群使用 VMware 的开源 Photon OS,部署在 vSphere 基础架构上,并在 ESXi 主
机上运行。如果您在使用堆栈的任何一层(从 Hypervisor 到 Kubernetes 集群)时遇到问题,只需与
VMware 这一家供应商联系即可。
由 Kubernetes 管理
Tanzu Kubernetes 集群由 Kubernetes 进行管理。
n 创建具有强大资源和安全隔离的容器化应用程序。
n 管理集群级别访问控制并配置 PodSecurityPolicies.
n 创建 NodePort. 类型的服务。
VMware, Inc. 17
vSphere with Tanzu 配置和管理
n 使用 HostPath 卷。
n 运行特权 pod。
用户角色和工作流
作为 vSphere 管理员,用于与 vSphere with Tanzu 平台进行交互的主界面是 vSphere Client。概括地
说,您的职责包括配置 主管集群 和命名空间,DevOps 工程师可以在其中部署 Kubernetes 工作负载。
您应熟悉有关 vSphere 和 NSX-T 技术的知识,并了解有关 Kubernetes 的基本知识。
vSphere 管理员工作流
配置用于主管集群的计算、存储和网络连接
将 vSphere 集群配置为主管集群
在主管集群上创建并配置命名空间
VMware, Inc. 18
vSphere with Tanzu 配置和管理
DevOps 工程师工作流
获取您有权访问的上下文。上下文与主管集群上的
命名空间相对应
VMware, Inc. 19
vSphere with Tanzu 配置和管理
计算配置
创建 vSphere 集群
存储配置
使用 vSAN 或其他存储解决方案配置共享存储
为主机的隧道端点创建 IP 池
创建主机传输节点
创建 NSX Edge 集群
创建 NSX-T 第 0 层上行链路分段
创建 NSX-T 第 0 层网关
将 vSphere 集群配置为主管集群
VMware, Inc. 20
vSphere with Tanzu 配置和管理
VMware, Inc. 21
vSphere with Tanzu 配置和管理
计算配置
创建 vSphere 集群
存储配置
使用 vSAN 或其他存储解决方案
配置共享存储
网络配置
将集群中的主机添加到交换机
为工作负载网络创建分布式端口组
Tanzu Kubernetes
集群配置
创建已订阅内容库并将其与主管集群
相关联以使用 Tanzu Kubernetes 集群节点
将 vSphere 集群配置为主管集群
VMware, Inc. 22
vSphere with Tanzu 配置和管理
命名空间创建和配置工作流
作为 vSphere 管理员,您可以在 主管集群 上创建和配置命名空间。您必须咨询 DevOps 工程师,以收集
有关他们要运行的应用程序的特定资源要求,并相应地配置命名空间。有关详细信息,请参见第 5 章 在 主
管集群 上使用 vSphere 命名空间。
图 1-9. 命名空间配置工作流
准备命名空间配置
创建用于定义放置持久卷的存储类的存储策略
创建已订阅内容库并将其与主管
集群相关联以使用 Tanzu Kubernetes 集群节点
命名空间配置
创建命名空间
设置将访问命名空间的用户和用户组的权限
分配为放置持久卷而创建的存储策略
设置存储、CPU 和内存的容量和使用配额
VMware, Inc. 23
vSphere with Tanzu 配置和管理
获取所需信息
登录到主管集群
并获取上下文
使用您的用户凭据登录到主管集群
列出您具有访问权限的上下文(命名空间)
创建应用程序 YAML 文件
部署应用程序 YAML 文件
VMware, Inc. 24
vSphere with Tanzu 配置和管理
获取所需信息
与 vSphere 管理员核实是否存在一个命名空间
满足部署 Tanzu Kubernetes 集群的资源要求
与您的系统管理员核实此命名空间是否配置
有已订阅内容库用于 Tanzu Kubernetes 集群
与您的系统管理员核实您对命名空间是否具有编辑权限
获取用于登录到主管
集群的 vCenter Single Sign-On 凭据
登录到主管集群
并获取上下文
列出您具有权限的上下文(命名空间)
创建 Tanzu Kubernetes 集群
置备 Tanzu Kubernetes 集群
监控集群节点的部署
VMware, Inc. 25
vSphere with Tanzu 配置和管理
n 表示在集群中运行的逻辑应用程序的命名空间。
n 主管集群 上每个命名空间的资源池。
在每个命名空间内,您可以查看:
n vSphere Pod。
n Kubernetes 控制平面虚拟机。
n 网络和存储资源。
VMware, Inc. 26
vSphere with Tanzu 组件和架构
2
启用了 vSphere with Tanzu 的集群称为 主管集群。该集群是 vSphere with Tanzu 的基础,提供运行
vSphere Pod 和 Tanzu Kubernetes 集群所需的组件和资源。
本章讨论了以下主题:
vSphere
主管集群
Center
ESXi 网络 存储
DevOps vSphere Admin
VMware, Inc. 27
vSphere with Tanzu 配置和管理
图 2-2. 主管集群的架构
vCenter Server
vSphere Admin
主管集群
VMware, Inc. 28
vSphere with Tanzu 配置和管理
主管命名空间
命名空间设置 vSphere Pod 和使用 Tanzu Kubernetes Grid 服务 创建的 Tanzu Kubernetes 集群可以
运行的资源边界。最初创建命名空间时,它在 主管集群 内具有无限资源。作为 vSphere 管理员,您可以
设置 CPU、内存、存储以及可在命名空间中运行的 Kubernetes 对象数量的限制。将为 vSphere 中的每
个命名空间创建一个资源池。存储限制在 Kubernetes 中表示为存储配额。
图 2-3. 主管命名空间
主管集群
命名空间
CPU 内存 存储
Tanzu Kubernetes 集群
Tanzu Kubernetes 集群是由 VMware 打包、签名和支持的开源 Kubernetes 软件的完整分发版。在
vSphere with Tanzu 环境中,您可以使用 Tanzu Kubernetes Grid 服务 在 主管集群 上置备 Tanzu
Kubernetes 集群。您可以使用 kubectl 和 YAML 定义以声明方式调用 Tanzu Kubernetes Grid 服务
API。
VMware, Inc. 29
vSphere with Tanzu 配置和管理
Pod
RUNC
容器
Pod
RUNC
容器
Tanzu Tanzu
Kubernetes Kubernetes
集群 集群
工作 工作
vSphere Pod 节点 节点
Linux 容器
虚拟机 虚拟机
Linux 容器
Linux 容器
vSphere vSphere Tanzu Tanzu Tanzu vSphere
Linux 容器 虚拟机 虚拟机 虚拟机 虚拟机 Kubernetes Kubernetes Kubernetes 虚拟机
Pod Pod Pod
集群 集群 集群
主管集群 主管集群
VMware SC 控制 VMware SC 控制
Tanzu™ 层面节点 Tanzu™ 层面节点
虚拟机 集群 虚拟机 集群
Kubernetes Kubernetes
运算符 API 运算符 API
Grid™ 虚拟机 Grid™ 虚拟机
服务 服务
vSphere 集群 vSphere 集群
VMware, Inc. 30
vSphere with Tanzu 配置和管理
用户命名空间 服务 vCenter
命名空间 Server
Tanzu Tanzu
UI
CPI CSI CNI 编写 Kubernetes Kubernetes
集成
Grid 资源 Grid 服务
Pod Pod Pod Pod
集群
Tanzu Kubernetes 集群 资源 集群 API UI
控制器 集成
虚拟机 虚拟机 虚拟机 计算机
资源
集群 API
虚拟机 提供程序
资源
Supervisor 虚拟机 UI
资源 服务 集成
VMware, Inc. 31
vSphere with Tanzu 配置和管理
DevOps 工程师使用 kubectl 的 vSphere 插件 通过其 vCenter Single Sign-On 凭据连接到 主管命名空
间。连接后,DevOps 工程师使用 kubectl 置备 Tanzu Kubernetes 集群。
主管集群
主管集群 提供构建 Tanzu Kubernetes 集群所在的管理层。Tanzu Kubernetes Grid 服务 是一个自定义
控制器管理器,其中包含一组属于 主管集群 的控制器。Tanzu Kubernetes Grid 服务 的用途是置备
Tanzu Kubernetes 集群。
有关详细信息,请参见第 4 章 启用工作负载管理。
VMware, Inc. 32
vSphere with Tanzu 配置和管理
vSphere 命名空间
您可以将一个或多个 Tanzu Kubernetes 集群部署到一个 vSphere Namespace。资源配额和存储策略适
用于 vSphere Namespace,并由部署在那儿的 Tanzu Kubernetes 集群继承。
内容库
vSphere 内容库提供用于创建 Tanzu Kubernetes 集群节点的虚拟机模板。对于要在其中部署 Tanzu
Kubernetes 集群的每个 主管集群,您必须定义一个已订阅内容库对象,以便为 Tanzu Kubernetes Grid
服务 用于构建集群节点的 OVA 提供来源。可以为多个 主管集群 配置同一个已订阅内容库。已订阅内容库
与 vSphere Namespace 之间没有关系。
集群安全性
默认情况下,Tanzu Kubernetes 集群是安全的。受限 PodSecurityPolicy (PSP) 可用于 Tanzu
Kubernetes Grid 服务 置备的任何 Tanzu Kubernetes 集群。如果开发人员需要运行特权 Pod 或根容
器,集群管理员必须至少创建一个 RoleBinding,以便授予用户对默认特权 PSP 的访问权限。有关详细信
息,请参见对 Tanzu Kubernetes 集群使用 POD 安全策略。
VMware, Inc. 33
vSphere with Tanzu 配置和管理
开发人员
第1层网关
网络
上行链路
VLAN
API 虚拟 IP
输入虚拟 IP
主管集群
命名空间 A 命名空间 B
K8S
控制层面 vSphere vSphere
Pod Pod
Ncp
管理网络
n NSX Container Plug-in (NCP) 提供 NSX-T Data Center 与 Kubernetes 之间的集成。NCP 的主要
组件在容器中运行,并与 NSX Manager 和 Kubernetes 控制平面进行通信。NCP 监控对容器和其他
资源的更改,并通过调用 NSX API 管理容器的网络资源,例如,逻辑端口、分段、路由器和安全组。
VMware, Inc. 34
vSphere with Tanzu 配置和管理
vSphere
Distributed
Switch
命名空间 A 分段
命名空间 B 分段
NCP
受管 命名空间 C 分段
NSX-T
覆盖 控制层面虚拟机分段
网络
现有
vSphere 管理网络
网络
ESXi 管理网络
第1层网关
VMware, Inc. 35
vSphere with Tanzu 配置和管理
n 您还可以使用现有 NSX-T Data Center 部署或部署 NSX-T Data Center 的新实例来手动配置 主管集
群 网络。有关详细信息,请参见为 vSphere with Tanzu 安装并配置 NSX-T Data Center。
VMware, Inc. 36
vSphere with Tanzu 配置和管理
管理网络
主管 主管 Tanzu 主管 Tanzu
Tanzu
Kubernetes Kubernetes Kubernetes Kubernetes Kubernetes
Kubernetes
控制平面 控制平面 控制工作 控制平面 控制工作
控制节点
节点 节点 节点 节点 节点
工作负载 vSphere
Distributed Switch
主管分布式端口组 工作负载分布式端口组
链路聚合组
机架置顶式交换机 机架置底式交换机
L2/L3
架构
VMware, Inc. 37
vSphere with Tanzu 配置和管理
您选择的网络连接堆栈取决于您的许可和要求。有关详细信息,请参见第 3 章 启用工作负载管理的必备条
件。
要直接实现 vSphere with Tanzu 和部署 Tanzu Kubernetes 集群,您可以使用本机 vSphere 网络连
接。借助 VDS 网络连接,您可以提供自己的负载均衡器。有关详细信息,请参见设置具有 vSphere 网络
连接的 主管集群 的系统要求和拓扑。
借助 NSX-T 网络连接,当 Tanzu Kubernetes 集群由 Tanzu Kubernetes Grid 服务 置备时,会将 NSX-
T 负载均衡器自动部署到 NSX Edge 节点。此负载均衡器以虚拟服务器的形式提供负载均衡服务。将创建
一个虚拟服务器,为 Kubernetes API 提供第 4 层负载均衡。此虚拟服务器负责将 kubectl 流量路由到控
制平面。此外,对于集群上提供的每个 Kubernetes 服务负载均衡器,都会创建一个为该服务提供第 4 层
负载均衡的虚拟服务器。
VMware, Inc. 38
vSphere with Tanzu 配置和管理
外部网络
SC 第 1 层 TKG
DevOps 工程师 GW 集群 工作节点 VM
第 0 层 GW
第 1 层 GW
SC 控制
层面虚拟机
创建
NSXT 控制平面节点 VM
命名空间 Ncp
vCenter Manager
vSphere Admin
VDS 上行链路
管理
Edge 上行链路
SC 控制平面分段
主管 NS 分段
TKG 集群分段
n Antrea
n Calico
VMware, Inc. 39
vSphere with Tanzu 配置和管理
vSphere 管理员的权限
作为 vSphere 管理员,您需要具有 vSphere 集群的权限,以便将其配置为 主管集群,以及创建和管理命
名空间。您必须至少具有与 vSphere 集群中的用户帐户关联的以下特权之一:
设置 DevOps 工程师的权限
作为 vSphere 管理员,您可以向命名空间级别的用户帐户授予只读或写入权限。用户帐户必须在连接到
vCenter Single Sign-On 的标识源中可用。一个用户帐户可以访问多个命名空间。属于管理员组的用户可
以访问 主管集群 上的所有命名空间。
使用 主管集群 进行身份验证
作为 DevOps 工程师,您可以使用 适用于 vSphere 的 Kubernetes CLI 工具 以及 vCenter Single Sign-
On 凭据和 Kubernetes 控制平面 IP 地址向 主管集群 进行身份验证。有关详细信息,请参见以 vCenter
Single Sign-On 用户的身份连接到 主管集群。
VMware, Inc. 40
vSphere with Tanzu 配置和管理
VMware, Inc. 41
启用工作负载管理的必备条件
3
在为 vSphere 集群启用工作负载管理并将其转换为 主管集群 之前,您的环境必须满足特定的必备条件。
本章讨论了以下主题:
n 创建已订阅内容库
工作负载网络
要配置具有 vSphere 网络堆栈的 主管集群,必须将集群中的所有主机都连接到 vSphere Distributed
Switch。根据为 主管集群 实施的拓扑,您将创建一个或多个分布式端口组。可以将端口组指定为 主管命
名空间 的工作负载网络。
VMware, Inc. 42
vSphere with Tanzu 配置和管理
IP 范围的分配
计划 主管集群 的网络拓扑时,请计划使用两种类型的 IP 范围:
n 网络:192.168.120.0/24
n HAProxy VIP:192.168.120.128/24
n 192.168.120.31-192.168.120.40 用于主工作负载网络
n 192.168.120.51-192.168.120.60 用于其他工作负载网络
具有一个工作负载网络的拓扑
在此拓扑中,您可以为以下组件配置一个具有一个网络的 主管集群:
n Kubernetes 控制平面虚拟机
VMware, Inc. 43
vSphere with Tanzu 配置和管理
管理界面
HAProxy DevOps 用户或外部服务
工作负载和
虚拟 IP 接口
管理网络 主管集群主
工作负载网络
主和工作负载
分布式端口组
Tanzu Tanzu
Kubernetes Kubernetes
集群 1 集群 2
主管集群
主管集群上的所有命名空间
DevOps 用户或外部应用程序的流量路径如下所示:
具有隔离工作负载网络的拓扑
在此拓扑中,可以将网络配置为以下组件:
VMware, Inc. 44
vSphere with Tanzu 配置和管理
管理界面
HAProxy DevOps 用户或外部服务
可路由的 L3 网络的架构
Tanzu Tanzu
Kubernetes Kubernetes
集群 1 集群 2
主管集群上的所有命名空间
主管集群
DevOps 用户或外部服务的流量路径如下所示:
具有多个隔离工作负载网络的拓扑
在此拓扑中,您可以将一个端口组配置为充当主工作负载网络,并将一个专用端口组配置为充当每个命名
空间的工作负载网络。HAPoxy 部署有两个虚拟网卡,您可以将其连接到主工作负载网络或任一工作负载
网络。还可以使用可路由到主工作负载网络和工作负载网络的现有虚拟机网络。
在此拓扑中,DevOps 用户和外部服务的流量路径与隔离工作负载网络拓扑相同。
VMware, Inc. 45
vSphere with Tanzu 配置和管理
工作负载和
虚拟 IP 接口
可路由的 L3 网络的架构
主管集群
具有三个虚拟网卡的 HAProxy 配置
在此配置中,您可以部署具有三个虚拟网卡的 HAProxy 虚拟机,从而将 HAProxy 连接到前端网络。
DevOps 用户和外部服务可以通过前端网络中的虚拟 IP 访问 HAProxy。
工作负载接口
可路由网络的架构
HAProxy 工作负载网络
管理网络 AcmeCorp AjiraAir
工作负载网络 工作负载网络
主管集群主
工作负载网络
AcmeCorp 工作负载 AjiraAir 工作负载
分布式端口组 分布式端口组
主管集群工作负载
分布式端口组
AcmeCorp AjiraAir
Tanzu Tanzu
Kubernetes Kubernetes
集群 1 AcmeCorp 集群 1 AjiraAir
主管集群 Tanzu Tanzu
控制 Kubernetes Kubernetes
平面虚拟机 集群 2 集群 2
VMware, Inc. 46
vSphere with Tanzu 配置和管理
在可能的拓扑之间进行选择
在每个可能的拓扑之间进行选择之前,请先评估环境的需求:
a 否:最简单的拓扑,其中一个工作负载网络为所有组件提供服务。
b 是:隔离的工作负载网络拓扑,其中具有单独的主工作负载网络和工作负载网络。
a 否:隔离的工作负载网络拓扑,其中具有单独的主工作负载网络和工作负载网络。
b 是:多个工作负载网络拓扑,其中每个命名空间有一个单独的工作负载网络,以及一个专用的主工
作负载网络。
最低计算和要求
表 3-1. 最低计算要求
系统 最小部署大小 CPU 内存 存储
注 请确保加入集群的主机的名称
使用小写字母。否则,为工作负载
管理启用集群可能会失败。
Kubernetes 控制平面虚 3 4 16 GB 16 GB
拟机
VMware, Inc. 47
vSphere with Tanzu 配置和管理
表 3-2. 最低网络连接要求
组件 最小数量 所需的配置
VMware, Inc. 48
vSphere with Tanzu 配置和管理
管理、Edge 和工作负载域集群的拓扑
您可以在单个 vSphere 集群上部署具有管理、Edge 和工作负载管理功能的 vSphere with Tanzu。
VMware, Inc. 49
vSphere with Tanzu 配置和管理
外部网络
vSphere
Distributed 输出 输入
Switch
vCenter
Server NSX NSX NSX
Edge Edge
Edge
NSX 节点 节点
集群
Manager VM1 VM2
命名空间 1 控制层面节点
vSphere Pod 1
Pod 1
工作节点 1
vSphere
Pod 2 Pod 2
工作节点 2
命名空间 2 -
Tanzu Kubernetes 集群
管理、Edge 和工作负载
管理集群
(Supervisor 集群)
VMware, Inc. 50
vSphere with Tanzu 配置和管理
注 请确保加入集群的
主机的名称使用小写字
母。否则,为工作负载
管理启用集群可能会失
败。
Kubernetes 控制平面虚 3 4 16 GB 16 GB
拟机
VMware, Inc. 51
vSphere with Tanzu 配置和管理
外部网络
工作负载管理集群
管理和 Edge 集群 (Supervisor 集群)
VMware, Inc. 52
vSphere with Tanzu 配置和管理
表 3-5. 工作负载管理集群的最低计算要求
系统 最小部署大小 CPU 内存 存储
注 请确保加入集群的
主机的名称使用小写字
母。否则,为工作负载
管理启用集群可能会失
败。
Kubernetes 控制平面虚 3 4 16 GB 16 GB
拟机
网络要求
无论您在 vSphere 中为 Kubernetes 工作负载管理实施的拓扑如何,您的部署都必须满足以下网络连接要
求:
组件 最小数量 所需的配置
NTP 和 DNS 服务器 1 可用于 vCenter Server 的 DNS 服务器和 NTP 服务器。
映像注册表 访问服务注册表。
VMware, Inc. 53
vSphere with Tanzu 配置和管理
组件 最小数量 所需的配置
VMware, Inc. 54
vSphere with Tanzu 配置和管理
组件 最小数量 所需的配置
vSphere Pod CIDR 范围 /24 个专用 IP 地址 提供 vSphere Pod 的 IP 地址的专用 CIDR 范围。这些地
址还用于 Tanzu Kubernetes 集群节点。
必须为每个集群指定唯一的 vSphere Pod CIDR 范围。
注 输出 IP 地址和输入 IP 地址不得重叠。
注 输出 IP 地址和输入 IP 地址不得重叠。
步骤
4 为交换机选择版本 7.0,然后单击下一步。
5 在端口组名称中,输入主工作负载网络,单击下一步,然后单击完成。
VMware, Inc. 55
vSphere with Tanzu 配置和管理
6 为工作负载网络创建分布式端口组。
c 输入端口组的名称,例如工作负载网络,然后单击下一步。
d 保留默认值,单击下一步,然后单击完成。
a 右键单击分布式交换机,然后选择添加和管理主机。
b 选择添加主机。
e 在向导的其余屏幕上单击下一步,然后单击完成。
结果
前提条件
n 所需特权:虚拟机存储策略.更新和虚拟机存储策略.查看。
VMware, Inc. 56
vSphere with Tanzu 配置和管理
步骤
1 将标记添加到数据存储。
b 单击添加标记,然后指定标记的属性。
属性 描述
名称 指定数据存储标记的名称,例如 Gold。
b 在策略和配置文件下,单击虚拟机存储策略。
c 单击创建虚拟机存储策略。
3 输入策略名称和描述。
选项 操作
描述 输入存储策略的描述。
4 在策略结构页面的数据存储特定规则下,启用基于标记的放置规则。
5 在基于标记放置页面上,创建标记规则。
使用以下示例选择选项。
选项 描述
使用情况选项 选择使用具有以下标记的存储。
标记 单击浏览标记,然后选择数据存储标记,例如 Gold。
6 在存储兼容性页面上,检查与此策略匹配的数据存储列表。
7 在查看并完成页面上,查看存储策略设置,然后单击完成。
结果
VMware, Inc. 57
vSphere with Tanzu 配置和管理
后续步骤
创建存储策略后,vSphere 管理员可以执行以下任务:
n 将存储策略分配给主管集群。在主管集群上配置的存储策略可确保将控制层面虚拟机、pod 临时磁盘
和容器映像放置在策略表示的数据存储上。请参见将具有 NSX-T Data Center 的工作负载平台配置为
网络堆栈。
n 将存储策略分配给主管命名空间。命名空间可见的存储策略确定了命名空间可以访问和用于持久卷的数
据存储。存储策略在命名空间中显示为匹配的 Kubernetes 存储类。它们还会传播到此命名空间上的
Tanzu Kubernetes 集群。DevOps 工程师可以在其持久卷声明规范中使用这些存储类。请参见创建
和配置 vSphere 命名空间。
创建已订阅内容库
要置备 Tanzu Kubernetes 集群,必须在启用了工作负载管理的 vCenter Server 上创建内容库。将从内
容库中提取用于创建 Tanzu Kubernetes 集群节点的虚拟机映像。此库包含 Kubernetes 和随附 Photon
操作系统的最新发行版。
前提条件
创建已订阅内容库需要以下特权:
n 数据存储.分配空间- 在目标数据存储上。
步骤
3 单击创建新内容库图标。
此时将打开新建内容库向导。
4 在名称和位置页面上输入标识信息。
a 输入内容库的名称。
c 单击下一步。
VMware, Inc. 58
vSphere with Tanzu 配置和管理
5 在配置内容库页面上提供内容库配置详细信息。
a 选择菜单项已订阅内容库。
c 对于下载内容选项,请选择以下选项之一:
选项 描述
立即下载所有库内容 订阅过程会同时同步库元数据和映像。如果从已发布库中删除项目,这些项目的
内容仍保留在已订阅库存储中,您必须手动删除。
注 一般建议使用按需选项。有关详细信息,请参见管理已订阅库。
d 单击下一步。
在从清单中删除已订阅内容库之前,SSL 证书指纹存储在系统中。
7 在添加存储页面上,选择数据存储作为内容库内容的存储位置,然后单击下一步。
8 在即将完成页面上,检查详细信息并单击完成。
9 在内容库页面上:
选项 描述
发布时 如果您选择立即下载所有内容,请确认库已同步。
后续步骤
VMware, Inc. 59
vSphere with Tanzu 配置和管理
n 您还可以使用现有 NSX-T Data Center 部署或部署 NSX-T Data Center 的新实例来手动配置 主管集
群 网络。
前提条件
n 为将属于 主管集群 的所有 ESXi 主机分配 VMware vSphere 7 Enterprise Plus with Add-on for
Kubernetes 许可证。
n 创建用于放置控制平面虚拟机、Pod 临时磁盘和容器映像的存储策略。
n 验证您对集群是否具有修改集群范围的配置特权。
步骤
2 创建分布式端口组
为每个 NSX Edge 节点上行链路、Edge 节点 TEP、管理网络和共享存储创建分布式端口组。
6 添加许可证
使用 NSX Manager 添加许可证。
7 添加计算管理器
计算管理器是管理主机和虚拟机等资源的应用程序。将与 NSX-T Data Center 关联的 vCenter
Server 配置为 NSX Manager 中的计算管理器。
VMware, Inc. 60
vSphere with Tanzu 配置和管理
8 创建传输区域
传输区域指示哪些主机和虚拟机可以使用特定网络。传输区域可以跨一个或多个主机集群。
9 为主机隧道端点 IP 地址创建 IP 池
为 ESXi 主机隧道端点 (TEP) 和 Edge 节点创建 IP 池。TEP 是在外部 IP 标头中使用的源和目标 IP
地址,用于标识发起和结束覆盖网络帧 NSX-T 封装的 ESXi 主机。您可以对 TEP IP 地址使用 DHCP
或手动配置 IP 池。
10 创建主机上行链路配置文件
主机上行链路配置文件用于定义从 ESXi 主机到 NSX-T Data Center 分段的上行链路策略。
11 创建 Edge 上行链路配置文件
创建一个包含故障切换顺序绑定策略的上行链路配置文件,为每个 Edge 虚拟机覆盖网络流量设置一
个活动上行链路。
12 创建传输节点配置文件
传输节点配置文件用于定义在配置文件连接到的特定集群的主机上安装和配置 NSX-T Data Center
的方式。
15 创建 NSX Edge 集群
要确保至少有一个 NSX Edge 始终可用,请创建一个 NSX Edge 集群。
16 创建第 0 层上行链路分段
第 0 层上行链路分段提供从 NSX-T Data Center 到物理基础架构的南北向连接。
17 创建第 0 层网关
第 0 层网关是 NSX-T Data Center 逻辑路由器,为 NSX-T Data Center 逻辑网络提供到物理基础
架构的南北向连接。vSphere with Tanzu 在同一个传输区域中的多个 NSX Edge 集群上支持多个第
0 层网关。
步骤
例如,DSwitch。
VMware, Inc. 61
vSphere with Tanzu 配置和管理
5 在配置设置中,输入上行链路端口数。
输入值 2。
6 查看设置,然后单击完成。
例如,9000。
后续步骤
添加分布式端口组。请参见创建分布式端口组。
创建分布式端口组
为每个 NSX Edge 节点上行链路、Edge 节点 TEP、管理网络和共享存储创建分布式端口组。
前提条件
步骤
例如,DPortGroup-EDGE-UPLINK。
6 选择绑定和故障切换,然后单击下一步。
7 配置活动上行链路和备用上行链路。
例如,创建以下端口组:
VMware, Inc. 62
vSphere with Tanzu 配置和管理
端口组 名称 VLAN 类型
9 (可选) 为以下组件创建端口组:
n vSphere vMotion
n 虚拟机流量
后续步骤
前提条件
n 验证分布式端口组的绑定和故障切换策略中是否已配置活动上行链路。
步骤
2 从操作菜单中,选择添加和管理主机。
3 在选择任务页面上,选择添加主机,然后单击下一步。
4 在选择主机页面上,单击新主机,选择数据中心内的主机,单击确定,然后单击下一步。
a 从其他交换机上/空闲列表中选择一个物理网卡。
b 单击分配上行链路。
c 选择上行链路。
VMware, Inc. 63
vSphere with Tanzu 配置和管理
d 要将上行链路分配给集群中的所有主机,请选择将此上行链路分配应用于其余主机。
e 单击确定。
例如,将 Uplink 1 分配给 vmnic0,将 Uplink 2 分配给 vmnic1。
6 单击下一步。
a 选择 VMkernel 适配器并单击分配端口组。
b 选择分布式端口组。
例如,DPortGroup。
c 要将端口组应用于集群中的所有主机,请选择将此端口组分配应用于其余主机。
d 单击确定。
8 单击下一步。
9 (可选) 在迁移虚拟机网络页面上,选中迁移虚拟机网络复选框以配置虚拟机网络连接。
a 要将某个虚拟机的所有网络适配器连接到分布式端口组,请选择该虚拟机,或者选择单个网络适配
器以仅连接该适配器。
b 单击分配端口组。
c 从列表中选择一个分布式端口组,然后单击确定。
d 单击下一步。
后续步骤
前提条件
步骤
VMware, Inc. 64
vSphere with Tanzu 配置和管理
6 单击下一步以查看详细信息。
建议的最低部署大小为“中型”。
8 在选择存储选项卡中,为部署选择共享存储。
9 通过在选择虚拟磁盘格式中选择精简置备来启用精简置备。
默认情况下,虚拟磁盘为厚置备。
例如,DPortGroup-MGMT。
n 至少 12 个字符。
n 至少 1 个小写字母。
n 至少 1 个大写字母。
n 至少 1 个数字。
n 至少 1 个特殊字符。
n 至少 5 个不同的字符。
VMware, Inc. 65
vSphere with Tanzu 配置和管理
点时,该节点将连接到部署的第一个节点以形成集群。部署的第一个节点的所有存储库详细信息和密码都
将与新部署的节点进行同步。
前提条件
n 验证是否已配置计算管理器。
n 验证所需的端口是否已打开。
步骤
3 输入设备详细信息。
选项 描述
4 输入设备配置详细信息。
选项 描述
计算集群 选择节点必须加入的集群。
数据存储 选择节点文件的数据存储。
虚拟磁盘格式 选择精简置备格式。
网络 单击选择网络可选择节点的管理网络。
VMware, Inc. 66
vSphere with Tanzu 配置和管理
5 输入访问和凭据详细信息。
选项 描述
6 单击安装设备。
7 请等待部署、集群形成和存储库同步完成。
加入和集群稳定过程可能需要 10 到 15 分钟的时间。在进行任何其他集群更改之前,确认每个集群服
务组的状态均为 UP。
添加许可证
使用 NSX Manager 添加许可证。
前提条件
步骤
3 输入许可证密钥。
4 单击添加。
VMware, Inc. 67
vSphere with Tanzu 配置和管理
添加计算管理器
计算管理器是管理主机和虚拟机等资源的应用程序。将与 NSX-T Data Center 关联的 vCenter Server 配
置为 NSX Manager 中的计算管理器。
步骤
3 输入计算管理器的详细信息。
选项 描述
6 单击添加接受指纹。
结果
您可以单击计算管理器名称以查看详细信息,编辑计算管理器,或管理应用于计算管理器的标记。
创建传输区域
传输区域指示哪些主机和虚拟机可以使用特定网络。传输区域可以跨一个或多个主机集群。
作为 vSphere 管理员,您可以使用默认传输区域或创建以下传输区域:
n 主管集群 控制平面虚拟机使用的覆盖网络传输区域。
步骤
3 输入传输区域的名称和可选描述。
VMware, Inc. 68
vSphere with Tanzu 配置和管理
4 选择流量类型。
您可以选择覆盖网络或 VLAN。
默认情况下存在以下传输区域:
n 名为 nsx-overlay-transportzone 的覆盖网络传输区域。
5 (可选) 输入一个或多个上行链路绑定策略名称。
连接到传输区域的分段使用这些指定的绑定策略。如果分段未找到匹配的指定绑定策略,则使用默认上
行链路绑定策略。
结果
新的传输区域将显示在传输区域页面上。
为主机隧道端点 IP 地址创建 IP 池
为 ESXi 主机隧道端点 (TEP) 和 Edge 节点创建 IP 池。TEP 是在外部 IP 标头中使用的源和目标 IP 地址,
用于标识发起和结束覆盖网络帧 NSX-T 封装的 ESXi 主机。您可以对 TEP IP 地址使用 DHCP 或手动配置
IP 池。
步骤
3 输入以下 IP 池详细信息。
选项 描述
名称和描述 输入 IP 池名称和可选描述。
例如,ESXI-TEP-IP-POOL。
IP 范围 输入 IP 分配范围。
例如,10.197.79.158 - 10.197.79.160
网关 输入网关 IP 地址。
例如,10.197.79.253。
4 单击添加和应用。
例如,EDGE-TEP-IP-POOL。
VMware, Inc. 69
vSphere with Tanzu 配置和管理
创建主机上行链路配置文件
主机上行链路配置文件用于定义从 ESXi 主机到 NSX-T Data Center 分段的上行链路策略。
步骤
3 输入上行链路配置文件名称和(可选)上行链路配置文件描述。
例如,ESXI-UPLINK-PROFILE。
4 在绑定部分中,单击添加以添加命名绑定策略,并配置故障切换顺序策略。
将指定活动上行链路的列表,并将传输节点上的每个接口固定到一个活动上行链路。此配置允许同时使
用多个活动上行链路。
5 配置活动上行链路和备用上行链路。
6 输入传输 VLAN 值。
7 输入 MTU 值。
创建 Edge 上行链路配置文件
创建一个包含故障切换顺序绑定策略的上行链路配置文件,为每个 Edge 虚拟机覆盖网络流量设置一个活
动上行链路。
步骤
3 输入上行链路配置文件名称并(可选)添加上行链路配置文件描述。
例如,EDGE-UPLINK-PROFILE。
4 在绑定部分中,单击添加以添加命名绑定策略,并配置故障切换策略。
将列出活动上行链路列表,并将传输节点上的每个接口固定到一个活动上行链路。此配置允许同时使用
多个活动上行链路。
VMware, Inc. 70
vSphere with Tanzu 配置和管理
5 配置活动上行链路。
6 在上行链路配置文件页面中查看上行链路。
创建传输节点配置文件
传输节点配置文件用于定义在配置文件连接到的特定集群的主机上安装和配置 NSX-T Data Center 的方
式。
前提条件
确认您已创建覆盖网络传输区域。
步骤
3 输入传输节点配置文件的名称和可选描述。
例如,HOST-TRANSPORT-NODE-PROFILE。
4 在新建节点交换机部分,将类型选为 VDS。
5 将模式选为 Standard。
例如,DSwitch
7 选择之前创建的覆盖网络传输区域。
例如,NSX-OVERLAY-TRANSPORTZONE。
8 选择之前创建的主机上行链路配置文件。
例如,ESXI-UPLINK-PROFILE。
9 从 IP 分配列表中选择使用 IP 池。
10 选择之前创建的主机 TEP 池。
例如,ESXI-TEP-IP-POOL。
例如,将 uplink-1 (active) 映射到 Uplink 1,将 uplink-2 (standby) 映射到 Uplink 2。
12 单击添加。
13 确认您创建的配置文件已列在传输节点配置文件页面中。
VMware, Inc. 71
vSphere with Tanzu 配置和管理
前提条件
确认您已创建传输节点配置文件。
步骤
5 单击配置 NSX。
6 选择之前创建的传输节点配置文件,然后单击应用。
例如,HOST-TRANSPORT-NODE-PROFILE。
结果
前提条件
步骤
例如,nsx-edge-1
例如,nsx-edge-1.lab.com。
5 选择 Large 规格。
VMware, Inc. 72
vSphere with Tanzu 配置和管理
n 至少 12 个字符。
n 至少 1 个小写字母。
n 至少 1 个大写字母。
n 至少 1 个数字。
n 至少 1 个特殊字符。
n 至少 5 个不同的字符。
8 在配置部署中,配置以下属性:
选项 描述
计算管理器 从下拉菜单中选择计算管理器。
例如,选择 vCenter。
集群 从下拉菜单中选择集群。
例如,选择 Compute-Cluster。
数据存储 从列表中选择共享数据存储。
例如,vsanDatastore。
9 配置节点设置。
选项 描述
IP 分配 选择“静态”。
输入以下项的值:
n 管理 IP:输入与 vCenter Server 管理网络相同的 VLAN 上的 IP 地址。
例如,10.197.79.146/24。
n 默认网关:管理网络的默认网关。
例如,10.197.79.253。
11 对 Edge 交换机名称使用默认名称。
例如,nvds1。
12 选择传输节点所属的传输区域。
选择之前创建的覆盖网络传输区域。
VMware, Inc. 73
vSphere with Tanzu 配置和管理
例如,nsx-overlay-transportzone。
例如,EDGE-UPLINK-PROFILE。
14 在 IP 分配中选择使用 IP 池。
例如,EDGE-TEP-IP-POOL。
例如,配置以下值:
属性 值
传输区域 nsx-vlan-transportzone
绑定策略交换机映射 DPortGroup-EDGE-UPLINK
18 单击完成。
20 在 Edge 传输节点页面上查看连接状态。
创建 NSX Edge 集群
要确保至少有一个 NSX Edge 始终可用,请创建一个 NSX Edge 集群。
步骤
例如,EDGE-CLUSTER。
选择 nsx-default-edge-high-availability-profile。
7 例如,nsx-edge-1 和 nsx-edge-2。
VMware, Inc. 74
vSphere with Tanzu 配置和管理
8 单击保存。
创建第 0 层上行链路分段
第 0 层上行链路分段提供从 NSX-T Data Center 到物理基础架构的南北向连接。
前提条件
确认已创建第 0 层网关。
步骤
3 输入分段的名称。
例如,TIER-0-LS-UPLINK。
4 选择之前创建的传输区域。
例如,选择 nsx-vlan-transportzone。
5 切换管理状态以将其启用。
例如,1089。
7 单击保存。
创建第 0 层网关
第 0 层网关是 NSX-T Data Center 逻辑路由器,为 NSX-T Data Center 逻辑网络提供到物理基础架构的
南北向连接。vSphere with Tanzu 在同一个传输区域中的多个 NSX Edge 集群上支持多个第 0 层网关。
前提条件
步骤
3 单击添加第 0 层网关。
4 输入第 0 层网关的名称。
例如,Tier-0_VWT。
5 选择活动-备用 HA 模式。
在活动-备用模式下,选定的活动成员将处理所有流量。如果活动成员出现故障,则会选择一个新成员
并使其成为活动成员。
VMware, Inc. 75
vSphere with Tanzu 配置和管理
例如,选择 EDGE-CLUSTER。
7 单击保存。
第 0 层网关已创建。
8 选择是继续进行配置。
9 配置接口。
a 展开接口,然后单击设置。
b 单击添加接口。
c 输入名称。
例如,输入名称 TIER-0_VWT-UPLINK1。
d 选择外部作为类型。
例如,10.197.154.1/24。
f 在已连接到中,选择之前创建的第 0 层上行链路分段。
例如,TIER-0-LS-UPLINK
例如,nsx-edge-1。
h 单击保存。
i 对第二个接口重复步骤 a - h。
j 单击关闭。
b 输入 IP 地址。
例如,10.197.154.3/24
c 选择接口。
例如,TIER-0_WVT-UPLINK1 和 TIER-0_WVT-UPLINK2。
d 单击添加和应用。
VMware, Inc. 76
vSphere with Tanzu 配置和管理
11 要配置路由,请单击路由。
a 单击“静态路由”中的设置。
b 单击添加静态路由。
c 输入名称。
例如,DEFAULT-STATIC-ROUTE。
e 要配置下一跃点,请单击设置下一跃点,然后单击添加下一跃点。
例如,10.197.154.253。
g 依次单击添加、应用和保存。
h 单击关闭。
后续步骤
VMware, Inc. 77
启用工作负载管理
4
作为 vSphere 管理员,您可以通过将 vSphere 集群配置为 主管集群 来对其启用工作负载管理。您可以选
择创建使用 vSphere 网络连接堆栈的 主管集群,也可以选择创建使用 NSX-T Data Center 作为网络连接
解决方案的主管集群。配置了 NSX-T Data Center 的集群支持运行通过 VMware Tanzu™ Kubernetes
Grid™ 服务 创建的 vSphere Pod 和 Tanzu Kubernetes 集群。配置了 vSphere 网络连接堆栈的 主管集
群 仅支持 Tanzu Kubernetes 集群。
本章讨论了以下主题:
n 使用 vSphere 网络堆栈启用工作负载管理平台
关于 Tanzu 版许可证
Tanzu 版许可证会在 vSphere 7.0.1 中启用工作负载管理功能。它适用于配置了 vSphere 网络连接堆栈或
NSX-T Data Center 作为网络连接堆栈的 主管集群。
许可 主管集群
将 vSphere 集群配置为 主管集群 后,可以在 60 天评估期内使用该集群的全部功能。60 天评估期过期之
前,必须将 Tanzu 版许可证分配给 主管集群。
VMware, Inc. 78
vSphere with Tanzu 配置和管理
使用 vSphere 网络堆栈启用工作负载管理平台
作为 vSphere 管理员,您可以通过配置 vSphere 网络堆栈为工作负载提供连接,从而在 vSphere 集群上
启用工作负载管理平台。配置了 vSphere 网络连接的 主管集群 支持部署使用 Tanzu Kubernetes Grid 服
务 创建的 Tanzu Kubernetes 集群。它不支持运行 vSphere Pod。
前提条件
n 验证您对集群是否具有修改集群范围的配置特权。
步骤
1 从主菜单中,选择工作负载管理。
VMware, Inc. 79
vSphere with Tanzu 配置和管理
2 为 主管集群 选择一个许可选项。
3 在工作负载管理屏幕上,再次单击开始使用。
5 从兼容集群列表中选择集群。
选项 描述
名称 负载均衡器的用户友好名称。
类型 负载均衡器类型。
密码 用户名对应的密码。
VMware, Inc. 80
vSphere with Tanzu 配置和管理
选项 描述
子网掩码 输入管理网络的子网掩码。
b 在工作负载网络窗格中,单击添加,然后输入网络的参数。
选项 描述
网关 输入主网络的网关。
注 您必须为每个工作负载网络使用唯一的 IP 地址范围。不要为多个网络配置相
同的 IP 地址范围。
VMware, Inc. 81
vSphere with Tanzu 配置和管理
11 查看设置,然后单击完成。
结果
后续步骤
在 主管集群 上创建并配置您的第一个命名空间。
前提条件
n 创建用于放置控制平面虚拟机、Pod 临时磁盘和容器映像的存储策略。
n 验证您对集群是否具有修改集群范围的配置特权。
步骤
2 单击开始。
4 选择 NSX 网络堆栈。
5 单击下一步。
7 从兼容集群列表中选择一个集群,然后单击下一步。
8 从控制平面大小页面中,选择“为控制平面虚拟机选择大小”。
9 单击下一步。
VMware, Inc. 82
vSphere with Tanzu 配置和管理
10 在网络设置中,为控制平面和工作节点配置网络设置。
a 在管理网络窗格中,配置以下管理流量设置:
选项 描述
网络 选择为管理流量配置的网络。
例如,DPortGroup-MGMT。
子网掩码 输入管理网络的子网掩码。
例如,255.255.255.0。
输入网关 IP 地址。
例如,10.197.79.253。
b 在工作负载网络窗格中,为命名空间的网络配置设置。
选项 描述
VMware, Inc. 83
vSphere with Tanzu 配置和管理
选项 描述
11 单击下一步。
为以下每个对象选择的存储策略可确保将对象放置在存储策略中引用的数据存储上。可以对这些对象使
用相同或不同的存储策略。
选项 描述
控制平面节点 选择用于放置控制平面虚拟机的存储策略。
容器映像缓存 选择用于放置容器映像缓存的存储策略。
13 在即将完成部分中,检查设置,然后单击完成。
后续步骤
步骤
2 选择配置,然后在许可下选择主管集群。
3 选择分配许可证。
4 在分配许可证对话框中,单击新建许可证。
5 输入有效的许可证密钥,然后单击确定。
VMware, Inc. 84
vSphere with Tanzu 配置和管理
前提条件
步骤
2 单击配置,然后在命名空间下选择证书。
4 提供证书的详细信息。
5 生成 CSR 后,单击复制。
6 使用 CA 对证书进行签名。
8 上载签名证书文件,然后单击替换证书。
VMware, Inc. 85
在 主管集群 上使用 vSphere 命名空
间 5
作为 vSphere 管理员,您可以在 主管集群 上创建一个或多个 vSphere 命名空间,并为每个命名空间配置
资源配额、存储和用户权限。配置命名空间后,DevOps 工程师可以使用 Tanzu Kubernetes Grid 服务
部署 vSphere Pod 实例并置备 Tanzu Kubernetes 集群。
本章讨论了以下主题:
n 关联内容库与 主管命名空间
n 使用 注册表服务 提供专用映像注册表
前提条件
VMware, Inc. 86
vSphere with Tanzu 配置和管理
n 所需特权:
n 命名空间.修改集群范围的配置
n 命名空间.修改命名空间配置
步骤
2 单击命名空间,然后单击新建命名空间。
3 选择要放置命名空间的 主管集群。
4 输入命名空间的名称。
5 从网络下拉菜单中,为命名空间选择工作负载网络。
6 输入描述,然后单击创建。
a 从权限窗格中,选择添加权限。
b 选择标识源、用户或组以及角色,然后单击确定。
8 将持久存储设置为命名空间。
b 选择存储策略以控制持久卷的数据存储放置,然后单击确定。
9 从“容量和使用情况”窗格中,选择编辑限制并为命名空间配置资源限制。
选项 描述
内存 要为命名空间预留的内存量。
VMware, Inc. 87
vSphere with Tanzu 配置和管理
选项 描述
存储 要为命名空间预留的总存储空间量。
存储策略限制 分别设置专用于与命名空间关联的每个存储策略的存储量。
后续步骤
与 DevOps 工程师共享 Kubernetes 控制平面 URL 以及用于通过 适用于 vSphere 的 Kubernetes CLI 工
具 登录 主管集群 的用户名。您可以向 DevOps 工程师授予对多个命名空间的访问权限。
前提条件
步骤
2 选择一个命名空间,选择配置,然后选择对象限制。
3 针对命名空间配置对象限制。
前提条件
步骤
2 选择一个命名空间,选择配置,然后单击资源限制
VMware, Inc. 88
vSphere with Tanzu 配置和管理
选项 描述
内存请求 为命名空间中的容器设置默认内存预留。
内存限制 为命名空间中的容器设置默认内存使用限制。
关联内容库与 主管命名空间
要置备 Tanzu Kubernetes 集群,请将内容库与 主管命名空间 相关联。
前提条件
n 创建已订阅内容库.
步骤
2 使用以下方法之一关联内容库。
选项 描述
使用 注册表服务 提供专用映像注册表
您可以通过 注册表服务 在 主管集群 上启用专用映像注册表。一个集群可以包含一个专用映像注册表实
例。主管集群 上的所有命名空间均表示为专用注册表中的项目。注册表服务 仅适用于 vSphere Pod,因
此它仅适用于配置了 NSX-T Data Center 网络连接堆栈的 主管集群。
VMware, Inc. 89
vSphere with Tanzu 配置和管理
前提条件
n 创建用于放置容器映像的存储策略。
步骤
2 选择配置。
3 在命名空间下,选择映像注册表。
4 单击启用 Harbor。
5 选择用于放置容器映像的存储策略。
结果
在几分钟后,将启用专用映像注册表。将为该专用映像注册表实例创建一个特殊命名空间。无法对该命名
空间执行任何操作,它对 vSphere 用户是只读的。
主管集群 上的每个命名空间都具有与专用映像注册表同名的匹配项目。在命名空间具有编辑或查看权限的
每个用户或组,会在专用映像注册表中具有相同名称的匹配项目中成为相应的角色成员。项目的生命周期
和专用映像注册表的成员将由系统自动管理,并将链接到命名空间的生命周期和命名空间中的用户或组权
限。
后续步骤
VMware, Inc. 90
vSphere with Tanzu 配置和管理
清除专用映像注册表中的映像
作为 vSphere 管理员,您可以通过 DevOps 工程师的请求从专用映像注册表中清除项目的映像。从专用
映像注册表中清除映像会删除对 pod 所创建的映像的所有引用,但不会从映像注册表中移除映像。
步骤
2 选择配置,然后选择常规。
3 在嵌入式注册表旁边,单击清除。
VMware, Inc. 91
连接到 vSphere with Tanzu 集群
6
您可以连接到 主管集群 置备 vSphere Pod 和 Tanzu Kubernetes 集群。置备后,您可以使用各种方法连
接到 Tanzu Kubernetes 集群,然后基于您的角色和目标进行身份验证。
本章讨论了以下主题:
前提条件
n 选择摘要选项卡,然后在此页面上找到状态区域。
VMware, Inc. 92
vSphere with Tanzu 配置和管理
步骤
2 选择操作系统。
3 下载 vsphere-plugin.zip 文件。
4 将 ZIP 文件的内容提取到工作目录。
后续步骤
下载并安装 TLS 证书
要安全地登录到 Tanzu Kubernetes 集群,请下载并安装 vCenter Server 的根 CA 证书和最新版本的
kubectl 的 vSphere 插件。
vCenter Server CA 证书
vSphere with Tanzu 支持使用 kubectl 的 vSphere 插件 命令 kubectl vsphere login … 通过 vCenter
Single Sign-On 访问集群。
Tanzu Kubernetes 集群 CA 证书
要使用 kubectl CLI 安全地与 Tanzu Kubernetes 集群 API 服务器进行连接,需要 Tanzu Kubernetes 集
群 CA 证书。
VMware, Inc. 93
vSphere with Tanzu 配置和管理
为 Kubectl 指定默认的文本编辑器
为帮助您在置备后维护 Tanzu Kubernetes 集群,请为 kubectl 指定默认的文本编辑器。
用途
置备 Tanzu Kubernetes 集群后,需要对其进行维护。典型的维护任务包括升级 Kubernetes 版本和扩展
集群节点。要执行此类任务,请更新集群清单。
Windows
在 Windows 上,创建一个名为 KUBE_EDITOR 的系统环境变量,并将值设置为首选文本编辑器的路径。将
监视标记 (-w) 附加到值。
KUBE_EDITOR=code -w.
Mac OS
在 Mac OS 上,创建一个名为 KUBE_EDITOR 的环境变量,并将值设置为首选文本编辑器的路径。将监视标
记 (-w) 附加到值,以便 kubectl 知晓您提交(保存)了更改。
export KUBE_EDITOR="/Applications/Sublime.app/Contents/SharedSupport/bin/subl-w"
Linux
在 Linux(例如,Ubuntu)上,通常,默认的命令行 EDITOR 是 Vim。如果是,则无需执行任何其他操作
即可使用 kubectl edit 命令。如果要使用其他编辑器,请创建一个名为 KUBE_EDITOR 的环境变量,并将值
设置为首选文本编辑器的路径。
VMware, Inc. 94
vSphere with Tanzu 配置和管理
前提条件
n 获取 主管命名空间 的名称。
步骤
1 要查看用于登录的命令语法和选项,请运行以下命令。
2 要连接到 主管集群,请运行以下命令。
例如:
VMware, Inc. 95
vSphere with Tanzu 配置和管理
3 要进行身份验证,请输入用户的密码。
CLI 将显示每个可用上下文的详细信息。
5 要在上下文之间切换,请使用以下命令:
后续步骤
前提条件
n 获取 主管命名空间 的名称。
VMware, Inc. 96
vSphere with Tanzu 配置和管理
步骤
1 要查看用于登录的命令语法和选项,请运行以下命令。
例如:
4 要获取可用的上下文列表,请运行以下命令:
此命令将列出您有权访问的配置上下文。您会看到目标集群的配置上下文,如 tkg-cluster-01。
5 要使用目标集群的上下文,请运行以下命令:
6 要列出集群节点,请运行以下命令:
您将看到此集群中的控制平面节点和工作节点。
7 要列出所有集群 pod,请运行以下命令:
VMware, Inc. 97
vSphere with Tanzu 配置和管理
步骤
3 查看命名空间中的密钥对象。
该密钥名为 TKGS-CLUSTER-NAME-kubeconfig。
4 通过运行以下命令对密钥进行解码。
VMware, Inc. 98
vSphere with Tanzu 配置和管理
有两种选项可以实现此操作。
选项 描述
您应该会看到集群中的节点。例如:
要通过 SSH 连接到 Tanzu Kubernetes 集群节点,请在 主管集群 上创建跳转盒 vSphere Pod。
步骤
1 连接到 主管集群。
export NAMESPACE=VSPHERE-NAMESPACE
VMware, Inc. 99
vSphere with Tanzu 配置和管理
4 查看 TKGS-CLUSTER-NAME-ssh 密钥对象。
apiVersion: v1
kind: Pod
metadata:
name: jumpbox
namespace: YOUR-NAMESPACE #REPLACE YOUR-NAMESPACE
spec:
containers:
- image: "photon:3.0"
name: jumpbox
command: [ "/bin/bash", "-c", "--" ]
args: [ "yum install -y openssh-server; mkdir /root/.ssh; cp /root/ssh/ssh-privatekey /
root/.ssh/id_rsa; chmod 600 /root/.ssh/id_rsa; while true; do sleep 30; done;" ]
volumeMounts:
- mountPath: "/root/ssh"
name: ssh-key
readOnly: true
volumes:
- name: ssh-key
secret:
secretName: YOUR-CLUSTER-NAME-ssh #REPLACE YOUR-CLUSTER-NAME
pod/jumpbox created
7 验证 pod 是否正在运行。
8 通过运行以下一组命令,创建具有目标集群节点的 IP 地址的环境变量。
a 获取目标虚拟机的名称。
b 创建环境变量 VMNAME,其值为目标节点的名称。
export VMNAME=NAME-OF-THE-VIRTUAL-MACHINE
例如,以下输出指示您已经以系统用户身份登录到控制平面节点。
vmware-system-user@tkgs-cluster-1-control-plane-66tbr [ ~ ]$
步骤
1 连接到 主管集群。
3 获取目标集群节点的 IP 地址。
列出节点。
描述用于获取目标节点 IP 地址的节点。
4 查看 TKGS-CLUSTER-NAME-ssh-password 密钥。
5 获取目标集群的 ssh-passwordkey。
将返回 ssh-passwordkey,例如如下值。
apiVersion: v1
data:
ssh-passwordkey: RU1pQllLTC9TRjVFV0RBcCtmd1zwOTROeURYSWNGeXNReXJhaXRBUllYaz0=
6 对 ssh-passwordkey 进行解码。
ssh vmware-system-user@TKGS-CLUSTER-NODE-IP-ADDRESS
8 使用您解码的密码登录。
验证开发人员的身份
集群管理员可以向其他用户(如开发人员)授予集群访问权限。开发人员可以使用其用户帐户直接将 pod
到集群,也可以使用服务帐户间接部署。有关详细信息,请参见对 Tanzu Kubernetes 集群使用 POD 安
全策略。
将开发人员用户添加到集群
要向开发人员授予集群访问权限,请执行以下操作:
示例 RoleBinding
要向 vCenter Single Sign-On 用户或组授予访问权限,RoleBinding 中的主题必须包含 name 参数的以下
任一值。
表 6-1. 支持的用户和组字段
字段 描述
以下示例 RoleBinding 将名为 Joe 的 vCenter Single Sign-On 本地用户绑定到名为 edit 的默认
ClusterRole。此角色允许对命名空间(在本例中为 default 命名空间)中的大多数对象进行读/写访问。
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: rolebinding-cluster-user-joe
namespace: default
roleRef:
kind: ClusterRole
name: edit #Default ClusterRole
apiGroup: rbac.authorization.k8s.io
subjects:
- kind: User
name: sso:joe@vsphere.local #sso:<username>@<domain>
apiGroup: rbac.authorization.k8s.io
持久卷 持久卷
虚拟 虚拟
磁盘[0] 磁盘[N]
vSphere Pod
临时
虚拟
磁盘
容器 容器
映像 映像
虚拟 虚拟
磁盘[0] 磁盘[N]
临时虚拟磁盘
pod 在操作过程中,需要使用临时存储将 Kubernetes 对象存储为日志、emptyDir 卷和 ConfigMaps。
此临时存储或暂时存储在 pod 存在期间将始终存在。临时数据在容器重新启动后仍然存在,但一旦 pod
寿命终止,临时虚拟磁盘便会消失。
容器映像虚拟磁盘
pod 中的容器使用包含待运行软件的映像。pod 会将其容器使用的映像挂载为映像虚拟磁盘。pod 的生命
周期结束后,映像虚拟磁盘将从 pod 中分离。
映像注册表
映像服务
vSphere Pod
容器映像
主管集群 ESXi 主机
(K8s 节点)
持久存储虚拟磁盘
要为 Kubernetes 工作负载置备持久存储,vSphere with Tanzu 将与云原生存储 (CNS) 集成,云原生存
储是一个管理永久卷的 vCenter Server 组件。持久存储由 vSphere Pod 和 Tanzu Kubernetes 集群中
的 POD 使用。
K8s 控制
vSphere Pod 层面虚拟机
ESXi 主机
(K8s 节点)
容器卷
CNS 卷服务
主管集群
持久卷
有关详细信息,请参见持久卷的动态置备和静态置备。
第一类磁盘
持久卷声明
DevOps 工程师可以创建持久卷声明以请求持久存储资源。请求会动态地置备持久卷对象和匹配的虚
拟磁盘。在 vSphere Client 中,持久卷声明显示为可由 vSphere 管理员监控的 FCD 虚拟磁盘。
此声明将绑定到持久卷。工作负载可以使用该声明挂载持久卷和访问存储。
DevOps 工程师删除此声明时,也将删除相应的持久卷对象和已置备的虚拟磁盘。
存储类
持久存储工作流
在 vSphere with Tanzu 中动态置备持久存储的工作流包括以下连续操作。
操作 描述
vSphere with Tanzu 将创建与分配给 主管命名空间 的存储策略 存储类将自动显示在 Kubernetes 环境中,并可供 DevOps 团
相匹配的存储类。 队使用。如果 vSphere 管理员将多个存储策略分配给 主管命名
空间,则会为每个存储策略创建一个单独的存储类。
如果使用 Tanzu Kubernetes Grid 服务 置备 Tanzu
Kubernetes 集群,则每个 Tanzu Kubernetes 集群将从置备该
集群的 主管命名空间 中继承存储类。
操作 描述
vSphere 管理员在 vSphere with Tanzu 环境中监控持久卷。 vSphere 管理员使用 vSphere Client 监控持久卷及其支持虚拟
磁盘。他们还可以监控持久卷的存储合规性和运行状况。
主管集群
vSphere Pod
持久卷声明 存储类
持久卷
vSphere 存储
vSphere 管理员的存储管理任务
通常,vSphere with Tanzu 中的存储管理任务包括以下各项。作为 vSphere 管理员,您可以使用
vSphere Client 执行这些任务。
n 对虚拟机存储策略执行生命周期操作。
DevOps 工程师的存储管理任务
在 vSphere with Tanzu 环境中,DevOps 工程师可以是 Kubernetes 开发人员和应用程序所有者、
Kubernetes 管理员,或将两者的功能组合在一起。通常,DevOps 工程师使用 kubectl 执行任务。
n 部署和管理有状态应用程序。请参见为有状态应用程序置备动态持久卷。
本章讨论了以下主题:
n 持久卷的动态置备和静态置备
n 更改 主管集群上的存储设置
n 更改命名空间上的存储设置
n 为有状态应用程序置备动态持久卷
n 为有状态应用程序置备静态持久卷
n 扩展持久卷
第一类磁盘 (FCD)
也称为改进的虚拟磁盘。它是与虚拟机无关的已命名虚拟磁盘。这些磁盘驻留在 VMFS、NFS 或
vSAN 数据存储上,并且支持 ReadWriteOnce 持久卷。
基于存储策略的管理
vSphere CNS-CSI
用户命名空间
Kubernetes
持久卷 存储类
pvCSI
主管集群 CNS-CSI
CNS
FCD
虚拟磁盘
vSAN/VMFS/NFS 数据存储
CNS-CSI
持久 持久
卷 卷 卷
声明 声明
pvCSI CNS
动态块持久卷(ReadWriteOnce 访问模 是 是
式)
动态文件持久卷(ReadWriteMany 访问 否 否
模式)
静态持久卷 否 是
加密 否 否
脱机卷增加 否 是
卷拓扑和区域 否 否
Kubernetes 多个控制平面实例 是 是
WaitForConsumerFirst 否 否
VolumeHealth 是 是
特权名称 描述 要求
持久卷的动态置备和静态置备
持久卷通常用于有状态应用程序。vSphere with Tanzu 支持对持久卷进行动态置备和静态置备。
动态置备
执行动态卷置备时,不需要预置备存储,可以按需创建持久卷。DevOps 工程师会发出引用命名空间
中可用存储类的持久卷声明。vSphere with Tanzu 会自动置备相应的持久卷和支持虚拟磁盘。
有关如何为有状态应用程序动态创建持久卷的示例,请参见为有状态应用程序置备动态持久卷。
静态置备
执行静态置备时,可以使用现有存储对象,并将其提供给集群。
要置备静态持久卷,请手动创建虚拟磁盘以用作持久卷的支持存储。之后,创建包含支持存储详细信息
的持久卷。持久卷声明发出后,Kubernetes 将在系统中选择一个可用的持久卷,并将其分配给工作负
载。
有关如何置备静态持久卷的示例,请参见为有状态应用程序置备静态持久卷。
更改 主管集群上的存储设置
分配给 主管集群的存储策略可管理控制层面虚拟机、vSphere 和容器映像缓存等对象如何放置在 vSphere
Pod 存储环境中的数据存储中。作为 vSphere 管理员,您通常可以在启用主管集群时配置存储策略。如果
在执行 主管集群初始配置后需要对存储策略分配进行任何更改,请执行此任务。
对存储设置所做的更改仅适用于新对象。
步骤
2 依次单击配置选项卡和命名空间下方的存储。
3 更改以下项目的存储策略分配。
选项 描述
控制层面节点 选择用于放置控制层面虚拟机的存储策略。
容器映像缓存 选择用于放置容器映像缓存的存储策略。
更改命名空间上的存储设置
vSphere 管理员分配给 主管集群中的命名空间的存储策略可控制如何将在 vSphere 数据存储中放置持久
卷和 Tanzu Kubernetes 集群节点。与持久卷相对应的持久卷声明可以来自 vSphere Pod 或 Tanzu
Kubernetes 集群。您可以更改原始存储策略分配。
前提条件
步骤
b 选择命名空间。
2 单击存储选项卡,然后单击存储策略。
3 单击编辑图标,以更改存储策略分配。
能否运行命令取决于您的权限。
前提条件
步骤
1 使用以下命令之一验证存储类是否可用。
注 具有管理员特权的用户才能使用此命令。
在输出中,存储类的名称显示为
storageclass_name.storageclass.storage.k8s.io/requests.storage 参数的一部分。例
如:
–––––––––––––––––
Name: namespace_name
Resource Used Hard
-------- --- ---
silver.storageclass.storage.k8s.io/requests.storage 1Gi 9223372036854775807
gold.storageclass.storage.k8s.io/requests.storage 0 9223372036854775807
2 要检查命名空间上的可用存储空间量,请运行以下命令。
您会获得类似以下内容的输出。
Name: ns-my-namespace
Namespace: ns-my-namespace
Resource Used Hard
-------- ---- ----
requests.storage 0 200Gi
为有状态应用程序置备动态持久卷
有状态应用程序(例如数据库)在会话之间保存数据,并需要持久存储来存储数据。保留的数据称为应用
程序的状态。之后,您可以检索数据,并在下一个会话中使用该数据。Kubernetes 以能够保留其状态和
数据的对象形式提供持久卷。
在 vSphere 环境中,持久卷对象由位于数据存储上的虚拟磁盘提供支持。数据存储由存储策略表示。
vSphere 管理员创建存储策略(例如 gold)并将其分配给 主管集群 中的命名空间后,该存储策略将在 主
管命名空间 和任何可用的 Tanzu Kubernetes 集群中显示为匹配的 Kubernetes 存储类。
作为 DevOps 工程师,您可以在持久卷声明规范中使用存储类。然后,可以部署使用持久卷声明中存储的
应用程序。在此示例中,应用程序的持久卷是动态创建的。
前提条件
确保 vSphere 管理员已创建适当的存储策略并将该策略分配给命名空间。
步骤
2 验证存储类是否可用。
3 创建持久卷声明。
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-pvc
spec:
accessModes:
- ReadWriteOnce
storageClassName: gold
resources:
requests:
storage: 3Gi
c 检查持久卷声明的状态。
输出显示该卷已绑定到持久卷声明。
4 创建挂载持久卷的 pod。
该文件包含以下参数。
...
volumes:
- name: my-pvc
persistentVolumeClaim:
claimName: my-pvc
c 验证是否已创建 pod。
结果
后续步骤
为有状态应用程序置备静态持久卷
要置备静态持久卷,请手动创建虚拟磁盘以用作持久卷的支持存储。之后,创建包含支持存储详细信息的
持久卷。Pod 可通过持久卷声明请求此存储。
步骤
1 创建虚拟磁盘。
$ cd /vmfs/volumes/vsanDatastore/demo/
$ vmkfstools -c 2G demo.vmdk
2 创建持久卷。
apiVersion: v1
kind: PersistentVolume
metadata:
name: demo-pv
spec:
capacity:
storage: 2Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
vsphereVolume:
volumePath: "[vsanDatastore] demo/demo.vmdk"
fsType: ext4
c 部署持久卷。
d 验证是否已创建持久卷。
$ kubectl get pv
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS
REASON AGE
demo-pv 2Gi RWO Retain
Available 3s
3 定义持久卷声明以匹配持久卷。
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: demo-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 2Gi
4 定义挂载持久卷的部署。
apiVersion: v1
kind: Pod
metadata:
name: demo-pod
.....
.....
volumes:
- name: demo-vol
persistentVolumeClaim:
claimName: demo-pvc
扩展持久卷
在 Tanzu Kubernetes 集群中,不管任何新的或现有的持久块卷,都可以在它处于脱机状态或未连接到节
点时对它进行扩展。
步骤
1 使用可用的默认存储类创建持久卷声明 (PVC)。
在该示例中,所请求存储的大小为 1 Gi。
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: example-block-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
storageClassName: example-block-sc
2 修补 PVC 以增加其大小。
例如,将大小增加到 2 Gi。
3 确认卷大小已增加。
kubectl get pv
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS
CLAIM STORAGECLASS REASON AGE
pvc-9e9a325d-ee1c-11e9-a223-005056ad1fc1 2Gi RWO Delete Bound default/
example-block-pvc example-block-sc 6m44s
5 确认 PVC 的大小已修改。
运行状况 描述
可访问 持久卷可访问且可供使用。
不可访问 持久卷不可访问且无法使用。如果连接到数据存储的主机无法访问存储持久卷的数据存储,则该持久卷将变得不可访问。
步骤
2 创建持久卷声明。
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-pvc
spec:
accessModes:
- ReadWriteOnce
storageClassName: gold
resources:
requests:
storage: 2Gi
c 检查持久卷声明是否已绑定到卷。
输出将显示持久卷声明和卷已处于绑定状态。
3 检查卷的运行状况。
在以下示例输出中,volumehealth.storage.kubernetes.io/messages 字段将运行状况显示为可
访问。
Name: my-pvc
Namespace: test-ns
StorageClass: gold
Status: Bound
Volume: my-pvc
Labels: <none>
Annotations: pv.kubernetes.io/bind-completed: yes
pv.kubernetes.io/bound-by-controller: yes
volume.beta.kubernetes.io/storage-provisioner: csi.vsphere.vmware.com
volumehealth.storage.kubernetes.io/messages: accessible
Finalizers: [kubernetes.io/pvc-protection]
Capacity: 2Gi
Access Modes: RWO
VolumeMode: Filesystem
步骤
b 单击命名空间。
2 单击存储选项卡,然后单击持久卷声明。
3 要查看所选持久卷声明的详细信息,请在持久卷名称列中单击该卷的名称。
4 在容器卷页面上,检查卷的运行状况和存储策略合规性。
b 验证卷的运行状况。
运行状况 描述
可访问 持久卷可访问且可供使用。
不可访问 持久卷不可访问且无法使用。如果连接到数据存储的主机无法访问存储持久卷的数据存储,则该持久卷将变得
不可访问。
c 验证存储合规性状态。
可以在合规性状态列中看到以下项之一。
合规性状态 描述
合规 支持卷的虚拟磁盘所在的数据存储具有策略所需的存储功能。
已过期 该状态表示策略已进行编辑,但新的存储要求尚未传递到数据存储。要传递更改,请将策略重新应用于已过
期的卷。
不合规 数据存储支持指定的存储要求,但目前无法符合存储策略。例如,当数据存储的物理资源不可用时,状态可
能变为“不合规”。您可以通过更改主机集群的物理配置将数据存储变为合规,例如向集群添加主机或磁
盘。如果其他资源符合存储策略,状态将变为“合规”。
不适用 存储策略引用不受数据存储支持的数据存储功能。
d 如果合规性状态为“已过期”,请选择卷,然后单击重新应用策略。
状态将更改为“合规”。
vSphere 无共享存储
通常,大多数持久服务采用无共享架构 (SNA)。它们使用非复制的本地存储,并提供自己的存储复制、压
缩和其他数据操作。因此,当底层存储执行相同的操作时,不会给这些服务带来优势。
云原生应用 传统应用
vSAN 数据持久性平台
vSAN vSAN-Direct
步骤
2 单击配置选项卡。
3 在“vSAN”下,单击磁盘管理。
4 单击声明未使用的磁盘。
6 单击创建。
本章讨论了以下主题:
n 创建 Tanzu Kubernetes 集群
n 操作 Tanzu Kubernetes 集群
创建 Tanzu Kubernetes 集群
可以通过 kubectl CLI 和使用 YAML 定义的集群规范调用 Tanzu Kubernetes Grid 服务 声明性 API 来创
建 Tanzu Kubernetes 集群。
该工作流简要地概述了置备过程。每个步骤都包含链接,可用于了解有关特定任务的详细信息。
前提条件
n 根据需要验证和调整容量与使用配额。
步骤
例如:
5 通过描述命名空间获取可用的默认存储类。
b 使用从前面命令的输出中收集的信息填充 YAML。
apiVersion: run.tanzu.vmware.com/v1alpha1
kind: TanzuKubernetesCluster
metadata:
name: tkgs-cluster-1
namespace: tkgs-ns-1
spec:
distribution:
version: v1.18.5
topology:
controlPlane:
count: 1
class: best-effort-small
storageClass: vwk-storage-policy
workers:
count: 3
class: best-effort-small
storageClass: vwk-storage-policy
例如:
kubectl cluster-info
kubectl api-resources
已订阅内容库源自一个已发布的内容库。创建订阅后,系统会将其与此已发布库进行同步。为创建 Tanzu
Kubernetes 集群节点,VMware 发布了供您订阅的 Photon OS OVA 库。订阅者与发布者同步后,您可
以将内容库与 主管集群 相关联。
有两种方式同步映像。
n 按需。内容库会按需下载已订阅的映像。
n 发布时。发布后,内容库会自动同步已订阅的映像。
注 如果已订阅内容库达到其数据存储的存储容量,则必须迁移集群以使用新库。请参见将 Tanzu
Kubernetes 集群迁移到新内容库。。
前提条件
创建已订阅内容库需要以下特权:
n 数据存储.分配空间- 在目标数据存储上。
步骤
2 单击创建新内容库图标。
此时将打开新建内容库向导。
3 在名称和位置页面上输入标识信息。
a 输入内容库的名称。
c 单击下一步。
4 在配置内容库页面上提供内容库配置详细信息。
a 选择菜单项已订阅内容库。
c 对于下载内容选项,请选择选项在需要时下载库内容,这样将按需下载 OVA。
d 单击下一步。
在从清单中删除已订阅内容库之前,SSL 证书指纹存储在系统中。
6 在添加存储页面上,选择数据存储作为内容库内容的存储位置,然后单击下一步。
7 在即将完成页面上,检查详细信息并单击完成。
8 在内容库页面上,确认库已同步。
12 对于内容库,单击编辑。
13 单击添加库。
15 要完成此过程,请单击确定。
精选虚拟机类类型的默认值
下表列出了精选虚拟机类类型的默认值,将它们用作 Tanzu Kubernetes 集群节点的虚拟机部署大小。每
个类类型都是在虚拟机上预留资源以用于处理、内存和存储的一个请求。
每个类类型有两个版本:保证版本和最大努力版本。保证类版本将完整预留为其配置的资源,即对于集
群,spec.policies.resources.requests 与 spec.hardware 设置相匹配。最大努力类版本则不然,它允许
过量分配资源。通常,保证类用于生产工作负载。
注 该列表可能并不详尽,并且将来的虚拟机类型可能会可自定义。要查看您的环境中可用的虚拟机类型的
当前完整列表,请登录到 主管集群 并运行 kubectl describe virtualmachineclasses 命令。
表 8-2. 精选虚拟机类类型的默认值
类 CPU 内存 (GB) 存储 (GB) 预留的 CPU 和内存
guaranteed-8xlarge 32 128 16 是
best-effort-8xlarge 32 128 16 否
guaranteed-4xlarge 16 128 16 是
best-effort-4xlarge 16 128 16 否
guaranteed-2xlarge 8 64 16 是
best-effort-2xlarge 8 64 16 否
guaranteed-xlarge 4 32 16 是
best-effort-xlarge 4 32 16 否
guaranteed-large 4 16 16 是
best-effort-large 4 16 16 否
guaranteed-medium 2 8 16 是
best-effort-medium 2 8 16 否
guaranteed-small 2 4 16 是
best-effort-small 2 4 16 否
guaranteed-xsmall 2 2 16 是
best-effort-xsmall 2 2 16 否
用于置备集群的最小 YAML
创建 Tanzu Kubernetes 集群所需的最小 YAML 配置具有以下特性:
n 此 YAML 置备一个具有单个控制平面节点和三个工作节点的集群。
n 默认 Pod CIDR:192.168.0.0/16
n 默认服务 CIDR:10.96.0.0/12
n 默认服务域:cluster.local
用于置备集群的完整 YAML
创建 Tanzu Kubernetes 集群所需的完整 YAML 配置具有以下特性:
n 此 YAML 置备一个具有三个控制平面节点和五个工作节点的集群。
n 控制平面和工作节点使用不同的存储类。
apiVersion: run.tanzu.vmware.com/v1alpha1
kind: TanzuKubernetesCluster
metadata:
name: tkg-cluster-2
namespace: namespace-b
spec:
distribution:
version: 1.17 #Resolves to the latest v1.17 image (v1.17.8+vmware.1-tkg.1.5417466)
topology:
controlPlane:
count: 3 #3 control plane nodes
class: guaranteed-large #large size VM
storageClass: tkc-storage-policy-yellow #Specific storage class for control plane
workers:
count: 5 #5 worker nodes
class: guaranteed-xlarge #extra large size VM
storageClass: tkc-storage-policy-green #Specific storage class for workers
settings:
network:
cni:
name: calico
services:
cidrBlocks: ["198.51.100.0/12"] #Cannot overlap with Supervisor Cluster
pods:
cidrBlocks: ["192.0.2.0/16"] #Cannot overlap with Supervisor Cluster
storage:
classes: ["gold", "silver"] #Named PVC storage classes
defaultClass: silver #Default PVC storage class
置备 Tanzu Kubernetes 集群
使用调用 Tanzu Kubernetes Grid 服务 API 的描述性 YAML 文件置备 Tanzu Kubernetes 集群。
前提条件
步骤
例如:
3 选择映像版本。
b 使用以下任一命令查看有关可用映像的详细信息。
注 另请参见主题支持的更新路径,了解有关可用映像的详细信息。
a 验证集群是否已置备。
例如:
b 获取有关集群的详细信息。
d 如有必要,请使用以下命令调试集群的置备。
kubectl cluster-info
kubectl api-resources
删除 Tanzu Kubernetes 集群
可使用 kubectl 删除 Tanzu Kubernetes Grid 服务 置备的 Tanzu Kubernetes 集群。
步骤
1 使用 主管集群 进行身份验证。
例如:
例如:
例如:
预期结果:
5 验证集群是否已删除。
例如:
6 从 kube 配置文件中删除集群上下文。
例如:
下载映像文件
要在气隙环境中置备 Tanzu Kubernetes 集群,请首先从公用内容交付网络 (CDN) 下载 OVA 和 OVF 文
件。
前提条件
查看工作流。
步骤
1 使用浏览器,导航到以下 URL:https://wp-content.vmware.com/v2/latest/。
例如:
ob-15957779-photon-3-k8s-v1.17.8---vmware.1-tkg.1.5417466
注 稍后在将文件导入到本地内容库时需要提供该分发名称,因此您可能需要将它复制到某个文件,或
保持浏览器的打开状态,直到完成该过程为止。
3 对于以下每个文件,右键单击并选择将链接另存为。
n photon-ova.ovf
n photon-ova-disk1.vmdk
4 验证是否已将每个文件成功下载到您的本地文件系统。
后续步骤
创建本地内容库.
创建本地内容库
要在气隙环境中置备 Tanzu Kubernetes 集群,请创建本地内容库。
前提条件
下载映像文件.
步骤
2 单击菜单。
3 单击内容库。
4 单击 +创建图标。
5 在新建内容库向导中,按如下所示对库进行配置:
a 输入库的名称,例如 Kubernetes-local,然后单击下一步。
b 选择本地内容库,然后单击下一步。
c 选择数据存储,然后单击下一步。
d 查看配置,然后单击完成。
后续步骤
将映像导入到本地内容库.
将映像导入到本地内容库
要在气隙环境中置备 Tanzu Kubernetes 集群,请将下载的映像文件导入到本地内容库。
前提条件
n 下载映像文件
n 创建本地内容库
步骤
3 从内容库列表中,单击您创建的本地内容库的对应的链接。
4 单击操作。
5 选择导入项目。
6 在导入库项目窗口中,选择本地文件。
7 单击上载文件。
例如:
photon-3-k8s-v1.16.8---vmware.1-tkg.3.60d2ffd
10 单击导入。
11 此时将在页面底部显示近期任务窗格。
12 监控任务获取库项目的内容并确认它已成功完成。
后续步骤
前提条件
n 下载映像文件.
n 创建本地内容库.
n 将映像导入到本地内容库.
步骤
2 单击菜单。
3 单击工作负载管理。
4 单击命名空间。
7 单击内容库标签旁边的编辑。
8 在内容库窗口中,选中您创建的本地内容库的名称(例如 Kubernetes-local)旁边的单选按钮。
9 单击确定。
后续步骤
验证虚拟机映像是否可用.
验证虚拟机映像是否可用
要在气隙环境中置备 Tanzu Kubernetes 集群,请验证虚拟机映像是否已同步且可用。
前提条件
n 下载映像文件.
n 创建本地内容库.
n 将映像导入到本地内容库.
步骤
1 登录到 主管集群。
例如:
2 将上下文切换到目标 主管命名空间。
3 运行下列命令。
验证是否看到从本地内容库同步的映像。
NAME AGE
photon-3-k8s-v1.17.8---vmware.1-tkg.1.5417466 14m
后续步骤
使用本地映像创建集群.
使用本地映像创建集群
要在气隙环境中置备 Tanzu Kubernetes 集群,请使用从本地内容库同步的虚拟机映像创建集群。
对于 distribution.version 值,可以输入完整映像名称,或者,如果您保留了映像目录中的名称格式,则
可以将其缩短为 Kubernetes 版本。如果要使用完全限定的版本号,请将 ----- 替换为 +。例如,如果有
一个名为 photon-3-k8s-v1.17.8---vmware.1-tkg.1.5417466 的 OVA 映像,则可以接受以下格式。
spec:
distribution:
version: v1.17.8
spec:
distribution:
version: v1.17.8+vmware.1-tkg.1
spec:
distribution:
version: v1.17.8+vmware.1-tkg.1.5417466
```
前提条件
n 下载映像文件.
n 创建本地内容库.
n 将映像导入到本地内容库.
n 验证虚拟机映像是否可用.
步骤
1 使用下载的映像版本更新集群规范文件。
例如:
apiVersion: run.tanzu.vmware.com/v1alpha1
kind: TanzuKubernetesCluster
metadata:
name: dev-cluster
namespace: cltest
spec:
topology:
controlPlane:
count: 3
class: best-effort-xsmall
storageClass: high-performance-ssd
workers:
count: 3
class: best-effort-xsmall
storageClass: high-performance-ssd
distribution:
version: v1.17.8
settings:
network:
cni:
name: antrea #But could be left blank if using the default
services:
cidrBlocks: ["198.51.100.0/12"]
pods:
cidrBlocks: ["192.0.2.0/16"]
2 要创建集群,请运行以下命令。
前提条件
n 置备 Tanzu Kubernetes 集群
步骤
例如:
2 部署 kuard 演示应用程序。
预期结果:
pod/kuard created
3 验证 pod 是否正在运行。
预期结果:
预期结果:
5 使用浏览器访问 http://localhost:8080。
7 删除 kuard pod。
预期结果:
8 验证 pod 是否已删除。
安装并运行 Octant
可以安装 Octant Web 界面,以帮助您直观查看 Tanzu Kubernetes 集群工作负载、命名空间、元数据
等。
关于 Octant
Octant 是用于查看 Kubernetes 集群及其应用程序的开源 Web 界面。
使用以下命令安装 Octant:
使用以下命令安装 Octant:
使用 dpkg -i 命令进行安装。
前提条件
步骤
kind: Service
apiVersion: v1
metadata:
name: srvclb-ngnx
spec:
selector:
app: hello
tier: frontend
ports:
- protocol: "TCP"
port: 80
targetPort: 80
type: LoadBalancer
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: loadbalancer
spec:
replicas: 2
selector:
matchLabels:
app: hello
template:
metadata:
labels:
app: hello
tier: frontend
spec:
containers:
- name: nginx
image: "nginxdemos/hello"
3 应用 YAML。
4 验证 Nginx 服务的部署。
前提条件
步骤
1 创建一个 ClusterRoleBinding,以允许服务帐户管理集群的所有资源。
5 通过在每行前面加上 # 符号,注释掉以下两行:
第 1632 行:
# service.beta.kubernetes.io/aws-load-balancer-backend-protocol: tcp
第 1634 行:
# externalTrafficPolicy: Local
ping 192.168.123.5
创建 YAML。
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: ingress-nihao
spec:
rules:
- http:
paths:
- path: /nihao
backend:
serviceName: nihao
servicePort: 80
应用 YAML。
11 部署具有后端应用程序的测试服务。
kind: Service
apiVersion: v1
metadata:
name: nihao
spec:
selector:
app: nihao
tier: backend
ports:
- protocol: TCP
port: 80
targetPort: http
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: nihao
spec:
replicas: 3
selector:
matchLabels:
app: nihao
tier: backend
track: stable
template:
metadata:
labels:
app: nihao
tier: backend
track: stable
spec:
containers:
- name: nihao
image: "gcr.io/google-samples/hello-go-gke:1.0"
ports:
- name: http
containerPort: 80
应用 YAML。
验证是否已创建后端部署。
http://10.19.14.76/nihao
将返回消息“hello”。
{"message":"Hello"}
结果
注 完成此任务的方法有多种。本文中的步骤提供了一种方法。在给定的环境中,其他方法可能更适合。
前提条件
步骤
1 参考文档,安装 Helm。
ping 10.19.14.76
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: ingress-hello
spec:
rules:
- http:
paths:
- path: /hello
backend:
serviceName: hello
servicePort: 80
7 部署 ingress-hello 资源。
ingress.networking.k8s.io/ingress-hello created
kind: Service
apiVersion: v1
metadata:
name: hello
spec:
selector:
app: hello
tier: backend
ports:
- protocol: TCP
port: 80
targetPort: http
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: hello
spec:
replicas: 3
selector:
matchLabels:
app: hello
tier: backend
track: stable
template:
metadata:
labels:
app: hello
tier: backend
track: stable
spec:
containers:
- name: hello
image: "gcr.io/google-samples/hello-go-gke:1.0"
ports:
- name: http
containerPort: 80
10 部署 ingress-hello-test 资源。
service/hello created
deployment.apps/hello created
11 验证 hello 部署是否可用。
http://10.19.14.76/hello
将返回消息“hello”。
{"message":"Hello"}
结果
支持容器存储接口 (CSI)
Tanzu Kubernetes 集群支持容器存储接口 (CSI)。在 StorageClass 定义中,这种类型的置备程序标识为
csi.vsphere.vware.com。
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: tkgs-storage-class
annotations:
storageclass.kubernetes.io/is-default-class: "true" or "false"
provisioner: csi.vsphere.vmware.com
parameters:
datastoreurl: "ds:///vmfs/volumes/vsan:52d8eb4842dbf493-41523be9cd4ff7b7/"
创建存储类:
storageclass.storage.k8s.io/tkgs-storage-class created
验证是否已创建存储类:
或者,使用快捷方式:
kubectl get sc
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: demo-sts-sc
provisioner: kubernetes.io/vsphere-volume
parameters:
diskformat: thin
默认情况下,容器是临时和无状态容器。对于有状态工作负载,一种常用的方法是创建持久卷声明
(PVC)。可以使用 PVC 挂载持久卷和访问存储。请求会动态地置备持久卷对象和匹配的虚拟磁盘。此声明
将绑定到持久卷。删除此声明时,也将删除相应的持久卷对象和已置备的虚拟磁盘。
步骤
2 切换到正在运行集群的命名空间。
3 验证存储类或创建一个存储类。
要验证现有存储类,请执行以下命令:
4 创建命名空间。
7 验证 PVC 的状态。
前提条件
查看以下主题:
n Pod 安全策略的角色绑定示例
步骤
2 创建 Guestbook 命名空间。
验证:
kubectl get ns
4 验证存储类或创建一个存储类。
要验证现有存储类,请执行以下命令:
5 创建使用存储类的持久卷声明 (PVC)。
n Redis 主节点部署
n Redis 主节点服务
n Redis 从节点部署
n Redis 从节点服务
n Guestbook 前端部署
n Guestbook 前端服务
8 验证 Guestbook 资源的创建。
TCP 65s
service/redis-follower-service ClusterIP 10.111.163.189 <none> 6379/
TCP 65s
service/redis-leader-service ClusterIP 10.111.70.189 <none> 6379/
TCP 65s
Guestbook 示例 YAML 文件
可使用示例 YAML 文件部署具有永久数据的 Guestbook 应用程序。
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: redis-leader-pvc
spec:
accessModes:
- ReadWriteOnce
storgaeClassName: tkgs-storage-class-name
resources:
requests:
storage: 2Gi
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: redis-follower-pvc
spec:
accessModes:
- ReadWriteOnce
storgaeClassName: tkgs-storage-class-name
resources:
requests:
storage: 2Gi
Redis 主节点部署
文件 redis-leader-deployment.yaml 是一个具有持久卷的 Redis 主节点部署示例。
apiVersion: apps/v1
kind: Deployment
metadata:
name: redis-leader-deployment
spec:
selector:
matchLabels:
app: redis
role: leader
tier: backend
replicas: 1
template:
metadata:
labels:
app: redis
role: leader
tier: backend
spec:
containers:
- name: leader
image: redis
resources:
requests:
cpu: 100m
memory: 100Mi
ports:
- containerPort: 6379
volumeMounts:
- name: redis-leader-data
mountPath: /data
volumes:
- name: redis-leader-data
persistentVolumeClaim:
claimName: redis-leader-pvc
Redis 从节点部署
文件 redis-follower-deployment.yaml 是一个具有持久卷的 Redis 从节点部署示例。
apiVersion: apps/v1
kind: Deployment
metadata:
name: redis-follower-deployment
labels:
app: redis
spec:
selector:
matchLabels:
app: redis
role: follower
tier: backend
replicas: 2
template:
metadata:
labels:
app: redis
role: follower
tier: backend
spec:
containers:
- name: follower
image: redisfollower
resources:
requests:
cpu: 100m
memory: 100Mi
env:
- name: GET_HOSTS_FROM
value: dns
ports:
- containerPort: 6379
volumeMounts:
- name: redis-follower-data
mountPath: /data
volumes:
- name: redis-follower-data
persistentVolumeClaim:
claimName: redis-follower-pvc
Redis 主节点服务
文件 redis-leader-service.yaml 是一个 Redis 主节点服务示例。
apiVersion: v1
kind: Service
metadata:
name: redis-leader-service
labels:
app: redis
role: leader
tier: backend
spec:
ports:
- port: 6379
targetPort: 6379
selector:
app: redis
role: leader
tier: backend
Redis 从节点服务
文件 redis-follower-service.yaml 是一个 Redis 从节点服务示例。
apiVersion: v1
kind: Service
metadata:
name: redis-follower-service
labels:
app: redis
role: follower
tier: backend
spec:
ports:
- port: 6379
selector:
app: redis
role: follower
tier: backend
Guestbook 前端部署
文件 guestbook-frontend-deployment.yaml 是一个 Guestbook 前端部署示例。
apiVersion: apps/v1
kind: Deployment
metadata:
name: guestbook-frontend-deployment
spec:
selector:
matchLabels:
app: guestbook
tier: frontend
replicas: 3
template:
metadata:
labels:
app: guestbook
tier: frontend
spec:
containers:
- name: php-redis
image: gcr.io/google-samples/gb-frontend:v4
resources:
requests:
cpu: 100m
memory: 100Mi
env:
- name: GET_HOSTS_FROM
value: dns
ports:
- containerPort: 80
Guestbook 前端服务
文件 guestbook-frontend-service.yaml 是一个 Guestbook 前端负载均衡器服务示例。
apiVersion: v1
kind: Service
metadata:
name: guestbook-frontend-service
labels:
app: guestbook
tier: frontend
spec:
type: LoadBalancer
ports:
- port: 80
selector:
app: guestbook
tier: frontend
n 集群管理员可以使用其用户帐户直接在任何命名空间中创建特权 Pod。
Pod 安全策略的角色绑定示例
Tanzu Kubernetes 集群包括可绑定到的默认 PodSecurityPolicy,以进行特权和受限工作负载部署。
示例 1:用于运行特权工作负载集的 ClusterRoleBinding
下面的 kubectl 命令创建了一个 ClusterRoleBinding,用于向经过身份验证的用户授予访问权限,使其能
够使用默认 PSP vmware-system-privileged 运行特权工作负载集。
注 上述命令允许在集群范围内部署特权工作负载。为加强安全性,请考虑改用 RoleBinding。
示例 2:用于运行特权工作负载集的 RoleBinding
下面的 kubectl 命令创建了一个 RoleBinding,用于向默认命名空间内的所有服务帐户授予访问权限,使
其能够使用默认 PSP vmware-system-privileged 运行特权工作负载集。
kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: rolebinding-default-privileged-sa-ns_default
namespace: default
roleRef:
kind: ClusterRole
name: psp:vmware-system-privileged
apiGroup: rbac.authorization.k8s.io
subjects:
- kind: Group
apiGroup: rbac.authorization.k8s.io
name: system:serviceaccounts
示例 3:用于运行受限工作负载集的 ClusterRoleBinding
下面的 YAML 创建了一个 ClusterRoleBinding,用于向经过身份验证的用户授予集群范围的访问权限,使
其能够使用默认 PSP vmware-system-restricted 运行受限工作负载集。
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: psp:authenticated
subjects:
- apiGroup: rbac.authorization.k8s.io
kind: Group
name: system:authenticated
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: psp:vmware-system-restricted
示例 4:用于运行受限工作负载集的 RoleBinding
下面的 YAML 创建了一个 RoleBinding,用于向特定命名空间内的所有服务帐户授予访问权限,使其能够
使用默认 PSP vmware-system-restricted 运行受限工作负载集。
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: psp:serviceaccounts
namespace: some-namespace
subjects:
- apiGroup: rbac.authorization.k8s.io
kind: Group
name: system:serviceaccounts
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: psp:vmware-system-restricted
PodSecurityPolicy 的示例角色
为演示引用 PSP 的角色,我们以 使用 Contour 的 Tanzu Kubernetes Ingress 示例为例。
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: Role
metadata:
name: contour-leaderelection
namespace: projectcontour
rules:
- apiGroups:
- ""
resources:
- configmaps
verbs:
- create
- get
- list
- watch
- update
- apiGroups:
- ""
resources:
- events
verbs:
- create
- update
- patch
- apiGroups:
- extensions
resourceNames:
- CUSTOM-OR-DEFAULT-PSP
resources:
- podsecuritypolicies
verbs:
- use
操作 Tanzu Kubernetes 集群
Tanzu Kubernetes Grid 服务 包括用于操作 Tanzu Kubernetes 集群的自定义资源。此外,由于与
vSphere 基础架构紧密集成,可以使用熟悉的 vSphere 工具帮助管理和维护 Tanzu Kubernetes 集群。
步骤
2 从菜单中,选择主机和集群视图。
4 展开命名空间资源池。
在集群文件夹中,您会看到构成集群节点的虚拟机。
7 选择 主管命名空间,然后选择计算选项卡。
步骤
2 切换到正在运行集群的 主管命名空间。
4 查看集群详细信息。
该命令将返回有关集群的详细信息。在命令输出的“状态”部分中,您将看到有关集群的详细信息。
...
Status:
Addons:
Cni:
Name: calico
Status: applied
Csi:
Name: pvcsi
Status: applied
Psp:
Name: defaultpsp
Status: applied
Cloudprovider:
Name: vmware-guest-cluster
Cluster API Status:
API Endpoints:
Host: 10.161.90.22
Port: 6443
Phase: provisioned
Node Status:
test-tanzu-cluster-control-plane-0: ready
test-tanzu-cluster-workers-0-749458f97c-97ljv: ready
Phase: running
Vm Status:
test-tanzu-cluster-control-plane-0: ready
test-tanzu-cluster-workers-0-749458f97c-97ljv: ready
Events: <none>
前提条件
步骤
1 切换上下文以使用目标集群上下文。
此命令返回指定集群的资源层次结构,例如命名空间、API 版本和资源版本。
扩展 Tanzu Kubernetes 集群
可以通过增加控制平面节点数以及增加或减少工作节点数来横向扩展 Tanzu Kubernetes 集群。可以通过
更改托管节点的虚拟机类来纵向扩展 Tanzu Kubernetes 集群。
横向扩展控制平面
可以通过使用 kubectl 增加控制平面节点数来横向扩展 Tanzu Kubernetes 集群。
前提条件
步骤
例如:
该命令将返回正在运行的集群的名称、控制平面虚拟机数量、工作节点数、软件版本、经过天数和阶
段。有关状态字段的描述,请参阅 kubectl 中的 Tanzu Kubernetes 集群生命周期状态。
3 获取在目标集群中运行的节点数。
例如:
...
controlPlane:
count: 1
...
...
ControlPlane:
count: 3
...
6 要应用更改,请在文本编辑器中保存该文件。
7 要验证新节点是否已添加,请运行以下命令。
横向扩展后的控制平面现在具有 3 个节点:
横向扩展工作节点
可以通过使用 kubectl 增加工作节点数来横向扩展 Tanzu Kubernetes 集群。
前提条件
步骤
例如:
该命令将返回正在运行的集群的名称、控制平面虚拟机数量、工作节点数、软件版本、经过天数和阶
段。有关状态字段的描述,请参阅 kubectl 中的 Tanzu Kubernetes 集群生命周期状态。
3 获取在目标集群中运行的节点数。
例如:
要扩大集群,请增加工作线程节点数,例如从 3 增加到 4:
...
workers:
count: 3
...
...
workers:
count: 4
...
6 要应用更改,请在文本编辑器中保存该文件。
7 要验证是否已添加新节点,请运行以下命令。
横向扩展后,现在有 4 个工作节点。
横向缩减工作节点
可以通过使用 kubectl 减少工作节点数来横向缩减 Tanzu Kubernetes 集群。
前提条件
步骤
例如:
该命令将返回正在运行的集群的名称、控制平面虚拟机数量、工作节点数、软件版本、经过天数和阶
段。有关状态字段的描述,请参阅 kubectl 中的 Tanzu Kubernetes 集群生命周期状态。
3 获取在目标集群中运行的节点数。
例如:
...
workers:
count: 3
...
...
workers:
count: 2
...
6 要应用更改,请在文本编辑器中保存该文件。
7 验证工作节点是否已移除。
横向缩减后,有 2 个工作节点。
请注意,纵向扩展集群节点时,由于缺少可用资源,工作负载可能无法再运行于节点上。因此,横向扩展
集群节点可能是首选方法。请参见横向扩展工作节点。
前提条件
步骤
Spec:
...
Topology:
Control Plane:
Class: best-effort-small
...
Workers:
Class: best-effort-small
...
4 列出并描述可用的虚拟机类。
5 运行以下命令以编辑集群清单。
spec:
topology:
controlPlane:
class: best-effort-small
...
workers:
class: best-effort-small
...
spec:
topology:
controlPlane:
class: best-effort-large
...
workers:
class: best-effort-large
...
7 保存对清单文件所做的更改。
8 验证 kubectl 是否报告清单编辑已成功记录。
9 验证集群是否正在更新。
10 验证集群是否已更新。
当 vSphere 管理员创建已订阅内容库时,管理员将指定用于存储库内容的数据存储,在这种情况下为
OVA 文件。随着分发更多的 Kubernetes 版本,已订阅内容库的大小将会扩展,因为每次更新都会添加
OVA 文件。虽然已订阅内容库上没有明确的容量限制,但它受其数据存储容量的限制。
步骤
5 选择配置选项卡。
7 单击主面板中内容库部分旁边的编辑。
8 选择您创建的新内容库,然后单击确定。
此操作会触发对集群配置的更新。
前提条件
步骤
2 运行以下命令以列出默认 CNI。
前提条件
步骤
3 编辑 spec.defaultCNI 值。
例如,将
spec:
defaultCNI: antrea
更改为
spec:
defaultCNI: calico
4 保存更改。
名称 用户定义的集群名称。 tkg-cluster-01
WORKER 集群中的工作节点数。 5
集群生命周期阶段状态
下表列出并介绍了集群生命周期每个阶段的状态。请参见表 8-6. 集群生命周期阶段状态
表 8-6. 集群生命周期阶段状态
阶段 描述
creating 集群置备可以开始,正在创建控制平面,或者已创建控制平面但未初始化。
deleting 正在删除集群。
failed 创建集群控制平面失败,可能需要用户干预。
running 已创建并配置基础架构,并且控制平面已完全初始化。
updating 正在更新集群。
列出当前命名空间中的集群。
kubectl get tanzukubernetescluster
上述命令的缩写版本。
kubectl get tkc
描述指定的集群,显示表述的状况、状态和事件。置备完成后,
kubectl describe tanzukubernetescluster CLUSTER-
NAME 此命令将显示为位于 Kubernetes API 端点之前的负载均衡器创
建的虚拟 IP。
上述命令的缩写版本。
kubectl get tkr
列出支持当前命名空间中的集群节点的虚拟机资源。
kubectl get virtualmachine
上述命令的缩写版本。
kubectl get vm
描述指定的虚拟机,显示状况、当前状态和事件。
kubectl describe virtualmachine VIRTUAL-MACHINE-
NAME
列出支持当前命名空间中的集群的“虚拟机集资源策略”资源。
kubectl describe virtualmachinesetresourcepolicy
此资源表示用于集群的 vSphere 对象资源池和文件夹。
列出支持当前命名空间中的集群节点的虚拟机服务资源。这些资
kubectl get virtualmachineservice
源类似于服务,但用于虚拟机,而非 Pod。虚拟机服务既用于为
集群的控制平面节点提供负载均衡器,也用于由准虚拟云提供商
支持集群中 LoadBalancer 类型的 Kubernetes 服务。另请参见
命令 kubectl loadbalancer。
上述命令的缩写版本。
kubectl get vmservice
描述指定的虚拟机服务,显示表述的集群状况、当前状态和事
kubectl describe virtualmachineservice VIRTUAL-
MACHINE-SERVICE-NAME 件。
列出当前命名空间中的负载均衡器资源,包括用于集群的负载均
kubectl get loadbalancer
衡器资源。将为虚拟机服务创建负载均衡器。
列出当前命名空间中的虚拟网络资源,包括用于集群的资源。将
kubectl get virtualnetwork
为每个置备了集群的命名空间和每个集群本身创建一个虚拟网
络。
列出当前命名空间中的持久卷声明资源,包括用于集群的资源。
kubectl get persistentvolumeclaim
请参见第 7 章 vSphere with Tanzu 中的存储。
列出当前命名空间中的配置映射,包括用于创建集群节点的映
kubectl get configmap
射。配置映射不能由用户修改,且任何更改都会被覆盖。
列出当前命名空间中的密钥,包括用于创建和管理集群节点的密
kubectl get secret
钥。请参见 Tanzu Kubernetes 集群密钥。
返回集群节点的虚拟网络。用于验证是否已分配源网络地址转换
kubectl get virtualnetwork -n NAMESPACE
(SNAT) IP 地址。
返回集群节点的虚拟网络接口。用于验证每个集群节点的虚拟机
kubectl get virtualmachines -n NAMESPACE NODE-
NAME 是否已分配 IP 地址。
返回每个集群节点的虚拟机服务。用于验证状态是否已更新,是
kubectl get virtualmachineservices -n NAMESPACE
cluster-1-control-plane-service 否包括负载均衡器虚拟 IP (VIP) 地址。
返回集群的控制平面节点(端点)。用于验证是否每个端点均已
kubectl get endpoints -n NAMESPACE
cluster-1-control-plane-service 创建并包含在端点池中。
注 该列表并不完整。它仅仅包含那些可能需要手动轮换或用于访问集群节点进行故障排除的密钥。
密钥 描述
准虚拟云提供商的云控制器管理器用于连接到 主管命名空间 的服
TANZU-KUBERNETES-CLUSTER-NAME-ccm-token-RANDOM
务帐户令牌。要触发此凭据的轮换,请删除该密钥。
密钥 描述
本章讨论了以下主题:
n 在命名空间中部署应用程序
n 扩展和缩小应用程序
n 使用 注册表服务中的映像部署应用程序
前提条件
n 获取 主管命名空间 的名称。
步骤
1 要查看用于登录的命令语法和选项,请运行以下命令。
2 要连接到 主管集群,请运行以下命令。
例如:
3 要进行身份验证,请输入用户的密码。
CLI 将显示每个可用上下文的详细信息。
5 要在上下文之间切换,请使用以下命令:
后续步骤
在命名空间中部署应用程序
您可以在主管集群上的命名空间中部署应用程序。部署应用程序后,将在 主管集群的命名空间内创建相应
数量的 vSphere Pod。
前提条件
步骤
1 使用 主管集群进行身份验证。
kubectl vsphere login --server <makster URL> --vsphere-username <vSphere user account name>
2 切换到要在其中部署应用程序的上下文。
3 部署应用程序。
扩展和缩小应用程序
您可以扩展和缩小 主管集群上运行的每个应用程序的副本数量。
前提条件
步骤
1 使用 主管集群进行身份验证。
kubectl vsphere login --server <control plane load balancer IP address> --vsphere-username
<vSphere user account name>
2 扩展或缩小应用程序。
前提条件
步骤
2 单击注册表证书以将证书保存在您的计算机上。
3 根据您的操作系统,复制以下目录中的证书。
n Linux
n Mac OS
导入完成后,重新启动 Docker。
示例
后续步骤
使用 注册表服务中的映像部署应用程序
您可以使用 注册表服务中存储的映像在 主管集群 上的命名空间中部署 vSphere Pod。
前提条件
n 将映像推送到注册表服务中一个与要部署应用程序的命名空间具有相同名称的项目。请参见将映像推送
到 注册表服务 上的命名空间 。
n 将 vspere-plugin.zip 的内容添加到环境的执行文件路径中。
步骤
...
namespace: <namespace-name>
...
spec:
...
image: <image registry URL>/<namespace name>/<image name>
2 登录到 主管集群:
3 切换到要在其中部署应用程序的命名空间。
结果
示例:
使用 注册表服务中 demoapp1 项目内的 busybox 映像在命名空间 demoapp1 上创建和部署以下 YAML
文件:
apiVersion: v1
kind: Pod
metadata:
name: busybox
namespace: demoapp1
spec:
containers:
- name: busybox
image: <harbor_IP>/demoapp1/busybox:latest
command:
- sleep
- "3600"
imagePullPolicy: IfNotPresent
restartPolicy: Always
本章讨论了以下主题:
n 要求
n 升级 主管集群
n 将主机添加到 主管集群
n 从 主管集群 中移除主机
n 禁用主管集群
要求
要在 vSphere Lifecycle Manager 管理的 vSphere 集群上配置 vSphere with Tanzu,您的环境必须满
足特定要求。
系统要求
要启用 vSphere with Tanzu,请确认 vSphere 集群上的组件满足以下要求:
n 已向要用作 主管集群 中一部分的所有 ESXi 主机分配一个 VMware vSphere 7 Enterprise Plus with
Add-on for Kubernetes 许可证
升级 主管集群
可以更新到最新版本的 vSphere with Tanzu,其中包括支持 vSphere with Tanzu 集群的 vSphere 基础
架构、Kubernetes 版本,以及适用于 vSphere Lifecycle Manager 所管理集群上的 vSphere 的
Kubernetes CLI 工具。
步骤
2 选择更新选项卡。
3 选择要更新到的可用版本。
例如,选择版本 v1.17.4-vsc0.0.2-16293900。
4 选择要将更新应用到的 主管集群。
5 要启动更新,请单击应用更新。
6 使用近期任务窗格监控更新的状态。
将主机添加到 主管集群
作为 vSphere 管理员,您可能需要横向扩展 主管集群 以运行更多工作负载。要向集群添加容量,可以将
ESXi 主机添加到 vSphere Lifecycle Manager 管理的集群。
前提条件
步骤
2 右键单击该数据中心、集群或文件夹,然后选择添加主机。
3 输入主机的 IP 地址或名称,然后单击下一步。
4 输入管理员凭据,然后单击下一步。
5 检查主机摘要,然后单击下一步。
6 将许可证分配给主机,然后单击完成。
7 在添加主机向导中,单击下一步。
8 检查摘要,然后单击完成。
从 主管集群 中移除主机
作为 vSphere 管理员,您可能需要缩小 主管集群 以节省成本。要减少 主管集群 的容量,可以从
vSphere Lifecycle Manager 管理的集群中移除 ESXi 主机。
前提条件
在可以从集群中移除主机之前,必须关闭正在主机上运行的所有虚拟机的电源,或者将虚拟机迁移到新主
机。
步骤
2 右键单击主机,然后在弹出菜单中选择进入维护模式。
3 在显示的确认对话框中,单击是。
确认对话框还会询问您是否要将已关闭电源的虚拟机移到其他主机。如果您希望这些虚拟机在集群中的
某个主机上保持注册状态,可使用此选项。
主机图标会改变,并且“maintenance mode”一词将添加到名称中,其外面标有圆括号。
4 从清单中选择主机图标,并将其拖至新位置。
可将主机移至另一个集群或另一个数据中心。
5 右键单击主机,然后在弹出菜单中选择退出维护模式。
6 (可选) 如果需要,重新启动任何虚拟机。
禁用主管集群
您可以从 vSphere Lifecycle Manager 管理的 vSphere 集群中禁用 vSphere with Tanzu,以使其可用
于传统工作负载。
步骤
2 选择集群选项卡。
4 单击禁用。
5 单击禁用。
本章讨论了以下主题:
n 支持的更新路径
n 更新 kubectl 的 vSphere 插件
n 更新 Tanzu Kubernetes 集群
为确保成功更新,您的配置必须满足多个兼容性要求,因此系统会实施复查条件以确保集群已准备好进行
更新,并在集群升级失败时支持回滚。
但是,目前这两种类型的集群更新之间存在依赖关系。有关更新路径,请参见支持的更新路径。
关于 主管集群 更新
启动 主管集群 更新时,系统将创建一个新的控制平面节点,并将其加入到现有控制平面。在此更新阶段,
vSphere 清单将显示四个控制平面节点,因为系统会添加一个新的更新节点,然后移除旧的过期节点。对
象将从一个旧的控制平面节点迁移到该新的控制平面节点,并移除旧的控制平面节点。此过程逐个重复执
行,直到所有控制平面节点都已更新。控制平面更新后,将以类似的滚动更新方式更新工作节点。工作节
点是 ESXi 主机,每个 ESXi 主机上的每个 spherelet 进程逐个进行更新。
1 升级 vCenter Server。
2 升级 vCenter Server。
3 升级 ESXi 主机。
支持的更新路径
遵循用于升级工作负载管理组件(包括 主管集群 和 Tanzu Kubernetes 集群)的受支持更新路径。
请按照下面所述路径更新工作负载管理组件。
前提条件
步骤
当前版本 更新要求和建议
当前版本 更新要求和建议
版本 描述
前提条件
步骤
4 选择要更新到的可用版本。
例如,选择版本 v1.18.2-vsc0.0.5-16762486。
5 选择一个或多个要将更新应用到的 主管集群。
6 要启动更新,请单击应用更新。
7 使用近期任务窗格监控更新的状态。
更新 kubectl 的 vSphere 插件
更新 vSphere 命名空间后,会更新 kubectl 的 vSphere 插件。
更新 Tanzu Kubernetes 集群
可以通过更新分发版本、虚拟机类或存储类来更新 Tanzu Kubernetes 集群,包括 Kubernetes 版本。
注 虽然这些是启动滚动更新的最常用方法,但它们并不是唯一的方法。对任何配置元素进行更改也可以启
动滚动更新。例如,当系统尝试在新映像上运行所有节点时,重命名或替换与分发版本对应的
VirtualMachineImage 会启动滚动更新。此外,更新 主管集群 也会触发在其中部署的 Tanzu Kubernetes
集群的滚动更新。例如,如果更新 vmware-system-tkg-controller-manager,则系统将向清单生成器中引
入新值,并且控制器将启动滚动更新以部署这些值。
集群清单更新方法
要更新集群,需要更新集群清单。可通过各种方法执行此操作,包括:
前提条件
步骤
例如:
5 运行以下命令以编辑集群清单。
例如,将清单从以下内容:
spec:
distribution:
fullVersion: v1.17.8+vmware.1-tkg.1.5417466
version: v1.17.8
更改为以下内容:
spec:
distribution:
fullVersion: null
version: v1.18.5
7 保存对清单文件所做的更改。
保存该文件时,kubectl 会将更改应用到集群。在后台,主管集群中的虚拟机服务置备新的工作节点。
8 验证 kubectl 是否报告清单编辑已成功记录。
9 验证集群是否正在更新。
10 验证集群是否已更新。
前提条件
步骤
Spec:
...
Topology:
Control Plane:
Class: best-effort-small
...
Workers:
Class: best-effort-small
...
4 列出并描述可用的虚拟机类。
5 运行以下命令以编辑集群清单。
spec:
topology:
controlPlane:
class: best-effort-small
...
workers:
class: best-effort-small
...
spec:
topology:
controlPlane:
class: best-effort-large
...
workers:
class: best-effort-large
...
7 保存对清单文件所做的更改。
8 验证 kubectl 是否报告清单编辑已成功记录。
9 验证集群是否正在更新。
10 验证集群是否已更新。
前提条件
步骤
3 要确定可用存储类并确定要使用的存储类,请运行以下命令。
4 运行以下命令以编辑集群清单。
例如,将集群清单从针对控制平面和工作节点使用 silver-storage-class 类:
spec:
topology:
controlPlane:
...
storageClass: silver-storage-class
workers:
...
storageClass: silver-storage-class
更改为针对控制平面和工作节点使用 gold-storage-class 类:
spec:
topology:
controlPlane:
...
storageClass: gold-storage-class
workers:
...
storageClass: gold-storage-class
6 保存对清单文件所做的更改。
7 验证 kubectl 是否报告清单编辑已成功记录。
8 验证集群是否正在更新。
9 验证集群是否已更新。
关于 Kubectl 修补程序命令
kubectl patch 命令对集群执行“就地”更新。此命令的目的是提供一种升级 Kubernetes 版本的方法,
也是此处介绍的方法。有关 kubectl patch 命令的详细信息,请参见 Kubernetes 文档中的使用 kubectl
patch 就地更新 API 对象。
使用修补程序方法升级 Kubernetes 版本
触发滚动更新的最常用方法是使用 .spec.distribution.version 和 .spec.distribution.fullVersion 属
性更改集群的 Kubernetes 分发版本。您需要更新 version 提示并取消设置 fullVersion 或将其设为
null,以避免发现过程中可能出现的版本不匹配问题。
预期结果:
tanzukubernetescluster.run.tanzu.vmware.com/TKG-CLUSTER-NAME patched
预期结果:
tanzukubernetescluster.run.tanzu.vmware.com/TKG-CLUSTER-NAME patched
预期结果:
tanzukubernetescluster.run.tanzu.vmware.com/TKG-CLUSTER-NAME patched
本章讨论了以下主题:
n 网络故障排除
n 对工作负载管理启用问题进行故障排除
对非 vSAN 数据存储上的控制层面虚拟机使用反关联性规则
在包含 vSphere with Tanzu 的集群中使用除 vSAN 以外的其他数据存储时,请将三个控制层面虚拟机放
置在不同的数据存储上,以确保可用性。
步骤
a 导航到数据中心。
b 右键单击数据中心对象并选择新建数据存储集群。
d 将集群自动化级别设置为非自动 (手动模式)。
g 选择要添加到数据存储集群的所有共享数据存储。
h 单击完成。
a 导航到数据存储集群。
b 单击配置选项卡,然后单击配置下的规则。
c 单击添加图标并输入规则的名称。
d 确保启用规则已经启用。
e 将规则类型设置为虚拟机反关联性。
f 单击添加图标,然后选择三个主管控制层面虚拟机。
g 单击确定完成配置。
3 创建虚拟机替代项。
a 导航到数据存储集群。
b 单击配置选项卡,然后单击配置下的虚拟机替代项。
c 单击添加图标,然后选择三个控制层面虚拟机。
e 单击完成。
结果
问题
如果 Kubernetes 部署已经使用存储类,则部署的行为可能会不可预测。
解决方案
如果移除存储类匹配的存储策略,则该命令的输出不会列出该存储类。
2 如果存储类已被部署使用,请还原该存储类。
a 通过 vSphere Client,使用与您移除的策略相同的名称创建新的存储策略。
b 将策略分配给命名空间。
请参见更改命名空间上的存储设置。
网络故障排除
您可以对使用 NSX 配置 vSphere with Tanzu 时可能遇到的网络问题进行故障排除。
步骤
2 运行命令 shell。
此时将显示指纹。例如,
08:77:43:29:E4:D1:6F:29:96:78:5F:BF:D6:45:21:F4:0E:3B:2A:68:05:99:C3:A4:89:8F:F2:0B:EA:3A:
BE:9D
4 复制 SHA256 指纹并移除冒号。
08774329E4D16F2996785FBFD64521F40E3B2A680599C3A4898FF20BEA3ABE9D
问题
原因
解决方案
问题
原因
解决方案
收集支持包以进行故障排除
您可以在已注册的集群和结构层节点上收集支持包以便进行故障排除,并可将包下载到您的计算机中或将
其上载到文件服务器。
如果选择将包下载到计算机,则会获得一个存档文件,其中包含一个清单文件和每个节点对应的支持包。
如果选择将包上载到文件服务器,则会将清单文件和各个包单独上载到文件服务器。
步骤
3 选择目标节点。
可用的节点类型有管理节点、Edge、主机和公有云网关。
4 (可选) 指定以天为单位的日志保留期限,以排除早于指定天数的日志。
5 (可选) 切换用于指示是包括还是排除核心文件和审核日志的开关。
注 核心文件和审核日志可能包含敏感信息,如密码或加密密钥。
6 (可选) 选中该复选框可将包上载到文件服务器。
7 单击启动包收集开始收集支持包。
每个节点的日志文件数决定了收集支持包所用的时间。
8 监控收集进程的状态。
状态选项卡显示支持包收集的进度。
9 如果未设置将包发送到文件服务器的选项,请单击下载以下载包。
收集日志文件
可以收集 vSphere with Tanzu 和 NSX-T Data Center 组件中的日志,用于检测错误并进行故障排除。
VMware 技术支持可能会要求提供日志文件。
步骤
2 收集以下日志文件。
日志文件 描述
2 运行命令 shell。
例如:
要求使用 VDS
vSphere with Tanzu 要求使用在同一 VDS 上支持 vSphere 7 流量和 NSX-T 3 流量的融合 VDS。在以
前版本的 vSphere 和 NSX-T 中,有一个 VDS(或 VSS)用于 vSphere 流量,一个 N-VDS 用于 NSX-T
流量。vSphere with Tanzu 不支持此配置。如果尝试使用 N-VDS 启用工作负载管理,系统将报告
vCenter 集群不兼容。有关详细信息,请参见对启用工作负载管理的集群兼容性错误进行故障排除。
问题
原因
您对 主管命名空间 没有足够的权限,或者没有集群访问权限。
解决方案
如果您是使用集群部署工作负载的开发人员,请与您的集群管理员核实是否已向您授予集群访问权限。请
参见向开发人员授予 Tanzu Kubernetes 集群访问权限。
已订阅内容库错误故障排除
如果已订阅内容库达到存储容量限制,将无法置备 Tanzu Kubernetes 集群。
问题
原因
解决方案
对集群置备错误进行故障排除
如果您已置备 Tanzu Kubernetes 集群,但控制平面虚拟机未启动,则可能需要更改虚拟机大小或类。
问题
The host does not have sufficient CPU resources to satisfy the reservation.
原因
虚拟机大小或类不足以进行集群部署。
解决方案
工作负载部署错误故障排除
如果未为经过身份验证的用户配置 PodSecurityPolicy 和绑定,则可能出现工作负载部署错误。
问题
原因
解决方案
问题
原因
集群更新失败的原因有很多,如存储不足。要重新启动失败的更新作业并重试集群更新,请完成以下过
程。
解决方案
2 查找 update_job_name。
对工作负载管理启用问题进行故障排除
如果无法启用工作负载管理,请尝试以下故障排除提示。
对启用工作负载管理的集群兼容性错误进行故障排除
如果系统指示您的 vSphere 集群不兼容,无法启用工作负载管理,请按照以下故障排除提示执行操作。
问题
原因
导致出现此错误的可能原因有多种。首先,请确保您的环境满足启用工作负载管理的最低要求:
n 至少两个 ESXi 主机
n 全自动 DRS
n vSphere HA
n 足够的存储容量
解决方案
2 以 root 用户身份登录。
例如:
dcli +username VI-ADMIN-USER-NAME +password VI-ADMIN-PASSWORD com vmware vcenter cluster list
示例结果:
|-----------|---------|------------|----------|
|drs_enabled|cluster |name |ha_enabled|
|-----------|---------|------------|----------|
|True |domain-d7|vSAN Cluster|True |
|-----------|---------|------------|----------|
例如:
|---------|----------|----------------------------------------------------------------------------
------------|
|cluster |compatible|
incompatibility_reasons |
|---------|----------|----------------------------------------------------------------------------
------------|
|domain-d7|False |Failed to list all distributed switches in vCenter 2b1c1fa5-e9d4-45d7-824c-
fa4176da96b8.|
| | |Cluster domain-d7 is missing compatible NSX-T
VDS. |
|---------|----------|----------------------------------------------------------------------------
------------|
7 要进一步排除故障,请完成下列步骤。
a 跟踪 wcpsvc.log 文件。请参见跟踪工作负载管理日志文件。
b 导航到工作负载管理页面,然后单击启用。
跟踪工作负载管理日志文件
跟踪工作负载管理日志文件可帮助对启用问题和主管集群部署错误进行故障排除。
解决方案
2 以 root 用户身份登录。
3 运行命令 shell。
将显示以下输出:
4 运行以下命令以跟踪日志。
tail -f /var/log/vmware/wcp/wcpsvc.log