GKE Enterprise (Anthos) 技术概览

GKE Enterprise 是 Google 的以云为中心的容器平台,用于一致地大规模运行现代应用。本指南简要介绍 GKE Enterprise 的工作原理,以及它如何帮助您提供可管理、可伸缩的可靠应用。

为什么选择 GKE Enterprise?

通常,当组织拥抱容器、容器编排和服务网格等云原生技术时,则意味着运行单个集群已经无法满足组织的需求。组织选择部署多个集群以实现其技术和业务目标的原因多种多样。例如,分隔生产环境与非生产环境、满足不同的监管要求,或者分隔各个层级、语言区域或团队的服务。但是,在配置、安全和管理的一致性方面,使用多个集群有自己的困难和开销,例如,一次手动配置一个集群存在中断风险,以及很难判断发生错误的确切位置。

如果集群不在同一个位置,情况会变得更加复杂(且费用更高)。许多使用 Google Cloud 的组织也希望或需要在自己的数据中心、工厂车间、零售店,甚至其他公有云中运行工作负载,但他们不希望在所有这些位置自行构建新的容器平台,也不想根据运行位置重新考虑如何配置、保护、监控和优化容器工作负载,这可能会带来不一致的环境、安全和配置错误的风险,以及运营工作负担。

例如:

  • 一家金融机构在 Google Cloud 上搭建数字银行平台,需要一致的配置、可靠的安全政策实施,并且能够深入观察多个应用的通信方式。一家正在搭建现代电子商务平台的大型零售公司具有相同的要求。这两家公司都使用 GKE 在 Google Cloud 的多个区域中管理多个集群。
  • 另一个全球金融机构正在构建复杂的风险管理应用、银行间转账应用和许多其他敏感工作负载,其中一些必须位于企业防火墙后面,另一些则部署在 GKE on Google Cloud 上。
  • 一家大型药品零售商正在创建新的疫苗接种安排、客户即时通讯和数字互动应用,以对药店运营进行现代化改造,并打造更加个性化的实体店体验。这些应用需要与 BigQuery 和 Retail Search 等 Google Cloud 托管服务集成的实体店容器平台。
  • 一家媒体和娱乐公司需要在 30 个棒球场中构建一致的容器环境(均连接到并通过 Google Cloud 管理),以收集和分析 TB 级的比赛统计信息,并提高球场内和线上的球迷参与度。
  • 一家硬件制造公司需要以极短的延迟分析数据并近乎实时地进行决策,以测试和优化工厂车间产品质量和员工安全,同时还要整合 Google Cloud 中的数据以进行长期分析。
  • 一家提供软件即服务 (SaaS) 模型的集成平台的软件和互联网公司需要在多个主流公有云上提供其平台,以便在靠近客户的位置提供原生云服务。该公司需要以统一且一致的方式,通过一个管理平面在多个公有云中预配、配置、保护和监控容器环境,以避免使用不同的原生管理工具管理每个云环境的运营开销。

GKE Enterprise 可以通过提供一致的平台来帮助所有这些组织:

  • 对应用和基础架构进行就地现代化改造
  • 创建统一的云运营模型(单一管理平台),以创建、更新和优化各个环境中的容器集群
  • 将大型多集群应用作为舰队(类似环境的逻辑分组)进行扩缩,并进行一致的安全、配置和服务管理
  • 通过统一的控制平面实施一致的治理和安全措施

它凭借专业的工具和功能来实现这一目标,这些工具和功能有助于企业以企业规模治理、管理和运行容器化工作负载,并采用我们从运行 Google 服务时学到的最佳实践和原则。

GKE Enterprise 基础知识

展示 GKE Enterprise 平台功能的示意图

GKE Enterprise 功能围绕“舰队”的概念构建:舰队是可以共同管理的 Kubernetes 集群的逻辑分组。舰队可以完全由 Google Cloud 上的 GKE 集群组成,也可以包含 Google Cloud 外部的集群,即在本地以及在其他公有云(例如 AWS 和 Azure)上运行的集群。

创建舰队后,您可以使用支持舰队的 GKE Enterprise 功能增加更多价值并简化跨多个集群和基础架构提供商的工作:

  • 无论舰队的集群位于何处,配置和政策管理工具都可在整个舰队内自动添加和更新相同的配置、功能和安全政策,从而帮助您轻松地大规模管理集群。
  • 舰队范围网络功能可帮助您管理整个舰队中的流量,包括适用于跨多个集群的应用的多集群 Ingress,以及服务网格流量管理功能。
  • 身份管理功能可帮助您为舰队工作负载和用户一致地配置身份验证。
  • 可观测性功能可让您监控舰队集群和应用以及进行问题排查,包括其健康状况、资源利用率和安全状况。
  • 借助团队管理工具,您可以确保团队可访问运行工作负载所需的基础架构资源,并为团队提供团队范围的资源和工作负载视图。
  • 对于在舰队中运行的基于微服务的应用,Anthos Service Mesh 提供了可用于整个网格中的应用安全、网络组建和管理以及可观测性的强大工具。

您可以启用整个 GKE Enterprise 平台以使用所有可用功能(包括多云和混合云功能),也可以仅在 Google Cloud 上创建舰队,并根据需要为其他企业功能付费。GKE Enterprise 采用业界标准的开源技术,并支持多个基础架构提供商,让您可以灵活地使用 GKE Enterprise 来满足业务和组织需求。

舰队的工作原理

借助舰队,GKE Enterprise 可让您对 Kubernetes 集群进行逻辑分组和标准化,从而简化基础架构的管理。采用舰队使您可在 Google Cloud 控制台中统一管理整个舰队,从而帮助组织将管理级别从单个集群升级到集群组。 但是,舰队不仅仅是集群组。舰队中采用的相同性和信任原则可让您使用整个范围内支持舰队的功能。

这些舰队原则中的第一点是相同性。这意味着,在一个集群舰队中,不同集群中的某些 Kubernetes 对象(例如命名空间)在具有相同名称时被视为同一个对象。这种标准化使您可以轻松地同时管理多个集群,并被支持舰队的 GKE Enterprise 功能所利用。例如,您可以将 Policy Controller 的安全政策应用于命名空间 foo 中的所有舰队服务,无论它们恰好位于哪些集群,也无论这些集群位于何处。

舰队还假设服务相同性(命名空间中的所有同名服务可以视为同一服务,例如为了进行流量管理)和身份相同性(舰队中的服务和工作负载可以使用一个通用身份进行身份验证和授权)。舰队相同性原则还提供了有关如何设置命名空间、服务和身份的可靠指导,这些指导遵循了许多组织和 Google 已实施的最佳实践。

另一个关键原则是信任,服务相同性、工作负载身份相同性和网格身份相同性均建立在舰队成员之间高度信任的原则之上。这种信任机制能够将这些资源的管理级别提升至舰队,而不是逐个管理集群,最终会使集群边界变得不太重要。

如何组织舰队取决于您的组织需求和技术需求。每个舰队都与特定的 Google Cloud 项目(称为舰队宿主项目)相关联,该项目用于管理和查看舰队,但可以包含其他项目中的集群。例如,您可以为生产、测试和开发环境分别使用不同的舰队,或者为不同的业务线创建单独的舰队(可以使用范围在舰队内处理作为基础设施上租户的不同团队)。具有大量跨服务通信的集群最适合在舰队中共同管理。相同环境(例如生产环境)中的集群应属于同一舰队。 我们通常建议您使用最大舰队大小,以便在服务之间实现信任和相同性,但请注意,如果您选择使用 Anthos Service Mesh,可以在舰队中启用更精细的服务访问权限控制。


了解详情:


各种环境的 Kubernetes 集群均适用

Kubernetes 是 GKE Enterprise 的核心,在构建舰队时,有多种 Kubernetes 集群选项可供选择:

  • Google Kubernetes Engine (GKE) 是 Google 的代管式 Kubernetes 实现,为 GKE Enterprise 用户提供以下选项:
    • 在 Google Cloud 上,GKE 具有云托管的控制平面和由 Compute Engine 实例组成的集群。虽然 GKE on Google Cloud 本身可以帮助您自动部署、扩缩和管理 Kubernetes,但将 GKE 集群分组为舰队可让您更轻松地大规模工作,并且除了强大的集群管理功能之外,您还可以使用由 GKE 已提供的 GKE Enterprise 功能。
    • 在 Google Cloud 外部,GKE 可用于与其他基础架构提供商(包括 Azure、AWS)以及您自己的本地硬件(在 VMware 或 Bare Metal 上)搭配使用。在这些选项中,Google 提供的 Kubernetes 控制平面与集群节点一起在您的数据中心或云服务商中运行,并且您的集群连接到 Google Cloud 中的舰队宿主项目。
  • Google Distributed Cloud Edge 也支持将本地 GKE 集群添加到舰队,但在 Google 提供和维护的硬件上运行,并支持一部分 GKE Enterprise 功能。
  • GKE 集群不是唯一的选项。GKE Enterprise 还提供向舰队注册符合要求的第三方 Kubernetes 集群(例如 EKS 和 AKS 集群)的功能,这类集群称为关联集群。使用此选项时,您可以继续在现有工作负载的原本位置运行它们,同时又可利用部分 GKE Enterprise 功能来增加价值。GKE Enterprise 不管理 Kubernetes 控制平面或节点组件,只管理这些集群上运行的 GKE Enterprise 服务。

对于所有基于 GKE 的集群(包括本地和公有云),GKE Enterprise 提供集群管理和生命周期工具(创建、更新、删除和升级),包括命令行实用程序以及(对于某些集群类型)通过 Google Cloud 控制台进行管理的工具。

集群配置

无论集群位于何处,Config Sync 都提供了一种一致的方式,用于让您为整个舰队(包括关联的集群)管理集群配置。Config Sync 使用“配置即数据”的方法:以声明方式定义您环境的所需状态,在版本控制下将其维护为单一可靠来源,并直接对可重复的结果应用。Config Sync 会监控包含您的配置的中央 Git 代码库,并自动将任何更改应用于指定的目标集群,无论这些集群在何处运行。可使用 kubectl 命令应用的任何 YAML 或 JSON 均可通过 Config Sync 进行管理,并且可应用于任何 Kubernetes 集群。

迁移和虚拟机

对于想要在现代化改造过程中将其应用迁移到容器和 Kubernetes 的组织,GKE Enterprise 提供 Migrate to Containers,其中包含将基于虚拟机的工作负载转换为在 GKE 上运行的容器的工具。在 Bare Metal GKE Enterprise 平台(GKE on Bare Metal 和分布式 Cloud Edge)上,组织还可以使用 Google Distributed Cloud 上的虚拟机运行时在 Kubernetes 之上运行虚拟机,方式与运行容器相同,从而使组织可以继续使用现有基于虚拟机的工作负载开发和运行基于容器的新应用。当组织准备就绪后,便可以将这些基于虚拟机的工作负载迁移到容器,并继续使用相同的 GKE Enterprise 管理工具。


了解详情:


GKE Enterprise 功能

本指南的剩余部分介绍 GKE Enterprise 提供的可帮助您管理舰队以及其中运行的应用的功能。您可以在 GKE Enterprise 部署选项中查看每种支持的 Kubernetes 集群类型的可用功能的完整列表。

网络、身份验证和安全

构建舰队后,GKE Enterprise 可帮助您管理流量、管理身份验证和访问权限控制,并在整个舰队中以一致的方式实施安全和合规性政策。

连接到舰队

为了管理混合云和多云舰队中与 Google 的连接,Google 提供了一个名为 Connect Agent 的 Kubernetes 部署。作为舰队注册的一部分安装在集群中后,该代理会在 Google Cloud 外部的集群与其 Google Cloud 舰队宿主项目之间建立连接,让您可以从 Google 管理集群和工作负载并使用 Google 服务。

在本地环境中,与 Google Cloud 的连接可以使用公共互联网、高可用性 VPN、公共互连或专用互连,具体取决于应用在与 Google Cloud 交互时的延迟、安全性和带宽要求。


了解详情:


负载均衡

为了管理进入舰队的流量和舰队内的流量,GKE Enterprise 提供以下负载均衡解决方案:

  • Google Cloud 上的 GKE 集群可以使用以下选项:
  • 本地 GKE 集群使您可以从多种负载均衡模式中进行选择以满足您的需求,包括捆绑式 MetalLB 负载均衡器以及手动配置负载均衡以使用现有解决方案的选项
  • Distributed Cloud Edge 包含捆绑式 MetalLB 负载均衡
  • 其他公有云上的 GKE 集群使用平台原生负载均衡器

了解详情:


身份验证和访问控制

在使用跨多个基础架构提供商的多个集群时,组织面临的一个巨大挑战是管理身份验证和授权。GKE Enterprise 为您提供多种向舰队的集群进行身份验证的选项,通过 kubectl 从命令行以及从 Google Cloud 控制台与集群进行交互时,可保证一致、简单且安全的身份验证。

  • 使用 Google 身份:通过 Connect 网关,用户和服务账号可以使用其 Google ID 向舰队中的集群进行身份验证,无论集群位于何处。您可以使用此功能直接连接到集群,也可以将其与构建流水线和其他 DevOps 自动化操作搭配使用。
  • 使用第三方身份:通过 GKE Enterprise 的 GKE Identity Service,您可以配置使用第三方身份提供商的身份验证,让您的团队可以继续在整个舰队中使用 OIDC(以及 LDAP,如支持)中的现有用户名、密码和安全群组)提供商,例如 Microsoft AD FS 和 Okta。

您可以根据需要为集群配置任意数量的受支持身份提供方。

设置身份验证后,您可以使用标准的 Kubernetes 基于角色的访问权限控制 (RBAC) 来授权经过身份验证的用户与您的集群进行交互,并使用 Identity and Access Management 来控制对 Connect 网关等 Google 服务的访问权限。

对于集群上运行的工作负载,GKE Enterprise 提供舰队范围的工作负载身份。此功能允许舰队成员集群上的工作负载在向 Cloud API 等外部服务进行身份验证时使用舰队范围工作负载身份池中的身份。这使您可以设置应用对这些服务的访问权限,而不是按集群配置访问权限。例如,如果您有一个应用,其后端部署在同一舰队中的多个集群上,并且需要向 Google API 进行身份验证,那么您可以配置应用,使“backend”命名空间中的所有服务均可访问该 API。


了解详情:


政策管理

使用多个集群时,另一个难点是在整个舰队中实施一致的安全和监管合规性政策。许多组织都有严格的安全性和合规性要求(例如在金融服务应用中保护消费者信息),并且需要能够大规模满足这些要求。

为了帮助您实现此目的,Policy Controller 会对向相关集群发出的每个 Kubernetes API 请求实施自定义业务逻辑。这些政策可作为一种“保障措施”,可防止对 Kubernetes API 配置的任何更改违反安全、运营或合规性控制措施。您可以设置政策来主动屏蔽舰队中不合规的 API 请求,也可以仅审核集群的配置并报告违规行为。您可以使用 Policy Controller 的内置规则集轻松地表达常见的安全和合规性规则,也可以使用基于开源 Open Policy Agent 项目的可扩展政策语言编写自己的规则。


了解详情:


应用级安全

对于在舰队上运行的应用,GKE Enterprise 提供深度防御访问控制和身份验证功能,包括:

  • Binary Authorization,可确保在舰队的集群上仅部署可信映像。
  • Kubernetes 网络政策,可让您指定允许哪些 Pod 互相通信和与其他网络端点通信。
  • Anthos Service Mesh 服务访问权限控制,可让您根据服务账号和请求上下文为您的网格服务配置精细的访问权限控制。
  • Anthos Service Mesh 证书授权机构 (Mesh CA),可自动生成和轮替证书,因此您可以在服务之间轻松启用双向 TLS 身份验证 (mTLS)。

可观测性

大规模运营和管理集群的一个关键部分是能够轻松监控舰队的集群和应用,包括其健康状况、资源利用率和安全状况。

Google Cloud 控制台中的 GKE Enterprise

Google Cloud 控制台是 Google Cloud 的网页界面,可用于管理项目和资源。GKE Enterprise 将企业功能和整个舰队的结构化视图整合到 GKE Google Cloud 控制台页面,提供集成式界面,帮助您在一个位置集中管理应用和资源。在信息中心页面中,您可以查看概要信息,也可以根据需要展开细目,以确定问题所在。

  • 概览:简要的概览根据 Cloud Monitoring 提供的信息概述了舰队的资源使用情况,显示了按舰队和集群以及舰队汇总的 CPU、内存和磁盘利用率,以及舰队范围的 Policy Controller 和 Config Sync 覆盖范围。
  • 集群管理:GKE Enterprise Clusters 视图提供了一个安全的控制台,可用于查看所有项目和舰队集群的状态(包括集群运行状况)、将集群注册到舰队,以及为舰队创建新集群(仅限 Google Cloud)。如需了解特定集群,您可以从此视图展开细目,或访问其他 GKE 信息中心以获取有关集群节点和工作负载的更多详细信息。
  • 团队概览:如果您已为舰队设置团队,则团队概览会提供按团队汇总的资源利用率、错误率和其他指标,以便管理员和团队成员更轻松地查看和排查错误。
  • 功能管理:功能管理视图可让您查看舰队集群的 GKE Enterprise 功能的状态。
  • 服务网格:如果您在 Google Cloud 上使用 Anthos Service Mesh,则可以通过服务网格视图查看服务的健康状况和性能。Anthos Service Mesh 会收集并汇总每个服务请求和响应的相关数据,这意味着您无需对代码进行插桩以收集遥测数据或手动设置信息中心和图表。对于集群中的所有流量,Anthos Service Mesh 会自动将指标和日志上传到 Cloud Monitoring 和 Cloud Logging。这一详细遥测功能使运营人员可观察服务行为,以及维护和优化应用并进行问题排查。
  • 安全状况:安全状况视图显示切实可行的建议,以改善舰队的安全状况。
  • 配置管理:在配置视图中,您可以一目了然地查看启用了 Config Sync 的所有舰队集群的配置状态,还可以快速向尚未设置的集群添加该功能。您可以轻松跟踪配置更改,并查看哪个分支和提交标记已应用于每个集群。借助灵活的过滤器,您可以轻松按集群、分支或标记查看配置发布状态。
  • 政策管理:政策视图显示舰队中有多少集群启用了 Policy Controller,概述了任何合规性违规行为,并支持您将该功能添加到舰队集群中。

日志记录和监控

如需深入了解集群及其工作负载,您可以使用 Cloud Logging 和 Cloud Monitoring。Cloud Logging 提供了一个存储和分析日志数据的统一位置,而 Cloud Monitoring 会自动收集和存储性能数据,并提供数据可视化和分析工具。默认情况下,大多数 GKE Enterprise 集群类型会将系统组件(例如 kube-systemgke-connect 命名空间中的工作负载)的日志记录和监控信息发送到 Cloud Monitoring 和 Cloud Logging。您可以进一步配置 Cloud Monitoring 和 Cloud Logging,以获取有关您自己的应用工作负载的信息、构建包含多种指标的信息中心、创建提醒等等。

根据您的组织和项目需求,GKE Enterprise 还支持与其他可观测性工具集成,包括开源 Prometheus 和 Grafana,以及 Elastic 和 Splunk 等第三方工具。


了解详情:


服务管理

在 Kubernetes 中,服务是一种将一组 Pod 上运行的应用公开为网络服务的抽象方法,流向服务工作负载的流量具有单个 DNS 地址。在现代微服务架构中,单个应用可以包含许多服务,并且每个服务可以同时部署多个版本。此类架构中的服务间通信通过网络进行,因此服务必须能够处理网络特性和其他底层基础架构问题。

为了更轻松地管理舰队中的服务,您可以使用 Anthos Service Mesh。Anthos Service Mesh 基于 Istio,后者是服务网格基础架构层的一种开源实现。服务网格使用一致的强大工具分离出运行服务的常见关注点(例如监控、网络和安全),使服务开发者和运营者能够专注于创建和管理其应用。借助 Anthos Service Mesh,这些功能可以从应用的主容器中抽象出来,并在作为同一 Pod 中单独的容器提供的常见进程外代理中实现。此模式可将应用或业务逻辑与网络功能分离开来,使开发者能够专注于业务所需的功能。服务网格使运营团队和开发团队可以将他们的工作彼此分离。

Anthos Service Mesh 为您提供 Istio 的所有功能以及许多其他功能:

  • 网格集群中所有流量的服务指标和日志会自动注入 Google Cloud。
  • 自动生成的信息中心可在 Anthos Service Mesh 信息中心显示深度遥测信息,让您可以按各种属性过滤和划分数据,从而深入了解指标和日志。
  • 服务到服务关系一览:了解连接到每项服务的对象,以及每项服务所依赖的服务。
  • 保护服务间流量:Anthos Service Mesh 证书授权机构 (Mesh CA) 会自动生成并轮替证书,因此您可以通过 Istio 政策轻松启用双向 TLS 身份验证 (mTLS)。
  • 您不仅可以快速了解服务的通信安全状况,还可以了解该服务与其他服务的关系。
  • 使用 Cloud Monitoring 深入了解您的服务指标,并将其与其他 Google Cloud 指标结合使用。
  • 借助服务等级目标 (SLO) 清晰而轻松地了解服务的运行状况,SLO 使您可以轻松定义您自己的服务运行状况标准并发出提醒。

Anthos Service Mesh 可让您选择 Google Cloud 中的全代管式服务网格控制平面(仅适用于 Google Cloud 上的舰队成员集群中运行的网格)或您自己安装的集群内控制平面。如需详细了解每个选项的可用功能,请参阅 Anthos Service Mesh 文档


了解详情:


后续步骤