本页面介绍 Anthos clusters on VMware (GKE On-Prem) 管理员集群配置文件中的字段。
生成配置文件模板
如果您使用了 gkeadm
来创建管理员工作站,则 gkeadm
为您的管理员集群配置文件生成了一个模板。此外,gkeadm
还为您填写了一些字段。
如果您未使用 gkeadm
创建管理员工作站,则可以使用 gkectl
为管理员集群配置文件生成模板。
如需为管理员集群配置文件生成模板,请运行以下命令:
gkectl create-config admin --config=OUTPUT_FILENAME --gke-on-prem-version=VERSION
将 OUTPUT_FILENAME
替换为您为生成的模板选择的路径。如果省略此标志,则 gkectl
将该文件命名为 admin-cluster.yaml
,并将其放在当前目录中。
将 VERSION
替换为所需的版本号,它必须等于或小于您的 gkectl
版本。例如:gkectl create-config admin --gke-on-prem-version=1.6.2-gke.0
。如果省略此标志,则生成的配置模板将填充基于最新集群版本的值。
模板
填写配置文件
在配置文件中,按照以下部分的说明输入字段值。
name
字符串。您为集群选择的名称。默认值是前缀为 gke-admin-
的随机名称。例如:
name: "my-admin-cluster"
bundlePath
字符串。Anthos clusters on VMware 软件包文件的路径。
Anthos clusters on VMware 完整软件包文件中包含 Anthos clusters on VMware 特定版本的所有组件。创建管理员工作站时,该工作站会随附以下完整软件包:
/var/lib/gke/bundles/gke-onprem-vsphere-VERSION-full.tgz
例如:
bundlePath: "/var/lib/gke/bundles/gke-onprem-vsphere-1.9.0-gke.8.full.tgz"
vCenter
本部分包含有关 vCenter 环境的信息。
vCenter.address
字符串。您的 vCenter 服务器的 IP 地址或主机名。
在填写 address
字段之前,请下载并检查您的 vCenter 服务器的服务证书。输入以下命令以下载证书并将其保存到名为 vcenter.pem
的文件中。
true | openssl s_client -connect VCENTER_IP:443 -showcerts 2>/dev/null | sed -ne '/-BEGIN/,/-END/p' > vcenter.pem
将 VCENTER_IP
替换为您的 vCenter Server 的 IP 地址。
打开证书文件以查看主题通用名称和主题备用名称:
openssl x509 -in vcenter.pem -text -noout
输出会显示 Subject
通用名称 (CN)。这可能是 IP 地址,也可能是主机名。例如:
Subject: ... CN = 203.0.113.100
Subject: ... CN = my-vcenter-server.my-domain.example
输出还可能在 Subject Alternative Name
下包含一个或多个 DNS 名称:
X509v3 Subject Alternative Name: DNS:vcenter.my-domain.example
选择 Subject
通用名称或 Subject Alternative Name
下的一个 DNS 名称,以在配置文件中用作 vcenter.address
的值。例如:
vCenter: address: "203.0.113.100"
vCenter: address: "my-vcenter-server.my-domain.example"
vCenter.datacenter
字符串。管理员集群的 vCenter 数据中心的名称。例如:
vCenter: datacenter: "MY-DATACENTER"
vCenter.cluster
字符串。您的 vSphere 集群的名称。例如:
vCenter: cluster: "MY-CLUSTER"
vCenter.resourcePool
字符串。vCenter 资源池的名称。例如:
如果您使用的是非默认资源池,请提供您的 vCenter 资源池的名称。例如:
vCenter: resourcePool: "MY-POOL"
如果您使用的是默认资源池,请提供以下值:
vCenter: resourcePool: "VSPHERE_CLUSTER/Resources"
将 VSPHERE_CLUSTER
替换为您的 vSphere 集群名称。
vCenter.datastore
字符串。vCenter 数据存储区的名称。例如:
vCenter: datastore: "MY-DATASTORE"
请参阅为独立主机指定根资源池。
vCenter.caCertPath
字符串。当客户端(如 Anthos Clusters on VMware)向您的 vCenter 服务器发送请求时,服务器必须通过提供证书或证书软件包来向客户端证明其身份。为了验证证书或软件包,Anthos Clusters on VMware 必须具有信任链中的根证书。
将 vCenter.caCertPath
设置为根证书的路径。例如:
vCenter: caCertPath: "/usr/local/google/home/me/certs/vcenter-ca-cert.pem"
VMware 安装的证书授权机构 (CA) 会向您的 vCenter 服务器颁发证书。信任链中的根证书是由 VMware 创建的自签名证书。
如果您的证书发生变化,您可以更新对新证书的引用。
如果您不想使用默认的 VMWare CA,则可以将 VMware 配置为使用其他证书授权机构。
如果您的 vCenter 服务器使用默认 VMware CA 颁发的证书,请按如下方式下载该证书:
curl -k "https://SERVER_ADDRESS/certs/download.zip" > download.zip
将 SERVER_ADDRESS
替换为您的 vCenter 服务器的地址。
安装 unzip
命令并解压缩证书文件:
sudo apt-get install unzip unzip downloads.zip
如果首次解压缩命令无效,请再次输入该命令。
在 certs/lin
中可找到证书文件。
vCenter.credentials.fileRef.path
字符串。凭据配置文件的路径,该文件包含您的 vCenter 用户帐号的用户名和密码。用户帐号应具有 Administrator 角色或同等权限。请参阅 vSphere 要求。例如:
vCenter: credentials: fileRef: path: "my-config-folder/admin-creds.yaml"
vCenter.credentials.fileRef.entry
字符串。凭据配置文件中的凭据块名称,该文件包含您的 vCenter 用户帐号的用户名和密码。例如:
vCenter: credentials: fileRef: entry: "vcenter-creds"
vCenter.folder
字符串。您的集群虚拟机所在的 vCenter 文件夹的名称。例如:
vCenter: folder: "MY-FOLDER"
vCenter.dataDisk
字符串。Anthos clusters on VMware 会创建一个虚拟机磁盘 (VMDK) 来保存 Kubernetes 对象数据。安装程序会为您创建 VMDK,但您必须在 vCenter.dataDisk
字段中提供 VMDK 的名称。例如:
vCenter: dataDisk: "my-disk.vmdk"
如果您使用的是 vSAN 数据存储区,则必须将 VMDK 放在文件夹中,并且必须提前手动创建该文件夹。您可以使用 govc
创建文件夹:
govc datastore.mkdir -namespace=true my-folder
然后将 vCenter.dataDisk
设置为 VMDK 的路径(包括文件夹)。
例如:
vDenter: dataDisk: "my-folder/my-disk.vmdk"
network
本部分包含有关管理员集群网络的信息。
network.hostConfig
本部分包含有关集群使用的 NTP 服务器、DNS 服务器和 DNS 搜索网域的信息。
如果您为以下一个或两个字段提供了值,请填写此部分。否则,请移除此部分:
loadBalancer.seesaw.ipBlockFilePath
network.ipMode.ipBlockFilePath
network.hostConfig.dnsServers
字符串数组。供主机使用的 DNS 服务器地址。例如:
network: hostConfig: dnsServers: - "172.16.255.1" - "172.16.255.2"
network.hostConfig.ntpServers
字符串数组。供主机使用的时间服务器地址。例如:
network: hostConfig: ntpServers: - "216.239.35.0"
network.hostConfig.searchDomainsForDNS
字符串数组。供主机使用的 DNS 搜索网域。这些网域会用作网域搜索列表的一部分。例如:
network: hostConfig: searchDomainsForDNS: - "my.local.com"
network.ipMode.type
字符串。如果您希望集群节点从 DHCP 服务器获取其 IP 地址,请将此设置为 "dhcp"
。如果您希望集群节点从您提供的列表中选择静态 IP 地址,请将此设置为 "static"
。
例如:
network: ipMode: type: "static"
network.ipMode.ipBlockFilePath
如果将 ipMode.type
设置为 "static"
,请填写此字段。
如果您将 ipMode.type
设置为 "dhcp"
,请移除此字段。
字符串。管理员集群节点的 IP 地址块文件路径。例如:
network: ipMode: ipBlockFilePath: "/my-config-folder/admin-cluster-ipblock.yaml"
network.serviceCIDR
和 network.podCiDR
字符串。管理员集群必须拥有用于 Service 的 IP 地址范围以及用于 pod 的 IP 地址范围。这些范围由 network.serviceCIDR
和 network.podCIDR
字段指定。这些字段会填充默认值。您也可以将填充值更改为您选择的值。
Service 范围不得与 Pod 范围重叠。
Service 和 pod 范围不得与您要从集群内部访问的任何集群外部地址重叠。
例如,假设您的 Service 范围为 10.96.232.0/24,您的 Pod 范围为 192.168.0.0/16。从 Pod 发送到上述任一范围中的地址的任何流量都将被视为集群内的流量,并且不会到达集群外部的任何目的地。
具体来说,Service 和 pod 范围不得与以下各项重叠:
任何集群中节点的 IP 地址
负载均衡器使用的 IP 地址
控制平面节点和负载均衡器使用的 VIP 地址
vCenter 服务器、DNS 服务器和 NTP 服务器的 IP 地址
我们建议您的 Service 和 Pod 范围位于 RFC 1918 地址空间中。
以下是建议使用 RFC 1918 地址的一个原因。假设您的 Pod 或 Service 范围包含外部 IP 地址。从 Pod 发送到其中一个外部地址的任何流量都将被视为集群内流量,并且不会到达外部目标。
例如:
network: serviceCIDR: "10.96.232.0/24" podCIDR: "192.168.0.0/16"
network.vCenter.networkName
字符串。您的集群节点所在的 vSphere 网络的名称。
如果名称中包含特殊字符,您必须对其使用转义序列。
特殊字符 | 转义序列 |
---|---|
正斜杠 (/ ) |
%2f |
反斜杠 (\ ) |
%5c |
百分号 (% ) |
%25 |
如果网络名称不唯一,则可以指定网络的路径,例如 /DATACENTER/network/NETWORK_NAME
。
例如:
network: vCenter: networkName: "MY-CLUSTER-NETWORK"
loadBalancer
本部分包含有关管理员集群的负载均衡器的信息。
loadBalancer.vips.controlPlaneVIP
字符串。您选择为管理员集群的 Kubernetes API 服务器在负载均衡器上配置的 IP 地址。例如:
loadBalancer: vips: controlplaneVIP: "203.0.113.3"
loadBalancer.vips.addonsVIP
字符串。您选择在负载均衡器上为插件配置的 IP 地址。例如:
loadBalancer: vips: addonsVIP: "203.0.113.4"
loadBalancer.kind
字符串。请将此设置为 "Seesaw"
、"F5BigIP"
或 "ManualLB"
。例如:
loadBalancer: kind: "Seesaw"
loadBalancer.manualLB
如果将 loadbalancer.kind
设置为 "ManualLB"
,请填写此部分。否则,请移除此部分。
loadBalancer.manualLB.ingressHTTPNodePort
从配置文件中移除此字段。此字段未在管理员集群中使用。
loadBalancer.manualLB.ingressHTTPSNodePort
从配置文件中移除此字段。此字段未在管理员集群中使用。
loadBalancer.manualLB.controlPlaneNodePort
整数。管理员集群中的 Kubernetes API 服务器实现为 NodePort
类型的 Service。您必须为 Service 选择 nodePort
值。
将此字段设置为 nodePort
值。例如:
loadBalancer: manualLB: contolPlaneNodePort: 30968
loadBalancer.manualLB.addonsNodePort
整数。管理员集群中的插件服务器实现为 NodePort
类型的 Service。您必须为 Service 选择 nodePort
值。
将此字段设置为 nodePort
值。例如:
loadBalancer: manualLB: addonsNodePort: 31405
loadBalancer.f5BigIP
如果将 loadbalancer.kind
设置为 "f5BigIP"
,请填写此部分。否则,请移除此部分。
loadBalancer.f5BigIP.address
字符串。F5 BIG-IP 负载均衡器的地址。例如:
loadBalancer: f5BigIP: address: "203.0.113.2"
loadBalancer.f5BigIP.credentials.fileRef.path
字符串。凭据配置文件的路径,该文件包含 Anthos clusters on VMware 用于连接到 F5 BIG-IP 负载均衡器的帐号的用户名和密码。
用户帐号必须拥有有充分权限设置和管理负载均衡器的用户角色。管理员角色或资源管理员角色足够。
例如:
loadBalancer: f5BigIP: credentials: fileRef: path: ""my-config-folder/admin-creds.yaml"
loadBalancer.f5BigIP.credentialsfileRef.entry
字符串。凭据配置文件中的凭据块名称,该文件包含 F5 BIG-IP 帐号的用户名和密码。例如:
loadBalancer: f5BigIP: credentials: fileRef: entry: "f5-creds"
loadBalancer.f5BigIP.partition
字符串。您为管理员集群创建的 BIG-IP 分区的名称。例如:
loadBalancer: f5BigIP: partition: "my-f5-admin-partition"
loadBalancer.f5BigIP.snatPoolName
字符串。如果您使用的是 SNAT,则它是 SNAT 池的名称。如果您不使用 SNAT,请移除此字段。例如:
loadBalancer: f5BigIP: snatPoolName: "my-snat-pool"
loadBalancer.seesaw
如果将 loadbalancer.kind
设置为 "Seesaw"
,请填写此部分。否则,请移除此部分。
如需了解如何设置 Seesaw 负载均衡器,请参阅 Seesaw 负载均衡器快速入门和使用 Seesaw 进行捆绑式负载均衡。
loadBalancer.seesaw.ipBlockFilePath
字符串。将此项设置为 Seesaw 虚拟机的 IP 地址块文件路径。例如:
loadBalancer: seesaw: ipBlockFilePath: "config-folder/admin-seesaw-ipblock.yaml"
loadBalancer.seesaw.vrid
整数。您的 Seesaw 虚拟机的虚拟路由器标识符。此标识符(您选择的整数)在 VLAN 中必须是唯一的。有效范围为 1-255。例如:
loadBalancer: seesaw: vrid: 125
loadBalancer.seesaw.masterIP
字符串。主 Seesaw 虚拟机上配置的虚拟 IP 地址。例如:
loadBalancer: seesaw: masterIP: 172.16.20.21
loadBalancer.seesaw.cpus
整数。每个 Seesaw 虚拟机的 CPU 数量。例如:
loadBalancer: seesaw: cpus: 8
loadBalancer.seesaw.memoryMB
整数。每个 Seesaw 虚拟机的内存大小(以 MB 为单位)。例如:
loadBalancer: seesaw: memoryMB: 8192
loadBalancer.seesaw.vCenter.networkName
字符串。包含 Seesaw 虚拟机的 vCenter 网络的名称。例如:
loadBalancer: seesaw: vCenter: networkName: "my-seesaw-network"
loadBalancer.seesaw.enableHA
布尔值。如果要创建高可用性 (HA) Seesaw 负载均衡器,请将此值设置为 true
。否则,请将其设置为 false
。高可用性 Seesaw 负载均衡器使用(主备)虚拟机对。例如:
loadBalancer: seesaw: enableHA: true
loadBalancer.seesaw.disableVRRPMAC
布尔值。如果将此值设置为 true
,则 Seesaw 负载均衡器不会使用 MAC 学习进行故障切换,而是会使用免费 ARP。如果将其设置为 false
,则 Seesaw 负载均衡器会使用 MAC 学习。我们建议您将此值设置为 true
。如果您使用的是 vSphere 7 或更高版本,并且具有高可用性 Seesaw 负载均衡器,则必须将此值设置为 true
。例如:
loadBalancer: seesaw: disableVRRPMAC: true
antiAffinityGroups.enabled
布尔值。将此值设为 true
可启用 DRS 规则创建。否则,请将其设置为 false
。例如:
antiAffinityGroups: enabled: true
Anthos clusters on VMware 会自动为您的管理员集群节点创建 VMware 分布式资源调度器 (DRS) 反亲和性规则,使其分布到数据中心内的至少三个物理主机上。
为了使用此功能,您的 vSphere 环境必须满足以下条件:
VMware DRS 已启用。VMware DRS 需要 vSphere Enterprise Plus 许可版本。
您的 vSphere 用户帐号具有
Host.Inventory.Modify cluster
特权。至少有三个物理主机可用。
回想一下,如果您拥有 vSphere Standard 许可,则无法启用 VMware DRS。
如果您未启用 DRS,或没有至少三个主机可供安排 vSphere 虚拟机,请将 antiAffinityGroups.enabled
设置为 false
。
adminMaster
预览版。
如果要为管理员集群的控制层面节点指定 CPU 和内存,请填写此部分。否则,请移除此部分。
adminMaster.cpus
整数。管理员集群的控制层面节点的 CPU 数量。例如:
adminMaster: cpus: 4
adminMaster.memoryMB
整数。管理员集群的控制层面节点的内存大小(以 MB 为单位)。例如:
adminMaster: memoryMB: 16384
addonNode.autoResize.enabled
布尔值。将此值设置为 true
以启用管理员集群中插件节点的自动调整大小。例如:
addonNode: autoResize: enabled: true
connectivity
字符串。可选。指定与 Google Cloud 的连接性。连接性的唯一可能值是“已连接”。例如:
connectivity: "connected"
proxy
如果您的网络由代理服务器提供支持,请填写此部分。否则,请移除此部分。
proxy.url
字符串。代理服务器的 HTTP 地址。即使端口号与该方案的默认端口相同,也要填写此端口号。例如:
proxy: url: "http://my-proxy.example.local:80"
您在此处指定的代理服务器会被 Anthos clusters on VMware 集群使用。此外,除非您在管理员工作站上设置 HTTPS_PROXY
环境变量,否则您的管理员工作站会自动配置为使用同一代理服务器。
如果您指定 proxy.url
,则还必须指定 proxy.noProxy
。
设置管理员集群的代理配置后,除非重新构建集群,否则无法修改或删除该配置。
proxy.noProxy
字符串。不应通过代理服务器的 IP 地址、IP 地址范围、主机名和域名的列表(以英文逗号分隔)。当 Anthos Clusters on VMware 向其中一个地址、主机或网域发送请求时,该请求会直接发送。例如:
proxy: noProxy: "10.151.222.0/24, my-host.example.local,10.151.2.1"
privateRegistry
如果您有一个私有 Docker 注册表,请填写此部分。否则,请移除此部分。 您在 privateregistry
部分中选择的设置不仅反映到管理员集群,还会反映在用户集群中。
privateRegistry.address
字符串。运行您的私有 Docker 注册表的机器的 IP 地址或 FQDN(完全限定域名)。例如:
privateRegistry: address: "203.0.113.10"
privateRegistry: address: "fqdn.example.com"
privateRegistry.credentials.fileRef.path
字符串。凭据配置文件的路径,该文件包含 Anthos clusters on VMware 可用于访问私有 Docker 注册表的帐号的用户名和密码。例如:
privateRegistry: credentials: fileRef: path: "my-config-folder/admin-creds.yaml"
privateRegistry.credentials.fileRef.entry
字符串。凭据配置文件中的凭据块名称,该文件包含您的私有 Docker 注册表帐号的用户名和密码。
privateRegistry: credentials: fileRef: entry: "private-registry-creds"
privateRegistry.caCertPath
字符串。当 Docker 从您的私有注册表中拉取映像时,该注册表必须通过提供证书来证明其身份。注册表的证书由证书授权机构 (CA) 签名。Docker 使用 CA 的证书来验证该注册表的证书。
将此字段设置为 CA 证书的路径。例如:
privateRegistry: caCertPath: "my-cert-folder/registry-ca.crt"
componentAccessServiceAccountKeyPath
字符串。组件访问服务帐号的 JSON 密钥文件的路径。例如:
componentAccessServiceAccountKeyPath: "my-key-folder/access-key.json"
gkeConnect
可选。
本部分包含您在向 Google Cloud 舰队注册您的集群时,需要用到的 Google Cloud 项目和服务帐号的信息。
gkeConnect.projectID
字符串。舰队宿主项目的 ID。例如:
gkeConnect: projectID: "my-connect-project-123"
gkeConnect.registerServiceAccountKeyPath
字符串。连接和注册服务帐号的 JSON 密钥文件的路径。例如:
gkeConnect: registerServiceAccountKeyPath: "my-key-folder/connect-register-key.json"
stackdriver
如果要为集群启用 Cloud Logging 和 Cloud Monitoring,请填写此部分的信息。否则,请将其删除,或者将其注释掉。
stackdriver.projectID
字符串。要在其中查看日志的 Google Cloud 项目的 ID。例如:
stackdriver: projectID: "my-logs-project"
stackdriver.clusterLocation
字符串。您要在其中存储日志的 Google Cloud 地区。建议选择一个靠近您的本地数据中心的地区。例如:
stackdriver: clusterLocation: "us-central1"
stackdriver.enableVPC
布尔值。如果集群的网络由 VPC 控制,请将此字段设置为 true
。这样可以确保所有遥测流都通过 Google 的受限 IP 地址。否则,请将此字段设置为 false
。例如:
stackdriver: enableVPC: false
stackdriver.serviceAccountKeyPath
字符串。您的日志记录和监控服务帐号的 JSON 密钥文件的路径。例如:
stackdriver: serviceAccountKeyPath: "my-key-folder/log-mon-key.json"
stackdriver.disableVsphereResourceMetrics
布尔值。将此属性设置为 true
可停用从 vSphere 收集指标。否则,请将其设置为 false
。例如:
stackdriver: disableVsphereResourceMetrics: true
更新 stackdriver.disableVsphereResourceMetrics
的值
cloudAuditLogging
如果要为集群启用 Cloud Audit Logs,请填写此部分的信息。否则,请移除此部分。
cloudAuditLogging.projectID
字符串。要在其中查看审核日志的 Google Cloud 项目的 ID。例如:
cloudAuditLogging: projectID: "my-audit-project"
cloudAuditLogging.clusterLocation
字符串。您要在其中存储审核日志的 Google Cloud 地区。建议选择一个靠近您的本地数据中心的地区。例如:
cloudAuditLogging: clusterLocation: "us-central1"
cloudAuditLogging.serviceAccountKeyPath
字符串。审核日志记录服务帐号的 JSON 密钥文件的路径。例如:
cloudAuditLogging: serviceAccountKeyPath: "my-key-folder/audit-log-key.json"
clusterBackup.datastore
预览版。
字符串。如果要启用备份管理员集群,请将此设置为您要用于保存集群备份的 vSphere 数据存储区。
例如:
clusterBackup: datastore: "my-datastore"
autoRepair.enabled
布尔值。将此值设置为 true
以启用节点自动修复。否则,请将其设置为 false
。例如:
autoRepair: enabled: true
secretsEncryption
如果要启用始终开启的 Secret 加密,请填写此部分的信息。否则,请移除此部分或将其注释掉。
secretsEncryption.mode
字符串。Secret 加密模式。将此项设置为 "GeneratedKey"
。
secretsEncryption: mode: "GeneratedKey"
secretsEncryption.generatedKey.keyVersion
整数。您选择用于密钥版本号的整数。我们建议 1
。 如果您已包含 secretsEncryption.generatedKey.disabled
,请勿包含此字段。例如:
secretsEncryption: mode: "GeneratedKey" generatedKey: keyVersion: 1
如果要轮替密钥,请将 keyVersion
递增 1,然后运行 gkectl update
secretsEncryption.generatedKey.disabled
布尔值。如需停用始终开启的 Secret 加密,请将此值设为 true
。如果您已包含 secretsEncryption.generatedKey.keyVersion
,请勿包含此字段。例如:
secretsEncryption: mode: "GeneratedKey" generatedKey: disabled: true