本文档提供了有关预检检查的信息。
查看您的防火墙规则
在 1.29 版及更高版本中,当您创建、更新和升级集群时,系统会默认启用服务器端预检检查。服务器端预检检查需要额外的防火墙规则。在管理员集群的防火墙规则中,搜索“预检检查”并确保已配置所有必需的防火墙规则。
运行 gkectl check-config
如果您打算使用 gkectl
创建集群,请运行 gkectl create-config
以生成 GKE on VMware 配置文件。配置文件驱动您的安装:您提供有关 vSphere 环境、网络和负载均衡器的信息,以及集群的预期状态。您可以在创建管理员工作站之前或之后生成配置文件。如需通过某些检查,需要从管理员工作站运行这些检查。
您修改文件以满足环境和集群的需求后,可以使用该文件在本地环境中创建集群。
在使用 gkectl
创建集群之前,请运行 gkectl check-config
,通过多次预检检查验证配置文件。如果该命令返回任何 FAILURE
消息,请修复问题并再次验证文件。如果某项功能验证返回任何警告消息,则必须先修复底层问题,然后才能使用此功能。
预检检查模式和跳过验证
gkectl check-config
具有默认模式和快速模式:
在默认模式下,该命令会全面验证每个字段。此外,默认模式会创建临时的 vSphere 虚拟机作为验证的一部分,这可能需要更多时间。
在快速模式下,该命令会跳过创建测试虚拟机的检查,仅运行快速检查。您可以通过传递
--fast
标志启用快速模式。
您可以通过传递其他标志(请参阅 gkectl check-config --help
中的说明)跳过特定验证。
管理员工作站与测试虚拟机之间的流量
在默认模式下,预检检查会为集群创建测试虚拟机。每个测试虚拟机都运行一个 HTTP 服务器,该服务器侦听端口 443 以及您在配置文件中指定的节点端口。
系统会向测试虚拟机分配多个 IP 地址。如果您的配置文件表明集群节点将从 DHCP 服务器获取其 IP 地址,则预检检查使用 DHCP 服务器将 IP 地址分配给测试虚拟机。如果您的配置文件表明将为集群节点分配静态 IP 地址,则预检检查会将您在 IP 块文件中指定的静态 IP 地址分配给测试虚拟机。
运行在管理员工作站上的预检检查使用分配给测试虚拟机的各 IP 地址向这些虚拟机发送 HTTP 请求。请求会发送至端口 443 以及您在配置文件中指定的节点端口。
何时应运行预检检查?
最好在尝试创建集群之前及早运行预检检查。 尽早运行预检检查有助于确认您是否已正确配置您的 vSphere 环境和网络。
如果您使用的是 GKE on VMware 1.2.0-gke.6 版,请运行 gkectl check-config
两次:
运行
gkectl check-config --fast
。运行
gkectl prepare
。不带
--fast
标志,再次运行gkectl check-config
。
运行两次的原因是:gkectl prepare
将集群节点操作系统映像的虚拟机模板上传到您的 vSphere 环境。在运行完整的验证集之前,该虚拟机模板必须就位。
在 GKE on VMware 1.2.1 版及更高版本中,check-config
命令本身会上传虚拟机模板,因此您可以运行完整的验证集,然后运行 gkectl prepare
:
不带
--fast
标志运行gkectl check-config
。运行
gkectl prepare
。
预检检查会验证您为文件提供的值。您无需填充配置文件中的每个字段即可对该文件运行预检检查;相反,您可以在填充文件的字段时对其进行迭代验证。例如,如果您只想验证 vCenter 配置,则只能填写 vcenter
字段并对其进行检查。
请记住,创建集群后,您的 GKE on VMware 配置便无法再改变。通过运行预检检查,您可以在创建集群之前发现和解决配置中的问题。
保留测试虚拟机以进行调试
从 GKE on VMware 1.2.1 版开始,gkectl check-config
命令具有 --cleanup
标志。
当 gkectl check-config
执行完整的验证集时,它会创建一个测试虚拟机和一个关联的 SSH 密钥。如果您想保留测试虚拟机和 SSH 密钥以进行调试,请将 --cleanup
设置为 false。
--cleanup
的默认值为 true。
预检检查列表
预检检查会验证配置文件中的每个字段。当前检查如下:
类别 | 说明 | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
配置文件 | 通常验证每个字段和规范是否具有预期的格式和值。 使用 使用 |
||||||||||||||||
互联网 | 验证所需网域的互联网访问权限。根据您运行 gkectl 的位置验证代理配置。 已使用 |
||||||||||||||||
操作系统映像 | 验证操作系统映像是否存在。 已使用 |
||||||||||||||||
Windows 操作系统版本 | 验证 Windows 操作系统版本。 在使用命令行工具 |
||||||||||||||||
集群版本 | 验证用于创建和升级的管理员集群版本、用户集群版本和 已使用 |
||||||||||||||||
集群运行状况 | 在升级之前,验证管理员或用户集群日运行状况是否良好:
已使用 |
||||||||||||||||
入站流量 | 在升级之前检查用户集群是否具有 Istio 网关对象。 | ||||||||||||||||
预留的 IP | 验证是否有足够的 IP 地址可用于创建和升级。 已使用 |
||||||||||||||||
Google Cloud |
--skip-validation-gcp 标志可跳过。
| ||||||||||||||||
对 gcr.io/gke-on-prem-release 的访问权限 |
验证对 Container Registry 中托管的 GKE on VMware 容器映像仓库的访问权限。 已使用 |
||||||||||||||||
Docker 注册表 |
privateregistryconfig 如果已配置,则验证对 Docker 仓库的访问权限。 已使用 |
||||||||||||||||
vCenter | 检查所有 vcenter 字段是否存在,并检查以下内容:
已使用 |
||||||||||||||||
存储 |
| ||||||||||||||||
CSI 工作负载 |
验证集群可以成功运行使用通过 vSphere CSI 驱动程序创建的动态预配 PersistentVolume 的工作负载。 此检查在升级期间运行,并且仅当存在树内 vSphere 卷且没有 vSphere CSI 卷时才会运行。 此检查会:
|
||||||||||||||||
反亲和性群组的主机 | 如果启用了
如需为集群停用 已使用 |
||||||||||||||||
负载均衡器 | 验证负载均衡配置:
--skip-validation-load-balancer 标志可跳过。
|
||||||||||||||||
网络 | 验证提供的 CIDR 范围、VIP 地址和静态 IP 地址(如果已配置)是否可用。检查 IP 地址是否不重叠。 已使用 |
||||||||||||||||
DNS | 验证提供的 DNS 服务器是否可用。 已使用 |
||||||||||||||||
NTP | 验证提供的网络时间协议 (NTP) 服务器是否可用。 已使用 |
||||||||||||||||
VIP 地址 | 对提供的 VIP 地址执行 ping 操作。如果 ping 失败,则此检查成功,它表示 VIP 地址尚未被占用。 已使用 |
||||||||||||||||
节点 IP 地址 | 对提供的节点 IP 地址执行 ping 操作。如果 ping 失败,则此检查成功,它表示节点 IP 地址尚未被占用。 已使用 |
预检检查结果
预检检查可返回以下结果:
- SUCCESS
- 该字段及其值已通过检查。
- FAILURE
- 该字段和/或其值未通过检查。如果检查返回
FAILURE
消息,请修复问题并再次验证文件。 - SKIPPED
该检查已被跳过,可能是因为该检查与您的配置无关。例如,如果您使用的是 DHCP 服务器,则系统会跳过 DNS 检查和节点 IP 地址检查(仅与静态 IP 地址配置相关)。
如果您传递的标志会跳过验证,则跳过的检查不会返回 SKIPPED 结果;相反,验证不会运行,并且不会出现在命令输出中。
- UNKNOWN
跳过返回非零代码。您可以将 UNKNOWN 结果视为未通过检查。UNKNOWN 通常表示检查无法运行某些系统软件包,例如无法运行 nslookup 或无法运行 gcloud。
即将推出
未来版本中将添加以下预检检查:
- NTP 服务器
运行预检检查
您可以通过运行以下命令来运行预检检查:
gkectl check-config --config [CONFIG]
其中 [CONFIG] 是 GKE on VMware 配置文件的路径
在快速模式下运行
如果您愿意,可以在“快速模式”中运行预检检查,这样可以跳过创建临时测试虚拟机的验证(例如负载均衡 VIP 地址和节点 IP 地址验证)。为此,请传入 --fast
:
gkectl check-config --config [CONFIG] --fast
跳过特定验证
您可以通过传入标志来明确跳过 DNS、代理和网络等特定验证。每个跳过标志都以 --skip-[VALIDATION]
为前缀。
如需了解可用的跳过标志,请运行以下命令。您可以选择参阅 gkectl check-config 参考文档:
gkectl check-config --help
例如,要跳过负载均衡器验证,请运行以下命令:
gkectl check-config --config my-config.yaml --skip-validation-load-balancer
取消预检检查
如果您已开始运行预检检查又想要取消,请按两次 Ctrl+C。如果预检检查创建了测试虚拟机,则取消操作也应自动清理虚拟机。
清理测试虚拟机
如果在预检检查完成后测试虚拟机仍然存在,您可以从 vCenter 中删除该虚拟机。测试虚拟机的名称如下所示:
check-config-[dhcp|static]-[random number]
如需删除虚拟机,请执行以下操作:
右键点击虚拟机,然后点击电源 > 关闭电源
关停虚拟机后,再次右键点击虚拟机,然后点击从磁盘删除。
示例
以下是该命令的输出示例。在此示例中,要验证的配置使用集成负载均衡模式和静态 IP 地址,但没有外部 Docker 注册表:
- Validation Category: Config Check - [SUCCESS] Config - Validation Category: Internet Access - [SUCCESS] Internet access to required domains - Validation Category: GCP - [SUCCESS] GCP Service - [SUCCESS] GCP Service Account - Validation Category: Docker Registry - [SUCCESS] gcr.io/gke-on-prem-release access - Validation Category: vCenter - [SUCCESS] Credentials - [SUCCESS] Version - [SUCCESS] Datacenter - [SUCCESS] Datastore - [SUCCESS] Data Disk - [SUCCESS] Resource Pool - [SUCCESS] Network - [SUCCESS] VSphere CSI Driver - Validation Category: F5 BIG-IP - [SUCCESS] Admin Cluster F5 (credentials, partition and user role) - [SUCCESS] User Cluster F5 (credentials, partition and user role) - Validation Category: Network Configuration - [SUCCESS] CIDR, VIP and static IP (availability and overlapping) - Validation Category: DNS - [SUCCESS] DNS (availability) - Validation Category: VIPs - [SUCCESS] ping (availability) - Validation Category: Node IPs - [SUCCESS] ping (availability) Now running slow validation checks. ... Reusing VM template "gke-on-prem-osimage-xxx" that already exists in vSphere. Creating test VMs with admin cluster configuration... DONE Waiting to get IP addresses from test VMs... DONE Waiting for test VMs to become ready... DONE Reusing VM template "gke-on-prem-osimage-xxx" that already exists in vSphere. Creating test VMs with user cluster configuration... DONE Waiting to get IP addresses from test VMs... DONE Waiting for test VMs to become ready... DONE - Validation Category: F5 BIG-IP - [SUCCESS] Admin Cluster VIP and NodeIP - [SUCCESS] Admin Cluster F5 Access - [SUCCESS] User Cluster VIP and NodeIP - [SUCCESS] User Cluster F5 Access - Validation Category: Internet Access - [SUCCESS] Internet access to required domains - Validation Category: vCenter on test VMs - [SUCCESS] Test VM: VCenter Access and Permission - Validation Category: DNS on test VMs - [SUCCESS] Test VM: DNS Availability - Validation Category: TOD on test VMs - [SUCCESS] Test VM: TOD Availability - Validation Category: Docker Registry - [SUCCESS] gcr.io/gke-on-prem-release access Deleting test VMs with admin cluster configuration... DONE Deleting test VMs with user cluster configuration... DONE
已知问题
对于 1.3.0-gke.16 版:
如果同时满足以下两个条件,则必须对预检检查运行快速验证检查
gkectl check-config --fast
:您已将 GKE on VMware 配置为使用代理。
您安装了以下其中一个软件包:
- “下载”页面中的
/var/lib/gke/bundles/gke-onprem-vsphere-1.3.0-gke.16.tgz
软件包。 - 来自管理员工作站的
/var/lib/gke/bundles/gke-onprem-vsphere-1.3.0-gke.16.tgz
软件包。
- “下载”页面中的
仅当您安装了完整的软件包时,才能运行完整的验证集。例如:
/var/lib/gke/bundles/gke-onprem-vsphere-1.3.0-gke.16-full.tgz
对于 1.2.0-gke.6 版:
如果您使用的是嵌套资源池或默认资源池,则当您尝试执行完整的验证集时,
gkectl check-config
会失败。不过,您可以通过传递--fast
标志来执行较小的验证集。gkectl check-config --config [CONFIG] --fast