本页介绍了在 Google Kubernetes Engine (GKE) 中创建集群时,您可以做出的主要集群配置选择,无论您使用的是Google Cloud 控制台、Google Cloud CLI 还是 Terraform。借助这些选项,您可以自定义各种集群属性和行为,以满足您的需求,例如集群是否可从公共网络访问,以及您希望集群以何种方式接收版本升级。
本指南中讨论的许多选项在创建集群后无法更改。其中包括会影响集群可用性和网络的选项。如果您确实需要更改这些选项,则必须创建新的集群,然后将流量迁移到该集群,这可能会导致服务中断。
由于许多集群配置选项在集群创建后都无法更改,因此请与贵组织的管理员和架构师、云架构师、网络管理员或负责定义、实现和维护 GKE 与Google Cloud 架构的任何其他团队一起规划和设计集群配置。
本页面适用于根据公司战略定义 IT 解决方案和系统架构的管理员和架构师。如需详细了解我们在 Google Cloud 内容中提及的常见角色和示例任务,请参阅常见的 GKE Enterprise 用户角色和任务。
在阅读本页内容之前,您应该先熟悉以下内容以及 Kubernetes 基本概念:
集群管理级别
在讨论集群选项之前,请务必了解集群所需的灵活性、职责和控制。您需要的控制级别决定了在 GKE 中使用的操作模式以及您需要执行的集群配置选项。
在 GKE 中创建集群时,可以使用以下某一操作模式:
Autopilot(推荐):提供完全预配和托管式集群配置。Autopilot 集群会进行预先配置,并提供可供生产工作负载使用的优化集群配置。
标准:提供集群底层基础架构的高级配置灵活性。对于使用标准模式创建的集群,您需要确定生产工作负载所需的配置。
如需详细了解这些模式并详细了解 Autopilot,请参阅 GKE 运维模式和 Autopilot 概览。
如需详细了解这两种模式的并排比较,请参阅比较 GKE Standard 和 Autopilot。
集群配置选项
选择操作模式后,您可以选择集群所需的配置。与标准集群相比,Autopilot 集群由 Google Cloud 进行更全面的管理和配置,因此可用的配置选项较少。
所有集群的配置选项都属于以下类别:
- 名称和其他元数据:每个集群都必须有一个在其项目中唯一的标识名称。您还可以选择性地添加集群说明和标签。
- 可用性和可伸缩性:指定集群控制平面和节点的运行位置,以及是否需要多个控制平面副本。所有 Autopilot 集群都是区域性集群,这意味着它们在 Google Cloud区域内的多个计算区域中都有多个控制平面。
- 舰队成员资格:选择是否要将集群设为舰队成员。
- 网络:网络选项,包括集群所在的 Virtual Private Cloud (VPC) 网络和子网,以及您是否希望集群可从公共网络访问。
- 版本和升级管理:使用发布渠道在升级此集群的软件时选择您偏好的新功能和稳定性平衡点,并设置维护窗口和排除项,以选择升级何时可以进行以及何时不可以进行。
- 安全性:这包括集群是否使用适用于 GKE 的工作负载身份联合,以及集群节点用于向Google Cloud进行身份验证的服务账号。
- 集群功能:为此集群启用和配置其他 GKE 和Google Cloud 功能,包括备份和可观察性。 在标准模式下,您还可以创建短时存在的 Alpha 版集群,以试用 Alpha 版 Kubernetes 功能。
除此之外,标准集群还提供以下类别的选项:
- 节点池:指定集群节点的详细信息,包括节点池、节点操作系统和节点大小。
以下部分将详细介绍其中一些类别,尤其是在创建集群后无法更改设置的选项所在的类别。如需查看配置选项的完整列表,请参阅配置参考文档。
下表比较了 Autopilot 集群和标准集群在某些关键领域的可用选项:
集群选择 | 模式 | |
---|---|---|
Autopilot | Standard | |
可用性类型 | 区域 | 区域或可用区 |
发布版本 | 快速、常规或稳定 | 任意渠道 |
集群版本 | 默认或其他可用版本 | 默认或其他可用版本 |
网络路由 | VPC 原生 | VPC 原生或基于路由 |
网络隔离 | 可自定义 | 可自定义 |
Kubernetes 特性 | 生产 | 正式版或 Alpha 版 |
集群可用性类型
借助 GKE,您可以根据工作负载的可用性要求和预算来创建集群。您可以选择区域性集群(在 Google Cloud 区域内的多个计算可用区中具有多个控制平面副本),也可以选择可用区集群(在单个可用区中具有单个控制平面)。Autopilot 集群始终为区域级集群。
请参阅选择区域或地区控制平面,了解如何选择在标准模式下创建的集群类型。
集群创建后,这些设置将无法更新:可用区级集群无法变为区域级集群,区域级集群也无法变为可用区级集群。
对于生产工作负载,请使用区域级集群,因为它们通常能比可用区级集群提供更高的可用性。对于开发环境,请将区域级集群与可用区级节点池搭配使用。具有区域级控制平面和可用区节点池的集群的费用与区域级集群相同。 如需详细了解特定区域的注意事项,请参阅地理位置和区域。
区域级集群
区域级集群具有多个控制平面副本,这些副本在您指定的 Google Cloud 区域内的多个可用区中运行。创建 Autopilot 集群或其他区域级集群时,您始终需要指定区域。
仅对于地区级 Standard 集群,您还可以选择集群的节点在哪些可用区运行。区域级集群中的节点可以在多个可用区或单个可用区中运行,具体取决于配置的节点位置。默认情况下,GKE 会在控制平面区域的三个可用区中复制每个节点池。创建标准集群或添加新节点池时,您可以通过指定运行集群节点的可用区来更改默认配置。所有可用区都必须与控制平面位于同一区域内。
使用区域级集群运行生产工作负载,因为它们提供的可用性高于可用区级集群提供的可用性。
- 如需创建区域级标准集群,请参阅创建区域级集群。
- 如需创建区域级 Autopilot 集群,请参阅创建 Autopilot 集群。
区域级集群一经创建,便无法更改其区域。
可用区级集群(仅限 Standard 集群)
区域级集群在单个区域具有一个控制层面。根据您的工作负载可用性要求,您可以选择将区域级集群的节点分布到单个区域或多个区域。
如需创建可用区级集群,请参阅创建可用区级集群。
单区域集群
单可用区集群具有一个控制平面,该控制平面在一个可用区中运行,并负责管理在同一可用区中运行的节点上的工作负载。如果您在单个可用区中运行工作负载,则在发生可用区级服务中断时,此工作负载会不可用。
多区域集群
多可用区级集群具有单个控制平面副本(在单个可用区中运行),并且具有一些节点(在多个可用区中运行)。在集群升级或运行控制平面的可用区发生服务中断期间,工作负载仍会运行。不过,在控制平面可用之前,无法配置集群及其节点和工作负载。多区域集群会平衡可用性和费用,以确保工作负载持续运行。如果您想确保可用性并且节点和节点池的数量经常发生变化,请考虑使用地区级集群。 如果您在多个可用区中运行工作负载,并且发生可用区级服务中断,则工作负载会在该可用区中断,但在其他可用区仍然可用。
集群层级
如您从 GKE 版本中了解到,GKE 有两层级的功能:适用于所有 GKE 用户的标准层级功能,以及添加了强大功能的企业层级,可用于在企业级规模开展工作,其中许多功能都基于 GKE 舰队管理。
对于 Google Cloud上的 GKE 集群,您可以选择是否要按集群添加额外的功能层级。集群注册到 GKE Enterprise 层级后,您便有权使用所有可用的企业版功能。如果您未指定集群层级,则集群将默认使用标准层级,但存在一些例外情况。
选择集群层级时,请确保您了解以下事项:
- 许多 GKE Enterprise 功能都需要舰队成员资格才能正常运行。您可以在集群创建期间或创建集群后将集群注册到舰队。如果您想将支持舰队的 GKE Enterprise 功能与集群搭配使用,我们建议您在创建集群时将集群注册到舰队,因为这意味着集群将继承适用于企业功能的舰队级设置。如需了解详情,请参阅舰队成员资格。
- 只有在集群的项目中启用了 GKE Enterprise (Anthos) API 后,您才能为集群启用 Enterprise 层级。
创建集群后,您可以更改此设置。
如需详细了解 GKE Enterprise 中包含的功能(包括不需要舰队成员资格的部分功能),请参阅 GKE Enterprise 部署选项。
舰队成员资格
如果您的组织使用多个集群,则可以将集群添加到舰队(即 Kubernetes 集群的逻辑分组)来简化多集群管理。创建舰队可帮助您的组织将管理级别从单个集群升级到整组集群,并让您能够使用支持舰队的功能,例如多集群 Ingress、 Config Sync 和 Policy Controller。
虽然您可以随时向舰队添加集群,但如果您已启用 GKE Enterprise,我们强烈建议您在集群创建期间将新的企业级集群注册到舰队。这是因为这些“在舰队中生成”的集群在创建时使用了您为许多企业功能所选择的舰队级默认设置,并且已启用了推荐的日志和指标。您可以通过以下指南详细了解这些内容:
您可以在创建集群后更新此设置,以注册或取消注册集群,不过我们不建议将包含实时工作负载的集群从一个舰队移至另一个舰队。
如需详细了解如何将集群添加到舰队,请参阅创建舰队以简化多集群管理。
网络设置
创建 GKE 集群时,您可以指定多项网络设置,包括集群所在的网络、网络路由模式,以及是否允许通过公共网络访问集群节点。
如果您不是网络管理员,则应先咨询贵组织的网络专家,然后再创建可投入生产环境的集群,因为这些选项中的许多选项在集群创建后都无法更改。如果您是网络管理员,可以参阅 GKE 网络简介,详细了解 GKE 网络;如需了解网络选项的最佳实践,请参阅 GKE 网络最佳实践。本部分仅介绍了可用网络选项中的一部分。
网络和子网
集群所在的虚拟私有云 (VPC) 网络决定着集群可与其他哪些 Compute Engine 资源进行通信。默认情况下,GKE 集群会在项目的默认网络中创建,但如果您或您的管理员创建了其他网络,您也可以选择其他网络。您可以指定要将集群划分到特定 VPC 子网(如果有):否则,系统会使用默认子网。您还可以选择指定要为 Pod 和 Service 使用该子网中的特定 IP 地址范围。
创建集群后,这些设置将无法更新。
网络隔离选项
您可以考虑以下两个方面,在集群中自定义网络隔离:
对控制平面的访问:默认情况下,控制平面的内部端点和外部端点均处于启用状态,基于 DNS 的端点处于停用状态。您可以选择:
- 停用外部端点和内部端点,仅使用 DNS 端点。
- 仅停用外部端点,以防止访问外部客户端。
- 启用授权网络以控制哪些 IP 地址可以访问控制平面端点。
集群网络配置:您可以选择在集群中启用专用节点,以将工作负载与公共网络完全隔离。您可以为整个集群启用专用节点,也可以在节点池(对于 Standard 集群)或工作负载(对于 Autopilot 集群)级别启用专用节点。在节点池或工作负载级别启用专用节点会覆盖集群级别的任何节点配置。
创建集群后,可以更改这些设置。
如需详细了解网络隔离,请参阅关于自定义网络隔离和自定义网络隔离。
使用 Cloud NAT 为 GKE Pod 提供具有公共 IP 地址的资源的访问权限。Cloud NAT 可改善集群的整体安全状况,因为 Pod 没有直接暴露在互联网上,但仍可以访问面向互联网的资源。
VPC 原生集群和基于路由的集群
在 GKE 中,系统可以根据集群将流量从一个 Pod 路由到另一个 Pod 的方式来区分集群。使用别名 IP 地址的集群称为 VPC 原生集群。使用 Google Cloud 路由的集群称为基于路由的集群。
默认情况下,所有新的 GKE 集群都使用 VPC 原生路由,这是我们推荐的选项。您只能在创建集群时更改此设置,以便在标准模式下创建基于路由的集群。创建集群后,此设置将无法更新。
如需详细了解 VPC 原生集群及其优势(包括它们的任何特殊要求),请参阅 VPC 原生集群。
对集群使用 VPC 原生网络模式。这是 Autopilot 集群的默认值。
版本和升级
通过发布渠道,GKE 会为集群选择可兼顾功能可用性和稳定性的软件版本。在创建集群时,您可以选择所需的发布渠道。默认情况下,新集群(Autopilot 和 Standard 集群)会在常规发布渠道中注册,但您可以根据需要在创建集群期间选择特定版本。
Autopilot 集群始终使用发布渠道。标准集群在默认情况下会使用发布渠道,但您可以选择不在发布渠道中注册集群(不过,我们不建议这样做,因为此设置会限制您对集群功能的访问权限)。
随着时间的推移,GKE 会自动升级所有集群,无论是否注册了发布渠道。当该发布渠道中提供新版本时,GKE 会自动升级集群的控制平面及其节点。您可以通过维护窗口和排除项控制升级的时间和范围。
您可以随时更改集群的发布渠道。
如需了解即将进行的自动升级,请参阅 GKE 版本说明。
选择发布渠道,以便 GKE 为集群选择可兼顾功能可用性和稳定性的版本。使用维护窗口和排除项来控制自动升级的时间和范围。
Alpha 版功能(仅限标准集群)
Kubernetes 中的新功能列为 Alpha 版、Beta 版或稳定版,具体取决于其在开发过程中的状态。在大多数情况下,GKE 集群包含列为 Beta 版或稳定版的 Kubernetes 功能。
如果您想试用尚未准备好用于生产环境的全新功能,可以使用特殊的 GKE Alpha 版集群来试用 Alpha 版功能。Alpha 版集群启用了所有 Kubernetes Alpha 版 API(有时称为功能入门)。您可以使用 Alpha 版集群对 Kubernetes 功能进行早期测试和验证。Alpha 版集群无法用于生产工作负载,也无法升级或添加到发布渠道,并且会在 30 天内过期。
Alpha 版功能不适用于 Autopilot 集群。
如需创建 Alpha 版集群,请参阅创建 Alpha 版集群。
安全设置
GKE 提供了多项安全设置,您可以在创建集群时指定这些设置。这些设置包括加密设置、Binary Authorization等安全功能、您要为集群的节点使用的服务账号(下一部分会对此进行详细介绍),以及集群是否使用适用于 GKE 的工作负载身份联合。
与其他设置一样,您应先咨询专家同事(在本例中为贵组织的安全专家),然后再创建可投入生产环境的集群。您可以参阅我们的安全概览和增强集群安全性,详细了解 GKE 安全。
节点的服务账号
GKE 使用附加到节点的 IAM 服务账号来运行日志记录和监控等系统任务。这些节点服务账号至少必须具有项目的 Kubernetes Engine Default Node Service Account (roles/container.defaultNodeServiceAccount
) 角色。默认情况下,GKE 会将在项目中自动创建的 Compute Engine 默认服务账号用作节点服务账号。
如果您的组织强制执行 iam.automaticIamGrantsForDefaultServiceAccounts
组织政策限制,则项目中的默认 Compute Engine 服务账号可能不会自动获得 GKE 所需的权限。
如果您在项目或组织中将 Compute Engine 默认服务账号用于其他功能,该服务账号可能拥有的权限超出了 GKE 所需的权限,这可能会导致安全风险。
创建后,您无法更改 Autopilot 模式集群或 Standard 模式节点池的服务账号。
节点池设置(仅限 Standard 集群)
如集群管理概览和 GKE 操作模式中所述,如果您为集群使用 Autopilot,则无需担心节点配置,因为 GKE 会为您配置节点。Autopilot 集群节点全部由 GKE 全代管式,并且都使用相同的节点操作系统 (OS)。
如果您选择创建标准集群,则可以在创建集群时指定多个节点选项,包括:
- 您要使用的节点池的名称、数量、大小和位置;节点池是集群内共享公共配置的一组节点。
- 您要为新节点使用的节点操作系统。
- 您是否希望为节点使用临时Spot 虚拟机。
- 您要为节点使用的 Compute Engine 机器类型。
- 您要为节点使用的服务账号,如安全设置中所述。
集群创建后,可以更改集群的部分节点池设置,但所有 Standard 集群都需要至少一个节点池。如果您在创建标准集群时未指定节点数和机器类型,则其默认节点池将由集群的每个可用区中的三个节点组成,并使用默认节点映像 cos_containerd
和通用机器类型。
如需详细了解节点池配置,请参阅节点池简介和添加和管理节点池。
配置参考文档
如需查看可能的配置选项的完整列表,请参阅以下参考指南:
gcloud container clusters create-auto
:适用于 Autopilot 集群的 Google Cloud CLI 参考文档gcloud container clusters create
:适用于标准集群的 Google Cloud CLI 参考文档google_container_cluster
:Terraform 参考文档
后续步骤
- 如需详细了解集群架构,请参阅 GKE 集群架构
- 如需并排比较 Standard 集群和 Autopilot 集群,请参阅比较 GKE Standard 和 Autopilot * 开始创建集群: