本页面介绍了用户集群配置文件中的字段。
生成配置文件模板
如果您使用 gkeadm
创建管理员工作站,则 gkeadm
会为您的用户集群配置文件生成一个模板。此外,gkdadm
还为您填写了一些字段。
如果您未使用 gkeadm
创建管理员工作站,则可以使用 gkectl
为用户集群配置文件生成模板。
如需为用户集群配置文件生成模板,请运行以下命令:
gkectl create-config cluster --config=[OUTPUT_FILENAME]
其中 [OUTPUT_FILENAME] 是您为生成的模板选择的路径。如果省略此标志,则 gkectl
将该文件命名为 user-cluster.yaml
,并将其放在当前目录中。
填写配置文件
在配置文件中,按照以下部分的说明输入字段值。
name
字符串。您为用户集群选择的名称。例如:
name: "my-user-cluster"
gkeOnPremVersion
字符串。用户集群的 GKE On-Prem 版本。例如:
gkeOnPremVersion: 1.4.3-gke.3
vCenter
如果您希望 vCenter 环境的所有方面都与您为管理员集群指定的内容相同,请移除此部分或将其注释掉。
如果您希望 vCenter 环境的某些方面与您为管理员集群指定的内容不同,请填写此部分中的相关字段。您在 vCenter
部分中设置的任何字段都将替换管理员集群配置文件中的相应字段。
vCenter.credentials.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.101
Subject: ... CN = my-user-vc-server.my-domain.example
输出还可能在 Subject Alternative Name
下包含一个或多个 DNS 名称:
X509v3 Subject Alternative Name: DNS:vcenter.my-domain.example
选择 Subject
通用名称或 Subject Alternative Name
下的一个 DNS 名称,以在配置文件中用作 vcenter.credentials.address
的值。例如:
vCenter: credentials: address: "203.0.113.101" ...
vCenter: credentials: address: "my-user-vc-server.my-domain.example" ...
vCenter.credentials.username
字符串。用于访问用户集群的 vCenter 服务器的 vCenter Server 用户帐号。用户帐号应具有 Administrator 角色或同等权限。请参阅 vSphere 要求。
例如:
vCenter: credentials: username: "my-user-account@vsphere.local"
vCenter.credentials.password
字符串。vCenter Server 用户帐号的密码。例如:
vCenter: credentials: password: "#STyZ2T#Ko2o"
vCenter.datastore
字符串。用户集群的 vCenter 数据存储区的名称。例如:
vCenter: datastore: "MY-USER-DATASTORE"
vCenter.resourcePool
字符串。用户集群的 vCenter 资源池的名称。如果您使用的是非默认资源池,请提供您的 vCenter 资源池的名称。
例如:
vCenter: resourcePool: "MY-USER-POOL"
如果您使用的是默认资源池,请提供以下值:
vCenter: resourcePool: "[VCENTER_CLUSTER]/Resources"
其中,[VCENTER_CLUSTER] 是您的 vCenter 集群的名称。
请参阅为独立主机指定根资源池。
vCenter.caCertPath
字符串。当客户端(如 GKE On-Prem)向您的 vCenter 服务器发送请求时,服务器必须通过提供证书或证书软件包来向客户端证明其身份。为了验证证书或软件包,GKE On-Prem 必须具有信任链中的根证书。
将 vCenter.caCertPath
设置为根证书的路径。例如:
vCenter: caCertPath: "/usr/local/google/home/me/certs/user-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
中可找到证书文件。
network
本部分包含有关用户集群网络的信息。
network.ipMode.type
字符串。如果您希望集群节点从 DHCP 服务器获取其 IP 地址,请将此设置为 "dhcp"
。如果您希望集群节点从您提供的列表中选择静态 IP 地址,请将此设置为 "static"
。例如:
network: ipMode: type: "static"
network.ipBlockFilePath
如果将 ipMode.type
设置为 "static"
,请填写此字段。
如果将 ipMode.type
设置为 "dhcp"
,请移除此字段或将其注释掉。
字符串。集群的 hostconfig 文件的路径。例如:
network: ipBlockFilePath: "/my-config-directory/user-hostconfig.yaml"
network.serviceCIDR
和 network.podCiDR
字符串。用户集群必须拥有用于 Service 的 IP 地址范围以及用于 pod 的 IP 地址范围。这些范围由 network.serviceCIDR
和 network.podCIDR
字段指定。这些字段会填充默认值。您也可以将填充值更改为您选择的值。
Service 和 pod 范围不得重叠。此外,Service 和 pod 范围不得与任何集群中节点的 IP 地址重叠。
示例:
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-USER-CLUSTER-NETWORK"
loadBalancer
本部分包含有关用户集群的负载平衡器的信息。
loadBalancer.vips.controlPlaneVIP
您选择为管理员集群的 Kubernetes API 服务器在负载平衡器上配置的 IP 地址。例如:
loadBalancer: vips: controlplaneVIP: "203.0.113.3"
loadBalancer.vips.ingressVIP
loadBalancer: vips: ingressVIP: "203.0.113.4"
loadBalancer.kind
字符串。请将此设置为 "Seesaw"
、"F5BigIP"
或 "ManualLB"
。例如:
loadBalancer: kind: "Seesaw"
loadBalancer.manualLB
如果将 loadbalancer.kind
设置为 "manualLB"
,请填写此部分。否则,请移除此部分或将其注释掉。
loadBalancer.manualLB.ingressHTTPNodePort
整数。管理员集群中的入站服务实现为 NodePort 类型的 Service。该 Service 具有用于 HTTP 的 ServicePort。您必须为 HTTP ServicePort 选择 nodePort
值。
将此字段设置为 nodePort
值。例如:
loadBalancer: manualLB: ingressHTTPNodePort: 32527
loadBalancer.manualLB.ingressHTTPSNodePort
整数。管理员集群中的入站服务实现为 NodePort 类型的 Service。该 Service 具有用于 HTTPS 的 ServicePort。您必须为 HTTPS ServicePort 选择 nodePort
值。
将此字段设置为 nodePort
值。例如:
loadBalancer: manualLB: ingressHTTPSNodePort: 30139
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.credentials.address
字符串。F5 BIG-IP 负载均衡器的地址。例如:
loadBalancer: f5BigIP: credentials: address: "203.0.113.2"
loadBalancer.f5BigIP.credentials.username
字符串。GKE On-Prem 可用于连接到 F5 BIG-IP 负载平衡器的帐号的用户名。例如:
loadBalancer: f5BigIP: credentials: username: "my-admin-f5-name"
loadBalancer.f5BigIP.credentials.password
字符串。GKE On-Prem 可用于连接到 F5 BIG-IP 负载平衡器的密码。例如:
loadBalancer: f5BigIP: credentials: password: "rJDlm^%7aOzw"
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"
,请填写此部分。否则,请移除此部分或将其注释掉。
loadBalancer.seesaw.ipBlockFilePath
字符串。将此值设置为 Seesaw 虚拟机的 hostconfig 文件的路径。例如:
loadbalancer: seesaw: ipBlockFilePath: "admin-seesaw-hostconfig.yaml"
loadBalancer.seesaw.vird
整数。您的 Seesaw 虚拟机或虚拟机对的虚拟路由器标识符。此标识符在 VLAN 中必须具有唯一性。有效范围为 1-255。例如:
loadBalancer: seesaw: vrid: 125
loadBalancer.seesaw.masterIP
字符串。控制层面 Seesaw 虚拟机将通告的所选 VIP 地址。例如:
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 虚拟机的网络的名称。例如:
loadBalancer: seesaw: vCenter: networkName: "my-seesaw-network"
loadBalancer.seesaw.enableHA
布尔值。如果要创建可用性高的 Seesaw 负载均衡器,请将此值设置为 true
。否则,请将其设置为 false
。例如:
loadBalancer:. seesaw: enableHA: true
masterNode
本部分包含有关管理员集群中节点(用作用户集群的控制层面节点)的信息。
masterNode.cpus
整数。用作此用户集群控制层面的各管理员集群节点的 CPU 数。例如:
masterNode: cpus: 8
masterNode.memoryMB
整数。用作此用户集群控制层面的各管理员集群节点的内存大小(以 MB 为单位)。例如:
masterNode: memoryMB: 8192
masterNode.replicas
整数。此用户集群的控制层面节点数量。将此字段设置为 1 或 3。例如:
masterNode: replicas: 3
nodePools
对象数组,其中每个对象都描述一个节点池。
nodePools[i].name
字符串。您为节点池选择的名称。例如:
nodePools: - name: "my-node-pool"
noodePools[i].labels
映射。要应用于池中每个节点的标签。例如:
nodePools: - name: "my-node-pool" labels: environment: "production" tier: "cache"
nodePools[i].taints
对象数组,其中每个对象都描述了一个污点。例如:
nodePools: - name: "my-node-pool" taints: - key: "staging" value: "true" effect: "NoSchedule"
nodePools[i].cpus
整数。池中每个节点的 CPU 数量。例如:
nodePools" - name: "my-node-pool" cpus: 8
nodePools[i].memoryMB
整数。池中每个节点的内存大小(以 MB 为单位)。例如:
nodePools" - name: "my-node-pool" memoryMB: 8192
nodePools[i].replicas
整数。池中的节点数。例如:
nodePools: - name: "my-node-pool" replicas: 5
nodePools[i].vsphere.datastore
字符串。将在其中创建池中每个节点的 vCenter 数据存储区的名称。例如:
nodePools: - name: "my-node-pool" vsphere: datastore: "my-datastore"
antiAffinityGroups.enabled
布尔值。将此值设为 true
可启用 DRS 规则创建。否则,请将其设置为 false
。例如:
antiAffinityGroups: enabled: true
authentication
本部分包含有关如何对集群用户进行身份验证和授权的信息。
authentication.oidc
如果要使用 OpenID Connect (OIDC) 管理对此集群的访问权限,请填写此部分。否则,请移除此部分或将其注释掉。
authentication.oidc.issuerURL
字符串。OpenID 提供方的网址。客户端应用(如 gcloud CLI 和 Google Cloud 控制台)会向此网址发送授权请求。Kubernetes API 服务器使用此网址来发现用于验证令牌的公钥。必须使用 HTTPS。例如:
authentication: oidc: issuerURL: "https://example.com/adfs"
authentication.oidc.kubectlRedirectURL
字符串。gcloud CLI 的重定向网址。例如:
authentication: oidc: kubectlRedirectURL: "https://localhost:1025/callback"
authentication.oidc.clientID
字符串。向 OpenID 提供方发出身份验证请求的客户端应用的 ID。gcloud
CLI 和 Google Cloud 控制台都使用此 ID。例如:
authentication: oidc: clientID: "my-big-hex-string"
authentication.oidc.clientSecret
字符串。客户端应用的密钥。gcloud CLI 和 Google Cloud 控制台都使用此密钥。例如:
authentication: oidc: clientSecret: "N3i&JlLZoD!W"
authentication.oidc.username
字符串。要用作用户名的 JWT 声明。默认值为 sub
,该值应为最终用户的唯一标识符。您可以选择其他声明,例如 email
或 name
,具体取决于 OpenID 提供方。不过,email
以外的声明会以颁发者网址作为前缀,以防止命名与其他插件冲突。例如:
authentication: oidc: username: "sub"
authentication.oidc.usernamePrefix
字符串。附加到用户名声明前面的前缀,以防止与现有名称冲突。如果您未提供此字段,并且 username
是 email
以外的值,则前缀默认为 issuerurl#
。您可以使用值 -
停用所有前缀。例如:
authentication: oidc: usernamePrefix: "my-prefix"
authentication.oidc.group
字符串。提供方将用于返回安全群组的 JWT 声明。例如:
authentication: oidc: group: "sec-groups"
authentication.oidc.groupPrefix
字符串。附加到群组声明前面的前缀,以防止与现有名称冲突。例如,给定一个组 foobar
和一个前缀 gid-
,则格式为 gid-foobar
。默认情况下,此值为空,且无前缀。例如:
authentication: oidc: groupPrefix: "gid-"
authentication.oidc.scopes
字符串。要发送到 OpenID 提供方的其他范围列表(以英文逗号分隔)。例如:
authentication: oidc: scopes: "offline-access"
对于 Microsoft Azure 或 OKta 的身份验证,请将此值设置为 offline_access
。
authentication.oidc.extraParams
字符串。要发送到 OpenID 提供方的其他键值对参数列表(以英文逗号分隔)。
如需查看身份验证参数的列表,请参阅身份验证 URI 参数。
如果您要向群组授权,请将此字段设置为
"resource=token-groups-claim"
。如果您的授权服务器提示是否同意,请将此字段设置为
"prompt=consent"
例如:
authentication: oidc: extraparams: "prompt=consent"
authentication.oidc.deployCloudConsoleProxy
字符串。指定是否在集群中部署反向代理,以允许 Google Cloud Console 访问本地 OIDC 提供方来验证用户身份。必须是字符串:"true"
或 "false"
。如果无法通过公共互联网访问您的身份提供方,并且您希望使用 Google Cloud Console 进行身份验证,则必须将此字段设置为 "true"
。如果留空,则此字段默认为 "false"
。
authentication.oidc.caPath
字符串。证书授权机构 (CA)(负责颁发身份提供方 Web 证书)颁发的证书路径。此值可能不是必需的。例如,如果您的身份提供方证书是由知名公共 CA 颁发的,那么您无需在此提供值。但是,如果 deployCloudConsoleProxy
为 "true"
,则您必须提供此值,即使证书是由知名的公共 CA 颁发的,也是如此。
例如:
authentication: oidc: caPath: "my-cert-folder/provider-root-cert.pem"
authentication.sni
如果要为集群的 Kubernetes API 服务器提供其他服务证书,请填写此部分。否则,请移除此部分或将其注释掉。
authentication.sni.certPath
字符串。Kubernetes API 服务器服务证书的路径。例如:
authentication: sni: certPath: "my-cert-folder/example.com.crt"
authentication.sni.keyPath
字符串。证书私钥文件的路径。例如:
authentication: sni: keyPath: "my-cert-folder/example.com.key"
stackdriver
本部分包含您要用于存储日志和指标的 Google Cloud 项目和服务帐号的相关信息。
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"
cloudAuditLogging
如果要将集群的 Kubernetes API 服务器中的审核日志与 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"
gkeConnect
本部分包含您要用于将集群连接到 Google Cloud 的 Google Cloud 项目和服务帐号的相关信息。
gkeConnect.projectID
字符串。您要用于将集群连接到 Google Cloud 的 Google Cloud 项目的 ID。例如:
gkeConnect: projectID: "my-connect-project-123"
gkeConnect.registerServiceAccountKeyPath
字符串。连接和注册服务帐号的 JSON 密钥文件的路径。例如:
gkeConnect: registerServiceAccountKeyPath: "my-key-folder/connect-register-key.json"
gkeConnect.agentServiceAccountKeyPath
字符串。连接和代理服务帐号的 JSON 密钥文件的路径。 例如:
gkeConnect: agentServiceAccountKeyPath: "my-key-folder/connect-agent-key.json"
usageMetering
如果要为集群启用用量计量功能,请填写此部分。否则,请移除此部分或将其注释掉。
usageMetering.bigQueryProjectID
字符串。您要在其中存储用量计量数据的 Google Cloud 项目的 ID。例如:
usageMetering: bigQueryProjectID: "my-bq-project"
usageMetering.bigQueryDatasetID
字符串。您要在其中存储用量计量数据的 BigQuery 数据集的 ID。例如:
usageMetering: bigQueryDatasetID: "my-bq-dataset"
usageMetering.bigQueryServiceAccountKeyPath
字符串。BigQuery 服务帐号的 JSON 密钥文件的路径。例如:
usageMetering: bigQueryServiceAccountKeyPath: "my-key-folder/bq-key.json"
usageMetering.enableConsumptionMetering
布尔值。如果要启用基于消耗量的计量功能,请将此值设置为 true
。否则,请将其设置为 false。例如:
usageMetering: enableConsumptionMetering: true
cloudRun.enabled
布尔值。如果要启用 Cloud Run,请将此值设置为 true
。否则,请将其设置为 false
。例如:
cloudRun: enabled: true