运行预检检查

本页面介绍如何对 GKE On-Prem 配置文件运行预检检查。

概览

在安装过程中,您需要运行 gkectl create-config 来生成 GKE On-Prem 配置文件。配置文件驱动您的安装:您提供有关 vSphere 环境、网络和负载平衡器的信息,以及集群的预期情况。您可以在创建管理员工作站之前或之后生成配置文件。对于某些要通过的检查,需要从管理员工作站运行检查。

您修改文件以满足环境和集群的需求后,可以使用该文件在本地环境中创建集群。

在创建集群之前,请运行 gkectl check-config 以通过多次预检检查配置文件。

预检检查模式和跳过验证

gkectl check-config 具有默认模式和快速模式:

  • 在默认模式下,该命令会全面验证每个字段。此外,默认模式会创建临时的 vSphere 虚拟机作为验证的一部分,这可能需要更多时间。

  • 在快速模式下,该命令会跳过创建测试虚拟机的检查,仅运行快速检查。您可以通过传递 --fast 标志启用快速模式。

您可以通过传递其他标志(请参阅 gkectl check-config --help 中的说明)跳过特定验证。

管理员工作站与测试虚拟机之间的流量

在默认模式下,预检检查会为管理员集群和用户集群创建测试虚拟机。每个测试虚拟机都运行一个 HTTP 服务器,该服务器侦听端口 443 以及您在配置文件中指定的节点端口。

系统会向测试虚拟机分配多个 IP 地址。如果您的配置文件表明集群节点将从 DHCP 服务器获取其 IP 地址,则预检检查使用 DHCP 服务器将 IP 地址分配给测试虚拟机。如果您的配置文件表明将为集群节点分配静态 IP 地址,则预检检查会将您在 hostconfig 文件中指定的静态 IP 地址分配给测试虚拟机。

运行在管理员工作站上的预检检查使用分配给测试虚拟机的各 IP 地址向这些虚拟机发送 HTTP 请求。请求会发送至端口 443 以及您在配置文件中指定的节点端口。

何时应运行预检检查?

最好在尝试创建集群之前及早运行预检检查。尽早运行预检检查有助于确认您是否已正确配置您的环境和网络。

如果您使用的是 GKE On-Prem 1.2.0-gke.6 版,请运行 gkectl check-config 两次:

  1. 运行 gkectl check-config --fast

  2. 运行 gkectl prepare

  3. 不带 --fast 标志,再次运行 gkectl check-config

运行两次的原因是:gkectl prepare 将集群节点操作系统映像的虚拟机模板上传到您的 vSphere 环境。在运行完整的验证集之前,该虚拟机模板必须就位。

在 GKE On-Prem 1.2.1 版及更高版本中,check-config 命令本身会上传虚拟机模板,因此您可以运行完整的验证集,然后运行 gkectl prepare

  1. 不带 --fast 标志运行 gkectl check-config

  2. 运行 gkectl prepare

预检检查会验证您为文件提供的值。您无需填充配置文件中的每个字段即可对该文件运行预检检查;相反,您可以在填充文件的字段时对其进行迭代验证。例如,如果您只想验证 vCenter 配置,则只能填写 vcenter 字段并对其进行检查。

请记住,创建集群后,您的 GKE On-Prem 便无法再改变。通过运行预检检查,您可以在创建集群之前发现和解决配置中的问题。

保留测试虚拟机以进行调试

从 GKE 1.2.1 版开始,gkectl check-config 命令具有 --cleanup 标志。

gkectl check-config 执行完整的验证集时,它会创建一个测试虚拟机和一个关联的 SSH 密钥。如果您想保留测试虚拟机和 SSH 密钥以进行调试,请将 --cleanup 设置为 false。

--cleanup 的默认值为 true。

预检检查列表

预检检查会验证配置文件中的每个字段。当前检查如下:

类别 说明
配置文件

通常验证每个字段和规范是否具有预期的格式和值。

使用 --skip-validation-config 标志可跳过。

使用 --skip-validation-proxy 标志跳过 proxy 字段验证。

互联网

验证所需网域的互联网访问权限。根据您运行 gkectl 的位置验证代理配置。

使用 --skip-validation-internet 标志可跳过。

Google Cloud
项目 ID
[*].projectid
验证为配置中的各个字段提供的项目 ID。如果缺少项目 ID,则跳过验证。
注册服务帐号
registerserviceaccountkeypath
验证服务帐号是否拥有所需的 IAM 角色。验证所需的 API 是否已启用。
连接服务帐号
agentserviceaccountkeypath
验证服务帐号是否拥有所需的 IAM 角色。验证所需的 API 是否已启用。
Google Cloud 的运维套件服务帐号
stackdriver.serviceaccountkeypath
验证服务帐号是否拥有所需的 IAM 角色。验证所需的 API 是否已启用。
使用 --skip-validation-gcp 标志可跳过。
gcr.io/gke-on-prem-release 的访问权限 验证对 Container Registry 中托管的 GKE On-Prem 容器映像注册表的访问权限。

使用 --skip-validation-docker 标志可跳过。

Docker 注册表
privateregistryconfig
如果已配置,则验证对 Docker 注册表的访问权限。

使用 --skip-validation-docker 标志可跳过。

vCenter 检查所有 vcenter 字段是否存在,并检查以下内容:
凭据
vcenter.credentials.[*]
使用提供的用户凭据验证对 vCenter Server 的身份验证。
vSphere 版本 验证 vSphere 的版本是 6.5 还是 6.7 Update 3。
数据中心
vcenter.datacenter
验证 vSphere 数据中心是否存在。
数据存储区
vcenter.datastore
验证 vSphere 数据存储区是否存在。
数据磁盘
vcenter.datadisk
验证 vSphere 中不存在 vSphere 虚拟机磁盘 (VMDK)。
资源池
vcenter.resourcepool
验证 vSphere 资源池是否存在。
网络
vcenter.network
验证 vSphere 网络是否存在。

使用 --skip-validation-infra 标志可跳过。

负载平衡器

验证负载平衡配置:

  • 如果负载平衡模式为集成负载平衡模式 (lbmode: Integrated),则验证 adminclusterusercluster 规范中是否存在所有 bigip 字段。
  • 如果负载平衡模式为手动负载平衡模式 (lbmode: Manual),则验证 adminclusterusercluster 规范中是否存在所有 manuallbspec 字段。
集成负载平衡
bigip.credentials.[*] 验证您的 F5 BIG-IP 凭据。
bigip.partition 验证提供的分区是否存在。
F5 BIG-IP 用户角色 验证所提供的 F5 BIG-IP 用户是否具有 Administrator 或 Resource Administrator 角色。
bigip.vips.[*] 验证提供的 VIP 地址。

使用 --fast--skip-validation-load-balancer 标志可跳过。

手动负载平衡
网络配置 验证 VIP 地址、节点 IP 地址等。

使用 --fast--skip-validation-load-balancer 标志可跳过。

[*].manuallbspec.[*] 验证提供的节点端口。
使用 --skip-validation-load-balancer 标志可跳过。
网络

验证提供的 CIDR 范围、VIP 地址和静态 IP 地址(如果已配置)是否可用。检查 IP 地址是否不重叠。

使用 --skip-validation-net-config 标志可跳过。

DNS

验证提供的 DNS 服务器是否可用。

使用 --skip-validation-dns 标志可跳过。

NTP

验证提供的网络时间协议 (NTP) 服务器是否可用。

使用 --skip-validation-tod 标志可跳过。

VIP 地址

对提供的 VIP 地址执行 ping 操作。如果 ping 失败,则此检查成功,它表示 VIP 地址尚未被占用。

使用 --skip-validation-vips 标志可跳过。

节点 IP 地址

对提供的节点 IP 地址执行 ping 操作。如果 ping 失败,则此检查成功,它表示节点 IP 地址尚未被占用。

使用 --skip-validation-node-ips 标志可跳过。

预检检查结果

预检检查可返回以下结果:

SUCCESS
该字段及其值通过了检查。
FAILURE
该字段和/或其值未通过检查。如果检查返回 FAILURE 消息,请修复问题并再次验证文件。
SKIPPED

该检查已被跳过,可能是因为该检查与您的配置无关。例如,如果您使用的是 DHCP 服务器,则系统会跳过 DNS 检查和节点 IP 地址检查(仅与静态 IP 地址配置相关)。

如果您传递的标志会跳过验证,则跳过的检查不会返回 SKIPPED 结果;相反,验证不会运行,并且不会出现在命令输出中。

UNKNOWN

跳过返回非零代码。您可以将 UNKNOWN 结果视为未通过检查。UNKNOWN 通常表示检查无法运行某些系统软件包,例如无法运行 nslookup 或无法运行 gcloud。

即将推出

未来版本中将添加以下预检检查:

  • NTP 服务器

运行预检检查

您可以通过运行以下命令来运行预检检查:

gkectl check-config --config [CONFIG]

其中 [CONFIG] 是 GKE On-Prem 配置文件的路径

在快速模式下运行

如果您愿意,可以在“快速模式”中运行预检检查,这样可以跳过创建临时测试虚拟机的验证(例如负载平衡 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]

如需删除虚拟机,请执行以下操作:

  1. 右键点击虚拟机,然后点击电源 > 关闭电源

  2. 关停虚拟机后,再次右键点击虚拟机,然后点击从磁盘删除

示例

以下是该命令的输出示例。在此示例中,要验证的配置使用集成负载平衡模式和静态 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

- 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

    1. 您配置了 GKE On-Prem 以使用代理(静态 IP | HTTP)。
    2. 您安装了以下其中一个软件包:

      • “下载”页面中的 /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 软件包。

    只有当您安装了完整的软件包(静态 IP | HTTP)时,才能运行完整的验证集。例如:/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

后续步骤