集群资源
需要
可更改
authentication
本部分包含使用 OpenID Connect (OIDC) 所需的设置。OIDC 允许您使用现有的身份提供方在 GKE on Bare Metal 集群中管理用户和群组身份验证。
集群资源
—
—
authentication.oidc.certificateAuthorityData
可选。OIDC 提供商的 base64
编码的 PEM 编码证书 。如需创建该字符串,请对证书(包括标头)进行 base64
编码。将生成的字符串作为单独的一行添加到 certificateAuthorityData
中。
例如(封装以适应表的示例):
certificateAuthorityData :
LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tC
...k1JSUN2RENDQWFT==
集群资源
可选
不可变
authentication.oidc.clientID
可选。字符串。向 OpenID 提供商发出身份验证请求的客户端应用的 ID。
集群资源
可选
不可变
authentication.oidc.clientSecret
可选。字符串。OIDC 客户端应用和 OIDC 提供商之间的共享密钥令牌。
集群资源
可选
不可变
authentication.oidc.deployCloudConsoleProxy
可选。布尔值 (true
|false
)。指定集群中是否部署了反向代理,以将 Google Cloud 控制台连接到无法通过互联网公开访问的本地身份提供方。如果无法通过公共互联网访问您的身份提供商,请将此字段设置为 true
,以进行 Google Cloud 控制台身份验证。此值默认设置为 false
。
集群资源
可选
不可变
可选。英文逗号分隔列表。要发送到 OpenID 提供商的其他键值对参数。
集群资源
可选
不可变
authentication.oidc.groupPrefix
可选。字符串。附加到群组声明的前缀,以防止与现有名称冲突。例如,给定一个群组 dev
和一个前缀 oidc:
,则格式为 oidc:dev
。
集群资源
可选
不可变
authentication.oidc.group
可选。字符串。
提供方用于返回安全群组的 JWT 声明。
集群资源
可选
不可变
authentication.oidc.issuerURL
可选。网址字符串。用于向 OpenID 发送授权请求的网址,例如 https://example.com/adfs
。Kubernetes API 服务器使用此网址来发现用于验证令牌的公钥。网址必须使用 HTTPS。
集群资源
可选
不可变
authentication.oidc.kubectlRedirectURL
可选。网址字符串。kubectl
用于授权的重定向网址。启用 OIDC 时,必须指定 kubectlRedirectURL
值。
集群资源
可选
不可变
authentication.oidc.proxy
可选。网址字符串。将集群连接到您的 OIDC 提供商时使用的代理服务器(如果适用)。该值应包含主机名/IP 地址,并可根据需要选择包含端口、用户名和密码。例如:http://user:password@10.10.10.10:8888
。
集群资源
可选
不可变
authentication.oidc.scopes
可选。英文逗号分隔列表。要发送到 OpenID 提供商的其他范围。Microsoft Azure 和 Okta 需要 offline_access
范围。
集群资源
可选
不可变
authentication.oidc.usernamePrefix
可选。字符串。附加到用户名声明前面的前缀。
集群资源
可选
不可变
authentication.oidc.username
可选。字符串。
用作用户名的 JWT 声明。如果未指定,则默认为 sub
。
集群资源
可选
不可变
bypassPreflightCheck
可选。布尔值 (true
|false
)。如果设置为 true
,则在将资源应用于现有集群时会忽略内部预检检查。默认为 false
。
可变性 :可以使用 bmctl update
命令为现有集群修改此值。
集群资源
可选
可更改
clusterNetwork
本部分包含集群的网络设置。
集群资源
需要
可更改
clusterNetwork.advancedNetworking
布尔值。将此字段设置为 true
以启用高级网络功能,例如使用 BGP 的捆绑式负载均衡或出站 NAT 网关。这两项功能都使用适用于 GDC 的网络网关。Network Gateway for GDC 是在 GKE Enterprise 和 Google Kubernetes Engine (GKE) 中启用高级网络功能的关键组件。Network Gateway for GDC 的主要优势之一是,它可以从您在 NetworkGatewayGroup
自定义资源中指定的一组地址中动态分配浮动 IP 地址。
如需详细了解适用于 GDC 的网络网关和相关的高级网络功能,请参阅配置出站 NAT 网关 和配置使用 BGP 的捆绑式负载平衡器 。
集群资源
可选
不可变
clusterNetwork.bundledIngress
布尔值。将此字段设置为 false
可停用与 GKE on Bare Metal 捆绑的 Ingress 功能。集群的捆绑 Ingress 功能仅支持入站流量。如果您与 Istio 或 Anthos Service Mesh 集成,以获得功能全面的服务网格的额外优势,我们建议您停用捆绑式 Ingress。此字段默认设置为 true
。生成的集群配置文件中没有此字段。您只能为 1.13.0 版及更高版本的集群停用捆绑式 Ingress。
如需详细了解捆绑式 Ingress 功能,请参阅创建 Service 和 Ingress 。
集群资源
可选
可更改
clusterNetwork.flatIPv4
布尔值。将此字段设置成 true
以启用平面模式集群网络模型。在平面模式下,每个 pod 都有专属的唯一 IP 地址。Pod 可以直接相互通信,而无需中间网关或网络地址转换 (NAT)。flatIPv4
的默认值为 false
。您只能在创建集群期间启用平面模式。为集群启用平面模式后,无法将其停用。
集群资源
可选
不可变
clusterNetwork.multipleNetworkInterfaces
可选。布尔值。将此字段设置为 true
可为 pod 启用多个网络接口。
如需详细了解如何设置和使用多个网络接口,请参阅为 Pod 配置多个网络接口 文档。
集群资源
可选
不可变
clusterNetwork.pods.cidrBlocks
必需。采用 CIDR 地址块格式的 IPv4 地址范围。pods 指定从哪个 IP 范围分配 pod 网络。
Pod CIDR 范围下限 :/18
的掩码值,对应于 14 位(16,384 个 IP 地址)的大小。
Pod CIDR 范围上限 :/8
的掩码值,对应于 24 位(16,777,216 个 IP 地址)的大小。
例如:
pods :
cidrBlocks :
- 192.168.0.0/16
集群资源
必填
不可变
clusterNetwork.sriovOperator
可选。布尔值。将此字段设置为 true
可为您的集群启用 SR-IOV 网络。
如需详细了解如何配置和使用 SR-IOV 网络,请参阅设置 SR-IOV 网络 文档。
集群资源
可选
可更改
clusterNetwork.services.cidrBlocks
必需。采用 CIDR 地址块格式的 IPv4 地址范围。指定从哪个 IP 地址范围分配服务虚拟 IP (VIP) 地址。此范围不得与可从您的网络访问的任何子网重叠。如需详细了解专用互联网的地址分配,请参阅 RFC 1918 。
从 GKE on Bare Metal 版本 1.15.0 开始,此字段是可变的。如果需要,您可以在创建集群后增加为服务分配的 IP 地址数量。如需了解详情,请参阅扩大服务网络范围 。
您只能扩大 IPv4 服务 CIDR 的范围,网络范围无法缩小,这意味着无法增大掩码(“/”之后的值)。
Service CIDR 范围下限 :/24
的掩码值,对应于 8 位(256 个地址)的大小。
Service CIDR 范围上限 :/12
的掩码值,对应于 20 位(1,048,576 个 IP 地址)的大小。
例如:
services :
cidrBlocks :
- 10.96.0.0/12
集群资源
需要
可更改
clusterOperations
本部分包含 Cloud Logging 和 Cloud Monitoring 的信息。
集群资源
需要
可更改
clusterOperations.enableApplication
此字段不再使用,并且无效。Stackdriver 自定义资源中启用了应用日志记录和监控功能。如需详细了解如何启用应用日志记录和监控功能,请参阅启用应用日志记录和监控功能 。
集群资源
无操作发生
可更改
clusterOperations.disableCloudAuditLogging
布尔值。Cloud Audit Logs 适用于调查可疑的 API 请求以及收集统计信息。Cloud Audit Logs 默认处于启用状态 (disableCloudAuditLogging: false
)。设置为 true
可停用 Cloud Audit Logs。
如需了解详情,请参阅使用审核日志记录 。
集群资源
可选
可更改
clusterOperations.location
字符串。您要存储 Logging 日志和 Monitoring 指标的 Google Cloud 区域。建议选择一个靠近您的本地数据中心的区域。如需了解详情,请参阅全球位置 。
例如:
location : us-central1
集群资源
必填
不可变
clusterOperations.projectID
字符串。要在其中查看日志和指标的 Google Cloud 项目的 ID。
集群资源
必填
不可变
controlPlane
本部分包含有关控制平面及其组件的信息。
集群资源
需要
可更改
controlPlane.nodePoolSpec
本部分指定控制平面及其组件所使用的节点池的 IP 地址。控制平面节点池规范(例如负载均衡器节点池规范 )是特殊的。此规范可声明并控制关键集群资源。此资源的规范来源是集群配置文件中的这个部分。请勿直接修改顶级控制平面节点池资源。请改为修改集群配置文件中的相关部分。
集群资源
需要
可更改
controlPlane.nodePoolSpec.nodes
必需。IP 地址数组。通常,此数组要么是单个机器的 IP 地址,要么是高可用性 (HA) 部署中三个机器的 IP 地址。
例如:
controlPlane :
nodePoolSpec :
nodes :
- address : 192.168.1.212
- address : 192.168.1.213
- address : 192.168.1.214
每次更新或升级集群时都可以更改此字段。
集群资源
需要
可更改
controlPlane.nodePoolSpec.kubeletConfig
可选。本部分包含用于在控制平面节点池中的所有节点上配置 kubelet 的字段。
例如:
controlPlane :
nodePoolSpec :
kubeletConfig :
registryBurst : 15
registryPullQPS : 10
serializeImagePulls : false
集群资源
可选
可更改
controlPlane.nodePoolSpec.kubeletConfig.registryBurst
可选。整数(非负)。指定可以添加到处理队列以处理请求高峰的映像拉取请求的最大数量。拉取开始后,就可以向队列添加新请求。默认值为 10。此字段对应于 registryBurst
kubelet 配置 (v1beta1) 选项。
registryPullQPS
的值优先于此设置。例如,使用默认设置时,最多允许 10 个并发查询,但必须以每秒 5 次查询的默认速率处理。此爆发行为仅在 registryPullQPS
大于 0
时使用。
创建、更新或升级集群时可以设置此字段,并且此设置在集群升级后持续有效。如需了解详情,请参阅配置 kubelet 映像拉取设置 。
集群资源
可选
可更改
controlPlane.nodePoolSpec.kubeletConfig.registryPullQPS
可选。整数(非负)。指定 Container Registry 映像拉取查询的处理速率,单位为每秒查询次数 (QPS)。当 registryPullQPS
设置为大于 0 的值时,查询速率会限制为该值(单位为每秒查询次数)。如果 registryPullQPS
设置为 0
,则对查询速率没有限制。默认值为 5
。
此字段对应于 registryPullQPS
kubelet 配置 (v1beta1) 选项。
创建、更新或升级集群时可以设置此字段,并且此设置在集群升级后持续有效。如需了解详情,请参阅配置 kubelet 映像拉取设置 。
集群资源
可选
可更改
controlPlane.nodePoolSpec.kubeletConfig.serializeImagePulls
可选。布尔值 (true
|false
)。此字段指定 Container Registry 拉取是并行处理还是逐个处理。默认值为 true
,指定一次处理一个拉取。设置为 false
时,kubelet 会并行拉取映像。此字段对应于 serializeImagePulls
kubelet 配置 (v1beta1) 选项。
创建、更新或升级集群时可以设置此字段,并且此设置在集群升级后持续有效。如需了解详情,请参阅配置 kubelet 映像拉取设置 。
集群资源
可选
可更改
gkeConnect
本部分包含您要用于将集群连接到 Google Cloud 的 Google Cloud 项目的相关信息。
集群资源
必填
不可更改
gkeConnect.projectID
必需:字符串。您要用于将集群连接到 Google Cloud 的 Google Cloud 项目的 ID。这也称为舰队宿主项目 。
例如:
spec :
...
gkeConnect :
projectID : "my-connect-project-123"
无法为现有集群修改此值。
集群资源
必填
不可更改
gkeOnPremAPI
在 1.16 及更高版本中,如果您的 Google Cloud 项目中启用了 GKE On-Prem API,则项目中的所有集群都会自动在 clusterOperations.location
中配置的区域中注册到 GKE On-Prem API 。
如果要在 GKE On-Prem API 中注册项目中的所有集群,请务必执行准备工作 中的步骤,在项目中激活并使用 GKE On-Prem API。
如果您不想在 GKE On-Prem API 中注册集群,请添加此部分并将 gkeOnPremAPI.enabled
设置为 false
。如果您不想在项目中注册任何集群,请在项目中停用 gkeonprem.googleapis.com
(GKE On-Prem API 的服务名称)。如需查看相关说明,请参阅停用服务 。
通过在 GKE On-Prem API 中注册管理员集群或用户集群,您可以使用标准工具(Google Cloud 控制台、Google Cloud CLI 或
Terraform )查看集群详情并管理集群生命周期。例如,您可以运行 gcloud CLI 命令来获取有关集群的信息 。
如果您将 gkeOnPremAPI.enabled
设置为 true
,则在使用 bmctl
创建或更新集群之前,请务必执行准备工作 中的步骤,以启用并初始化 GKE On-Prem API。
添加此部分并创建或更新集群后,如果后续您移除此部分并更新集群,更新将失败。
如果您希望使用标准工具而不是 bmctl
来创建集群,请参阅以下内容:
当您使用标准工具创建集群时,该集群会自动注册到 GKE On-Prem API。
集群资源
可选
gkeOnPremAPI.enabled
默认情况下,如果您的项目中启用了 GKE On-Prem API,则集群会在 GKE On-Prem API 中注册。如果您不想注册集群,请设置为 false
。
在 GKE On-Prem API 中注册集群后,如果您需要取消注册集群,请进行以下更改,然后更新集群:
gkeOnPremAPI :
enabled : false
集群资源
需要
可更改
gkeOnPremAPI.location
运行 GKE On-Prem API 并存储集群元数据的 Google Cloud 区域。选择一个支持的区域 。如果 gkeOnPremAPI.enabled
为 true
,则必须是非空字符串。如果 gkeOnPremAPI.enabled
为 false
,请勿添加此字段。
如果配置文件中未包含此部分,则此字段设置为 clusterOperations.location
。
集群资源
可选
不可更改
kubevirt.useEmulation
(已弃用)
已弃用。 从 1.11.2 版开始,您可以通过仅更新 VMRuntime 自定义资源在 GDC 上启用或停用虚拟机运行时。布尔值。确定是否使用软件模拟来运行虚拟机。如果节点支持硬件虚拟化,请将 useEmulation
设置为 false
以获得更好的性能。如果不支持硬件虚拟化或您不确定,请将其设置为 true
。
此字段不再使用。useEmulation
设置和其他虚拟机设置在 VMRuntime
自定义资源中配置。如需了解详情,请参阅在 GDC 上启用虚拟机运行时 。
集群资源
可选
可更改
loadBalancer
本部分包含集群负载均衡设置。
集群资源
需要
可更改
loadBalancer.addressPools
对象。集群负载均衡器池的名称和 IP 地址数组。地址池配置仅对非管理员集群中的 bundled
负载均衡模式有效。您可以随时添加新的地址池,但无法移除现有的地址池。
只能修改现有地址池以更改 avoidBuggyIPs
和 manualAssign
字段。
集群资源
可选
不可变
loadBalancer.addressPools.addresses
IP 地址范围数组。为数据平面负载均衡器指定不重叠的 IP 范围列表。所有地址都必须与负载均衡器节点位于同一子网中。
例如:
addressPools :
- name : pool1
addresses :
- 192.168.1.0-192.168.1.4
- 192.168.1.240/28
集群资源
可选
不可变
loadBalancer.addressPools.name
字符串。您为集群负载均衡器池选择的名称。
集群资源
必填
不可变
loadBalancer.addressPools.avoidBuggyIPs
可选。布尔值 (true
| false
)。如果为 true
,则该池会忽略以 .0
和 .255
结尾的 IP 地址。 某些网络硬件会丢弃流向这些特殊地址的流量。您可以省略此字段,其默认值为 false
。
集群资源
可选
可更改
loadBalancer.addressPools.manualAssign
可选。布尔值 (true
| false
)。如果为 true
,则此池中的地址不会自动分配给 Kubernetes Service。如果为 true
,则只有在 Service 明确指定时,才使用此池中的 IP 地址。您可以省略此字段,其默认值为 false
。
集群资源
可选
可更改
loadBalancer.mode
必需。字符串。指定负载均衡模式。在 bundled
模式下,GKE on Bare Metal 会在集群创建期间在负载均衡器节点上安装负载均衡器。在 manual
模式下,集群依赖于手动配置的外部负载均衡器。如需了解详情,请参阅负载均衡器概览 。
允许使用的值:bundled
| manual
集群资源
必填
不可变
loadBalancer.type
可选。字符串。指定使用的捆绑式负载均衡类型(第 2 层或边界网关协议 [BGP])。如果您使用的是标准捆绑式负载均衡 ,请将 type
设置为 layer2
。如果您使用的是使用 BGP 的捆绑式负载均衡 ,请将 type
设置为 bgp
。如果未设置 type
,则默认为 layer2
。
允许使用的值:layer2
| bgp
集群资源
可选
不可变
loadBalancer.nodePoolSpec
可选。使用此部分配置负载均衡器节点池。您指定的节点是 Kubernetes 集群的一部分,并运行常规工作负载和负载均衡器。如果您未指定节点池,则控制平面节点用于进行负载均衡。本部分仅在负载均衡模式设置为 bundled
时适用。
重要提示 :如果您在创建集群时未指定 loadBalancer.nodePoolSpec
,则以后无法添加 nodePoolSpec
。对于配置了 loadBalancer.nodePoolSpec
的集群,您可以随时更新 nodePoolSpec
。
集群资源
可选
可更改
loadBalancer.nodePoolSpec.nodes
本部分包含负载均衡器节点池中节点的 IP 地址数组。
集群资源
可选
可更改
loadBalancer.nodePoolSpec.nodes.address
可选。字符串(IPv4 地址)。节点的 IP 地址。
集群资源
可选
可更改
loadBalancer.nodePoolSpec.kubeletConfig
可选。本部分包含用于在控制平面节点池中的所有节点上配置 kubelet 的字段。
例如:
loadBalancer :
nodePoolSpec :
kubeletConfig :
registryBurst : 15
registryPullQPS : 10
serializeImagePulls : false
集群资源
可选
可更改
loadBalancer.nodePoolSpec.kubeletConfig.registryBurst
可选。整数(非负)。指定可以添加到处理队列以处理请求高峰的映像拉取请求的最大数量。拉取开始后,就可以向队列添加新请求。默认值为 10。此字段对应于 registryBurst
kubelet 配置 (v1beta1) 选项。
registryPullQPS
的值优先于此设置。例如,使用默认设置时,最多允许 10 个并发查询,但必须以每秒 5 次查询的默认速率处理。此爆发行为仅在 registryPullQPS
大于 0
时使用。
创建、更新或升级集群时可以设置此字段,并且此设置在集群升级后持续有效。如需了解详情,请参阅配置 kubelet 映像拉取设置 。
集群资源
可选
可更改
loadBalancer.nodePoolSpec.kubeletConfig.registryPullQPS
可选。整数(非负)。指定 Container Registry 映像拉取查询的处理速率,单位为每秒查询次数 (QPS)。当 registryPullQPS
设置为大于 0 的值时,查询速率会限制为该值(单位为每秒查询次数)。如果 registryPullQPS
设置为 0
,则对查询速率没有限制。默认值为 5
。
此字段对应于 registryPullQPS
kubelet 配置 (v1beta1) 选项。
创建、更新或升级集群时可以设置此字段,并且此设置在集群升级后持续有效。如需了解详情,请参阅配置 kubelet 映像拉取设置 。
集群资源
可选
可更改
loadBalancer.nodePoolSpec.kubeletConfig.serializeImagePulls
可选。布尔值 (true
|false
)。此字段指定 Container Registry 拉取是并行处理还是逐个处理。默认值为 true
,指定一次处理一个拉取。设置为 false
时,kubelet 会并行拉取映像。此字段对应于 serializeImagePulls
kubelet 配置 (v1beta1) 选项。
创建、更新或升级集群时可以设置此字段,并且此设置在集群升级后持续有效。如需了解详情,请参阅配置 kubelet 映像拉取设置 。
集群资源
可选
可更改
loadBalancer.ports.controlPlaneLBPort
数字。用于发送到 Kubernetes 控制平面(Kubernetes API 服务器)的流量的目标端口。
集群资源
必填
不可变
集群资源
必填
不可变
loadBalancer.vips.ingressVIP
可选。字符串(IPv4 地址)。您已选择在负载均衡器上为入站流量配置的 IP 地址。
集群资源
可选
不可变
loadBalancer.localASN
可选。字符串。指定正在创建的集群的自治系统编号 (ASN)。设置使用边界网关协议 (BGP) 的捆绑式负载均衡解决方案时,将使用此字段。 如需了解详情,请参阅配置使用 BGP 的捆绑式负载均衡器 。
集群资源
可选
可更改
loadBalancer.bgpPeers
可选。对象(映射列表)。本部分指定本地网络中(集群外部)的一个或多个边界网关协议 (BGP) 对等方。在设置使用 BGP 的捆绑式负载均衡解决方案的控制平面负载均衡部分时,您可以指定 BGP 对等方。每个对等方都通过映射指定,此映射包含 IP 地址、自治系统编号 (ASN) 以及控制平面节点的一个或多个 IP 地址的列表(可选)。创建集群后,无法更新控制平面负载均衡的 BGP 对等互连配置。
例如:
loadBalancer :
mode : bundled
type : bgp
localASN : 65001
bgpPeers :
- ip : 10.0.1.254
asn : 65002
controlPlaneNodes :
- 10.0.1.10
- 10.0.1.11
- ip : 10.0.2.254
asn : 65002
controlPlaneNodes :
- 10.0.2.10
如需了解详情,请参阅配置使用 BGP 的捆绑式负载均衡器 。
集群资源
可选
可更改
loadBalancer.bgpPeers.ip
可选。字符串(IPv4 地址)。本地网络中的外部对等互连设备的 IP 地址。如需了解详情,请参阅配置使用 BGP 的捆绑式负载均衡器 。
集群资源
可选
可更改
loadBalancer.bgpPeers.asn
可选。字符串。外部对等设备所属网络的自治系统编号 (ASN)。在设置使用 BGP 的捆绑式负载均衡解决方案时,为设置用于进行控制平面负载均衡的每个 BGP 对等方指定 ASN。 如需了解详情,请参阅配置使用 BGP 的捆绑式负载均衡器 。
集群资源
可选
可更改
loadBalancer.bgpPeers.controlPlaneNodes
可选。IP (IPv4) 地址的数组。当您设置使用 BGP 的捆绑式负载均衡解决方案时,连接到外部 BGP 对等方的控制平面节点的一个或多个 IP 地址。如果您不指定任何控制平面节点,则所有控制平面节点都将连接到外部对等方。如果指定一个或多个 IP 地址,则只有指定的节点会参与对等互连会话。如需了解详情,请参阅配置使用 BGP 的捆绑式负载均衡器 。
集群资源
可选
可更改
maintenanceBlocks.cidrBlocks
可选。单个 IPv4 地址或 IPv4 地址范围。指定要置于维护模式的节点机器的 IP 地址。如需了解详情,请参阅将节点置于维护模式 。
例如:
maintenanceBlocks :
cidrBlocks :
- 192.168.1.200 # Single machine
- 192.168.1.100-192.168.1.109 # Ten machines
集群资源
可选
可更改
nodeAccess.loginUser
可选。字符串。指定要用于对集群中的节点机器进行无密码 SUDO 功能访问的非根用户名。您的 SSH 密钥 sshPrivateKeyPath
必须可用于指定用户。集群创建和更新操作会检查是否可以通过指定的用户和 SSH 密钥访问节点机器。
集群资源
可选
可更改
osEnvironmentConfig.addPackageRepo
可选。布尔值 (true
| false
)。指定是否使用自己的软件包代码库服务器,而不是默认的 Docker apt
代码库。如需使用您自己的软件包代码库,请将 addPackageRepo
设置为 false
。借助此功能,您无需向部署中的每个裸机机器添加软件包代码库。如需了解详情,请参阅使用私有软件包代码库服务器 。
集群资源
可选
不可更改
nodeConfig
本部分包含集群节点配置的设置。
集群资源
可选
可变(仅限升级)
nodeConfig.containerRuntime
(已弃用)
已弃用。从 1.13.0 版开始,GKE on Bare Metal 仅支持 containerd
作为容器运行时。containerRuntime
字段已弃用,并且已从生成的集群配置文件中移除。对于 GKE on Bare Metal 1.13.0 版及更高版本,如果集群配置文件包含此字段,则值必须为 containerd
。
集群资源
可选
可变(仅限升级)
nodeConfig.podDensity
本部分指定 pod 密度配置。
集群资源
可选
不可变
nodeConfig.podDensity.maxPodsPerNode
可选。整数。指定可在单个节点上运行的最大 pod 数。对于自行管理的集群,maxPodsPerNode
的允许值为 32
–250
(针对高可用性 [HA] 集群)和 64
-250
(针对非 HA 集群)。对于用户集群,maxPodsPerNode
的允许值为 32
–250
。如果未指定,则默认值为 110
。创建集群后,无法更新此值。
Kubernetes 会为每个节点分配一个无类别域间路由 (CIDR) 地址块 ,以便每个 pod 都可以有一个唯一的 IP 地址。CIDR 地址块的大小对应于每个节点的最大 pod 数。如需详细了解如何设置每个节点的最大 pod 数,请参阅 pod 网络 。
集群资源
可选
不可变
nodePoolUpgradeStrategy
可选。本部分包含用于为集群中的工作器节点池配置升级策略的设置。如需了解详情,请参阅并行升级 。
集群资源
可选
可更改
nodePoolUpgradeStrategy.concurrentNodePools
可选。布尔值(0
或 1
)。默认值:1
。此字段指定是否同时升级集群的所有工作器节点池。默认情况下 (1
),按顺序逐个升级。如果将 concurrentNodePools
设置为 0
,则同时升级集群中的每个工作器节点池。
apiVersion : baremetal.cluster.gke.io/v1
kind : Cluster
metadata :
name : cluster1
namespace : cluster-cluster1
spec :
...
nodePoolUpgradeStrategy :
concurrentNodePools : 0
...
如需了解详情,请参阅节点池升级策略 。
每个工作器池中的节点都会根据其对应的 NodePool 规范中的升级策略 进行升级。
集群资源
可选
可更改
periodicHealthCheck
本部分包含定期健康检查的配置信息。在集群资源中,唯一可用于定期健康检查的设置是 enable
字段。如需了解详情,请参阅定期健康检查 。
集群资源
可选
可更改
periodicHealthCheck.enable
可选。布尔值 (true
|false
)。为集群启用或停用定期健康检查。默认情况下,系统会为所有集群启用定期健康检查。您可以将 periodicHealthCheck.enable
字段设置为 false
,以便为集群停用定期健康检查。如需了解详情,请参阅停用定期健康检查
集群资源
可选
可更改
profile
可选。字符串。对于独立集群,将 profile
设置为 edge
时,它会最大限度地减少集群的资源消耗量。边缘配置文件仅适用于独立集群。边缘配置文件减少了系统资源要求,建议用于具有严格资源限制的边缘设备。如需了解与边缘配置文件相关的硬件要求,请参阅使用边缘配置文件的独立集群的资源要求 。
集群资源
可选
不可变
proxy
如果您的网络由代理服务器提供支持,请填写此部分。
否则,请移除此部分。
集群资源
可选
可更改
proxy.noProxy
字符串。不应通过代理服务器的 IP 地址、IP 地址范围、主机名和域名的列表(以英文逗号分隔)。当 GKE on Bare Metal 向其中一个地址、主机或网域发送请求时,该请求会直接发送。
集群资源
可选
不可变
proxy.url
字符串。代理服务器的 HTTP 地址。即使端口号与该方案的默认端口相同,也要填写此端口号。
例如:
proxy :
url : "http://my-proxy.example.local:80"
noProxy : "10.151.222.0/24, my-host.example.local,10.151.2.1"
集群资源
可选
不可变
clusterSecurity
本部分指定与集群安全相关的设置。
集群资源
可选
可更改
clusterSecurity.enableSeccomp
(预览版 )
可选。布尔值 (true
|false
)。启用或停用集群级 seccomp
。停用此字段后,集群配置文件中没有 seccomp
配置文件的容器将不受限地运行。启用此字段后,将使用容器运行时的默认 seccomp
配置文件保护这些容器。此功能默认处于启用状态。
创建集群后,此字段只能在升级期间切换。如需了解详情,请参阅使用 seccomp
限制容器 。
集群资源
可选
可变(仅限升级)
clusterSecurity.enableRootlessContainers
可选。布尔值 (true
|false
)。启用/停用无根裸金属系统容器。启用此字段后,裸金属系统容器会以用户 ID 在 2000-5000 范围内的非根用户身份运行。停用此字段后,裸金属系统容器会以根用户身份运行。此功能默认处于启用状态。强烈建议不要关闭此功能,因为以根用户身份运行容器会带来安全风险。创建集群后,只能在升级期间切换此字段。如需了解详情,请参阅不要以根用户身份运行容器 。
集群资源
可选
可变(仅限升级)
clusterSecurity.authorization
可选。授权可配置用户对集群的访问权限。
集群资源
可选
可更改
clusterSecurity.authorization.clusterAdmin
可选。指定此集群的集群管理员。
集群资源
可选
可更改
clusterSecurity.authorization.clusterAdmin.gcpAccounts
可选。gcpAccounts
字段指定被授予 Kubernetes 基于角色的访问控制 (RBAC) 角色 clusterrole/cluster-admin
的账号列表。具有此角色的账号拥有对集群的所有命名空间中的每个资源的完整访问权限。此字段还会配置 RBAC 政策,以便指定的账号使用连接网关 针对集群运行 kubectl
命令。如果您有多个集群需要管理(尤其是在同时具有 GKE 和本地集群的混合环境中),则此字段会很方便。
如果用户具有 访问 Google Cloud 控制台所需的 Identity and Access Management 角色 ,用户也可以使用这些 RBAC 政策登录 Google Cloud 控制台。
此字段接受账号名称数组。支持用户账号和服务账号。对于用户,您需要指定其 Google Cloud 账号电子邮件地址。对于服务账号,请按以下格式指定电子邮件地址:
SERVICE_ACCOUNT @PROJECT_ID .iam.gserviceaccount.com
。
例如:
...
clusterSecurity:
authorization:
clusterAdmin:
gcpAccounts:
- alex@example.com
- hao@example.com
- my-sa@example-project-123.iam.gserviceaccount.com
...
更新集群以添加账号时,请务必将列表中的所有账号(包括现有账号和新账号)包含在内,因为更新命令会用您在更新中指定的内容来覆盖此列表。
此字段仅适用于可以运行工作负载的集群。例如,您无法为管理员集群指定 gcpAccounts
。
集群资源
可选
可更改
storage.lvpNodeMounts.path
必需。字符串。使用 path
字段来指定可发现已装载磁盘的宿主机路径。系统会为每个装载创建一个本地 PersistentVolume (PV)。默认路径为 /mnt/localpv-share
。如需了解如何配置节点装载,请参阅配置 LVP 节点装载 。
集群资源
必填
不可更改
集群资源
必填
不可变
storage.lvpNodeMounts
本部分指定由装载磁盘支持的本地永久性卷的配置(路径)。您必须自行格式化并装载这些磁盘。您可以在创建集群之前或之后执行此任务。如需了解详情,请参阅 LVP 节点装载 。
集群资源
必填
不可变
storage.lvpShare
本部分指定由共享文件系统中的子目录支持的本地永久性卷的配置。创建集群时,系统会自动创建这些子目录。如需了解详情,请参阅 LVP 共享 。
集群资源
必填
不可变
storage.lvpShare.path
必需。字符串。使用 path
字段来指定可以创建子目录的宿主机路径。将为每个子目录创建一个本地 PersistentVolume (PV)。如需了解如何配置 LVP 共享,请参阅配置 LVP 共享 。
集群资源
必填
不可变
storage.lvpShare.numPVUnderSharedPath
必需。字符串。指定要在 lvpShare.path
下创建的子目录的数量。默认值为 5
。如需了解如何配置 LVP 共享,请参阅配置 LVP 共享 。
集群资源
必填
不可变
storage.lvpShare.storageClassName
必需。字符串。指定用于创建永久性卷的 StorageClass。StorageClass 在创建集群期间创建。默认值为 local-shared
。如需了解如何配置 LVP 共享,请参阅配置 LVP 共享 。
集群资源
可选
不可变
type
必需。字符串。指定集群的类型。标准部署模型由单个管理员集群和一个或多个用户集群组成,这些集群由管理员集群管理。GKE on Bare Metal 支持以下类型的集群:
管理员 - 用于管理用户集群的集群。
用户 - 用于运行工作负载的集群。
混合 - 适用于管理员和工作负载的单个集群,也可以管理用户集群。
独立集群 - 可以自行管理的单个集群,也可以运行工作负载,但无法创建或管理其他用户集群。
集群类型是在创建集群时指定的,并且无法更改以进行更新或升级。如需详细了解如何创建集群,请参阅创建集群:概览 。
允许使用的值:admin
| user
| hybrid
| standalone
无法为现有集群修改此值。
集群资源
必填
不可变
name
必需。字符串。通常,命名空间名称使用 cluster-CLUSTER_NAME
模式,但从 GKE on Bare Metal 版本 1.7.2 开始,我们并不严格要求使用 cluster-
前缀。
无法为现有集群修改此值。
命名空间资源
需要
不可变
clusterName
字符串。必需。要向其中添加节点池的集群的名称。在关联的集群所在的同一命名空间中创建节点池资源,并在此字段中引用该集群名称。如需了解详情,请参阅在集群中添加和移除节点池 。
例如:
apiVersion : baremetal.cluster.gke.io/v1
kind : NodePool
metadata :
name : node-pool-new
namespace : cluster-my-cluster
spec :
clusterName : my-cluster
nodes :
- address : 10.200.0.10
- address : 10.200.0.11
- address : 10.200.0.12
NodePool 资源
需要
不可变
nodes
可选。IP (IPv4) 地址的数组。这会定义工作器节点的节点池。
NodePool 资源
可选
可更改
nodes.address
可选。字符串(IPv4 地址)。工作器节点池中节点的一个或多个 IP 地址。
NodePool 资源
可选
可更改
kubeletConfig
(预览版 )
可选。本部分包含用于在控制平面节点池中的所有节点上配置 kubelet 的字段。
例如:
apiVersion : baremetal.cluster.gke.io/v1
kind : NodePool
metadata :
name : node-pool-new
namespace : cluster-my-cluster
spec :
clusterName : my-cluster
...
kubeletConfig :
serializeImagePulls : true
registryBurst : 20
registryPullQPS : 10
NodePool 资源
可选
可更改
kubeletConfig.registryBurst
可选。整数(非负)。指定可以添加到处理队列以处理请求高峰的映像拉取请求的最大数量。拉取开始后,就可以向队列添加新请求。默认值为 10。此字段对应于 registryBurst
kubelet 配置 (v1beta1) 选项。
registryPullQPS
的值优先于此设置。例如,使用默认设置时,最多允许 10 个并发查询,但必须以每秒 5 次查询的默认速率处理。此爆发行为仅在 registryPullQPS
大于 0
时使用。
创建、更新或升级集群时可以设置此字段,并且此设置在集群升级后持续有效。如需了解详情,请参阅配置 kubelet 映像拉取设置 。
NodePool 资源
可选
可更改
kubeletConfig.registryPullQPS
可选。整数(非负)。指定 Container Registry 映像拉取查询的处理速率,单位为每秒查询次数 (QPS)。当 registryPullQPS
设置为大于 0 的值时,查询速率会限制为该值(单位为每秒查询次数)。如果 registryPullQPS
设置为 0
,则对查询速率没有限制。默认值为 5
。
此字段对应于 registryPullQPS
kubelet 配置 (v1beta1) 选项。
创建、更新或升级集群时可以设置此字段,并且此设置在集群升级后持续有效。如需了解详情,请参阅配置 kubelet 映像拉取设置 。
NodePool 资源
可选
可更改
kubeletConfig.serializeImagePulls
可选。布尔值 (true
|false
)。此字段指定 Container Registry 拉取是并行处理还是逐个处理。默认值为 true
,指定一次处理一个拉取。设置为 false
时,kubelet 会并行拉取映像。此字段对应于 serializeImagePulls
kubelet 配置 (v1beta1) 选项。
创建、更新或升级集群时可以设置此字段,并且此设置在集群升级后持续有效。如需了解详情,请参阅配置 kubelet 映像拉取设置 。
NodePool 资源
可选
可更改
taints
可选。对象。您可以利用节点污点对节点进行标记,以使调度器避免或阻止将其用于特定 pod。污点由键值对和相关效果组成。key
和 value
值是用于标识污点的字符串,effect
值指定系统如何为节点处理 pod。taints
对象可以具有多个污点。
effect
字段可以采用以下值之一:
NoSchedule
- 除非 pod 具有匹配的容忍设置,否则无法将其调度到节点上。
PreferNoSchedule
- 系统会避免将不能容忍污点的 Pod 放置在节点上,但这并非必需项。
NoExecute
- 不能容忍污点的 Pod 会立即被逐出,能够容忍污点的 Pod 永远不会被逐出。
对于 GKE on Bare Metal,污点会与节点池的节点协调,除非将 baremetal.cluster.gke.io/label-taint-no-sync
注解应用于集群。如需详细了解污点,请参阅污点和容忍设置 。
例如:
taints :
- key : status
value : testpool
effect : NoSchedule
NodePool 资源
可选
可更改
labels
可选。映射(键值对)。标签应用于节点池的节点,除非将 baremetal.cluster.gke.io/label-taint-no-sync
注解应用于集群。如需详细了解标签,请参阅标签和选择器 。
NodePool 资源
可选
可更改
upgradeStrategy
可选。本部分包含用于为工作器节点池中的节点配置升级策略的设置。如需了解详情,请参阅并行升级 。
注意:请勿为控制平面或负载均衡器节点池添加此部分。
NodePool 资源
可选
可更改
upgradeStrategy.parallelUpgrade
可选。本部分包含用于为工作器节点池配置并行节点升级的设置。在典型的默认集群升级中,每个集群节点按顺序依次升级。您可以配置工作器节点池,以便在升级集群时并行升级多个节点。并行升级节点可以显著加快集群升级速度,尤其是对于具有数百个节点的集群。
对于工作器节点池,您可以指定同时升级的节点数,并且可以为在能够整个升级过程中运行工作负载的节点数设置最小阈值。
如需了解详情,请参阅节点升级策略 。
apiVersion : baremetal.cluster.gke.io/v1
kind : NodePool
metadata :
name : np1
namespace : cluster-cluster1
spec :
clusterName : cluster1
nodes :
- address : 10.200.0.1
...
upgradeStrategy :
parallelUpgrade :
concurrentNodes : 2
minimumAvailableNodes : 5
NodePool 资源
可选
可更改
upgradeStrategy.parallelUpgrade.concurrentNodes
可选。整数(正数)。默认值:1
。最大值:15
。默认情况下 (1
),节点会按顺序逐个升级。将 concurrentNodes
设置为大于 1 的数字时,此字段指定要并行升级的节点数。请注意 concurrentNodes
的以下限制条件:
该值不能超过节点池 50% 的节点数或固定数字 15
这两者中的较小值。例如,如果您的节点池有 20 个节点,则不能指定大于 10
的值。如果您的节点池有 100 个节点,则 15
是您可以指定的最大值。
将此字段与 minimumAvailableNodes
字段一起使用时,这两个值的和不能超过节点池中的节点总数。例如,如果您的节点池有 20 个节点,并且 minimumAvailableNodes
设置为 18
,则 concurrentNodes
不能超过 2
。
并行升级不遵循 Pod 中断预算 (PDB) 。如果您的工作负载对中断很敏感,我们建议您指定 minimumAvailableNodes
,以确保在升级过程中有一定数量的节点可用于运行工作负载。如需了解详情,请参阅并行升级 。
NodePool 资源
可选
可更改
upgradeStrategy.parallelUpgrade.minimumAvailableNodes
可选。整数(非负)。默认值:取决于 concurrentNodes
。如需详细了解 minimumAvailableNodes
的默认值,请参阅并行升级默认值 。minimumAvailableNodes
可让您指定节点池中在整个升级过程中必须保持可用的节点数。当节点正在升级时,该节点被视为不可用。当满足以下任一条件时,节点也被视为不可用:
节点处于维护模式
节点正在协调
节点在升级过程中停滞
将此字段与 concurrentNodes
字段一起使用时,这两个值的和不能超过节点池中的节点总数。例如,如果您的节点池有 20 个节点,并且 concurrentNodes
设置为 10
,则 minimumAvailableNodes
不能超过 10
。
较大的 minimumAvailableNodes
值可最大限度地减少安排 Pod 时的容量问题,从而帮助在集群升级期间保护工作负载。但是,较大的 minimumAvailableNodes
值会增加升级停滞的风险,因为可能需要等待节点变为可用。如需了解详情,请参阅并行升级 。
NodePool 资源
可选
可更改
registryMirrors
可选。使用本部分指定用于安装集群的注册表镜像,而不是 Container Registry (gcr.io
)。如需详细了解如何使用注册表镜像,请参阅使用注册表镜像安装 GKE on Bare Metal 。
为方便起见,bmctl
会接受集群规范之外的 registryMirrors
字段,例如凭据键值对。如需查看示例,请参阅注册表镜像设置说明 。
例如:
registryMirrors :
- endpoint : https://172.18.0.20:5000
caCertPath : /root/ca.crt
pullCredentialConfigPath : /root/.docker/config.json
hosts :
- somehost.io
- otherhost.io
注册表镜像
可选
可更改
registryMirrors.endpoint
字符串。镜像的端点,由注册表服务器 IP 地址和端口号组成。(可选)您可以在注册表服务器中使用您自己的命名空间,而不是根命名空间。如果没有命名空间,端点格式为 REGISTRY_IP :PORT
。如果使用命名空间,端点格式为 REGISTRY_IP :PORT /v2/NAMESPACE
。指定命名空间时必须包含 /v2
。
指定注册表镜像时,endpoint
为必填字段。您可以指定多个镜像/端点。
例如:
- endpoint : https://172.18.0.20:5000/v2/test-namespace
注册表镜像
可选
可更改
registryMirrors.caCertPath
可选。字符串。如果您的注册表服务器使用专用 TLS 证书,则此字段为 CA 证书文件(服务器根 CA)的路径。如果您的本地注册表不需要使用专用 TLS 证书,则可以省略此字段。
注册表镜像
可选
可更改
registryMirrors.pullCredentialConfigPath
可选。字符串。Docker CLI 配置文件 config.json
的路径。Docker 会将身份验证设置保存在配置文件中。只有在使用注册表镜像时此字段才适用。如果您的注册表服务器不需要使用 Docker 配置文件即可进行身份验证,则可以省略此字段。
例如:
registryMirrors :
- endpoint : https://172.18.0.20:5000
caCertPath : /root/ca.crt
pullCredentialConfigPath : /root/.docker/config.json
注册表镜像
可选
可更改
registryMirrors.hosts
可选。针对特定注册表镜像 (endpoint
) 在本地镜像的主机的域名数组。当容器运行时遇到来自指定主机的映像拉取请求时,它会首先检查本地注册表镜像。如需了解详情,请参阅从注册表镜像创建集群 。
例如:
registryMirrors :
- endpoint : https://172.18.0.20:5000
caCertPath : /root/ca.crt
pullCredentialConfigPath : /root/.docker/config.json
hosts :
- somehost.io
- otherhost.io
注册表镜像
可选
可更改
凭据
bmctl
为 GKE on Bare Metal 生成的集群配置文件包含用于指定本地文件系统中凭据和密钥文件的路径的字段。这些凭据和密钥需要将您的集群彼此连接以及连接到 Google Cloud 项目。
这些键值对字段不是 Kubernetes 集群自定义资源的有效元素。只有 bmctl
能理解此格式,标准 Kubernetes 工具无法理解此格式。如果要使用 kubectl
将更改应用到集群,请移除凭据和密钥字段。
例如:
gcrKeyPath : bmctl-workspace/.sa-keys/my-gcp-project-anthos-baremetal-gcr.json
sshPrivateKeyPath : /home/root-user/.ssh/id_rsa
gkeConnectAgentServiceAccountKeyPath : bmctl-workspace/.sa-keys/my-gcp-project-anthos-baremetal-connect.json
gkeConnectRegisterServiceAccountKeyPath : bmctl-workspace/.sa-keys/my-gcp-project-anthos-baremetal-register.json
cloudOperationsServiceAccountKeyPath : bmctl-workspace/.sa-keys/my-gcp-project-anthos-baremetal-cloud-ops.json
凭据
可选
可更改
gcrKeyPath
字符串。Container Registry 服务账号密钥的路径。Container Registry 服务账号 是 Google 管理的服务账号,与 Google Cloud 服务交互时会代表 Container Registry 执行操作。
凭据
可选
可更改
sshPrivateKeyPath
字符串。SSH 私钥的路径。必须通过 SSH 访问节点。
凭据
可选
可更改
gkeConnectAgentServiceAccountKeyPath
字符串。代理服务账号密钥的路径。GKE on Bare Metal 使用此服务账号来维护 GKE on Bare Metal 与 GKE on Google Cloud 之间的连接。
如需有关如何配置此服务账号的说明,请参阅配置服务账号以与 Connect 搭配使用 。
凭据
可选
可更改
gkeConnectRegisterServiceAccountKeyPath
字符串。注册服务账号密钥的路径。GKE on Bare Metal 使用此服务账号向 Google Cloud 注册您的用户集群。
如需有关如何配置此服务账号的说明,请参阅配置服务账号以与 Connect 搭配使用 。
凭据
可选
可更改
cloudOperationsServiceAccountKeyPath
字符串。运维服务账号密钥的路径。GKE on Bare Metal 使用运营服务帐号向 Google Cloud Observability 进行身份验证,以访问 Logging API 和 Monitoring API。
如需有关如何配置此服务账号的说明,请参阅配置服务账号以与 Logging 和 Monitoring 搭配使用 。
凭据
可选
可更改
ipv4
定义 IPv4 CIDR 范围的配置。必须至少为 ClusterCidrConfig
资源提供 ipv4
或 ipv6
字段之一。
ClusterCIDRConfig 资源
可选
不可变
ipv4.cidr
字符串。设置 IPv4 节点 CIDR 地址块。节点只能有来自每个系列的一个范围。此 CIDR 地址块必须与 Cluster
资源中描述的 Pod CIDR 一致。
例如:
ipv4 :
cidr : "10.1.0.0/16"
ClusterCIDRConfig 资源
必需
不可更改
ipv4.perNodeMaskSize
整数。定义节点 IPv4 CIDR 地址块的掩码大小。例如,值 24
转换为网络掩码 /24
。确保节点的 CIDR 地址块网络掩码大于 kubelet 可以调度的 Pod 数上限(在 kubelet 的 --max-pods
标志中定义)。
ClusterCIDRConfig 资源
必需
不可更改
ipv6
定义 IPv6 CIDR 范围的配置。必须至少为 ClusterCidrConfig
资源提供 ipv4
或 ipv6
字段之一。
ClusterCIDRConfig 资源
可选
不可变
ipv6.cidr
字符串。设置 IPv6 节点 CIDR 地址块。节点只能有来自每个系列的一个范围。
例如:
ipv6 :
cidr : "2620:0:1000:2631:3:10:3:0/112"
ClusterCIDRConfig 资源
必需
不可更改
ipv6.perNodeMaskSize
整数。定义节点 IPv6 CIDR 地址块的掩码大小。例如,值 120
转换为网络掩码 /120
。确保节点的 CIDR 地址块网络掩码大于 kubelet 可以调度的 Pod 数上限(在 kubelet 的 --max-pods
标志中定义)。
ClusterCIDRConfig 资源
必需
不可更改
nodeSelector.matchLabels
定义 CIDR 配置适用的节点。空节点选择器是默认设置,适用于所有节点。
例如:
nodeSelector :
matchLabels :
baremetal.cluster.gke.io/node-pool : "workers"
ClusterCIDRConfig 资源
可选
可更改