GKE On-Prem 概览

GKE On-Prem 是一款混合云软件,可将 Google Kubernetes Engine (GKE) 引入本地数据中心。借助 GKE On-Prem,您可以在本地环境中创建、管理和升级 Kubernetes 集群,并将这些集群连接到 Google Cloud Console

本主题是 GKE On-Prem 的技术概览。完成本主题后,请务必阅读系统要求

了解 Kubernetes

GKE On-Prem 和 GKE 构建在 Kubernetes 之上,Kubernetes 是一个用于管理容器化应用的可扩展开源平台。Kubernetes 对集群进行编排,集群是运行容器化应用的节点(也称为“机器”)集。

获取 GKE On-Prem

GKE On-Prem 是 Anthos 的核心组件。如需使用 GKE On-Prem,您首先需要与 Google 的销售团队联系并购买 Anthos 订阅。

安装 GKE On-Prem 前的准备工作

在安装 GKE On-Prem 之前,您需要先完成一些设置任务。以下部分概述了这些任务。

VMware vSphere 虚拟化环境

您将 GKE On-Prem 安装到在本地环境中运行的 VMware vSphere 6.5 集群。vSphere 是 VMware 的服务器虚拟化软件。

您还需要购买 VMware vCenter 和 VMware ESXi。ESXi 是一个类型 1 Hypervisor,安装在数据中心的一组物理主机/服务器上。vCenter 是用于管理数据中心服务的 vSphere 网页界面,可让您集中查看多个 ESXi 主机。

具体而言,您需要以下获得许可的 VMware 产品:

  • 具有 Enterprise Plus 许可版本的 VMware ESXI 6.5,安装在数据中心的一组主机上。
  • 具有 Standard 许可版本的 VMware vCenter 6.5,安装在数据中心的一个主机上。

如需了解详情,请参阅以下 VMware 资源:

负载平衡

对于第 4 层负载平衡,有两种负载平衡模式可供选择:集成或手动。集成模式支持 F5 BIG-IP(GKE On-Prem 的集成负载平衡器)。如果使用手动模式,您可以选择任何负载平衡器;GKE On-Prem 目前为以下负载平衡器提供说明文档:

在安装 GKE On-Prem 之前,您需要先在数据中心内配置负载平衡器。在安装过程中,您可以选择启用集成 (F5 BIG-IP) 或手动负载平衡模式(您选择的负载平衡器)。手动负载平衡模式要求您为节点分配静态 IP;您不能将动态主机配置协议 (DHCP) 服务器用于手动负载平衡模式。

身份验证

如果您的客户端需要对您的集群进行身份验证并访问容器化工作负载,您可以将 OpenID Connect (OIDC) 与您选择的提供商或与 Active Directory 联合身份验证服务 (ADFS) 配合使用。

准备 Google Cloud 项目

准备 Google Cloud 项目包括以下任务:

  • 创建 Google Cloud 项目并启用必要的 API
  • 将 Identity and Access Management 角色绑定到服务帐号。
  • 下载必要的命令行界面 (CLI) 工具,包括 HashiCorp Terraform 版本 11

如需了解详情,请参阅以下主题:

创建管理员工作站

创建管理员工作站包括以下任务:

  • 下载管理员工作站 OVA 文件,其中包含 GKE On-Prem 软件包文件。
  • 复制 Terraform 配置 (TF) 和 Terraform 变量 (TFVARS) 文件,并根据您的 vCenter 和 vSphere 配置对其进行修改。
  • 使用 Terraform 在 vSphere 中创建管理员工作站虚拟机。

如需了解详情,请参阅以下主题:

如何安装 GKE On-Prem

以下是安装过程的概要步骤:(另请参阅安装概览。)

  1. 通过 SSH 连接到管理员工作站。
  2. 运行 gkectl create-config 以生成 GKE On-Prem 配置文件。配置文件会声明 GKE On-Prem 的安装规范。
  3. 修改配置文件以填写适合您需要和环境的值,例如集群规范、OIDC 身份验证、负载平衡、Stackdriver 日志记录、要向其注册的 Google Cloud 项目等等。

  4. 运行 gkectl check-config 以验证修改后的配置文件是否可用于安装。

  5. 运行 gkectl prepare 以将 GKE On-Prem 的操作系统映像迁移到 vSphere,并将其标记为虚拟机模板。如果您配置了私有 Docker 注册表,此命令也会将 GKE On-Prem 的容器映像推送到注册表。

  6. 使用配置文件运行 gkectl create cluster --config,以在数据中心内创建 GKE On-Prem 集群。

成功安装后,您应该会在 vSphere 中拥有以下各项:

架构

此图表描述了部署一个用户控制层面后的 GKE On-Prem 架构
图:具有一个用户控制层面的 GKE On-Prem 架构。(点击放大)

GKE On-Prem 中有一个管理员集群,并且默认有三个用户集群。此外还有两个插件虚拟机和一个管理员工作站虚拟机。所有这些虚拟机都运行在一个 vSphere 集群中。

管理员工作站

管理员工作站是 vSphere 中的虚拟机,集群管理员通过此虚拟机安装 GKE On-Prem 以及与 GKE On-Prem 进行交互。它是您在创建其他任何虚拟机之前创建的第一个虚拟机。

如果您是集群管理员,则可以使用 Terraform 在 vSphere 中创建管理员工作站。管理员工作站包括:

如需创建管理员工作站,请下载以下三个文件:

  • 管理员工作站开放虚拟化设备 (OVA) 文件。这是管理员工作站的受版本控制的虚拟机映像。将此文件导入 vSphere 并将其标记为虚拟机模板。然后,Terraform 会使用该模板将管理员工作站部署到您的 vSphere 集群。
  • Terraform 配置文件 (TF)。这些是 Terraform 用于在集群中创建管理员工作站的说明。将此文件复制到您的本地工作站或笔记本电脑。
  • Terraform 配置变量文件 (TFVARS)。使用您环境中的值填充此文件中的变量。TF 配置文件会引用 TFVARS 文件的变量。将此文件复制到您的本地工作站或笔记本电脑。

管理员集群

管理员集群是 GKE On-Prem 的基础层。它运行以下 GKE On-Prem 组件:

  • 管理员控制层面:管理员控制层面处理以 GKE On-Prem 为目标和来源进行的所有 gkectl 和 Kubernetes API 调用。管理员控制层面会以 vCenter API 为目标和来源进行一些调用。
  • 用户控制层面:用户集群的控制层面。将 API 请求路由到集群的节点。每个集群都有自己的控制层面,该控制层面在管理员集群中运行。用户控制层面也会以 vCenter API 为目标和来源进行一些调用。
  • 插件虚拟机:运行管理员集群插件(如 Grafana、Prometheus、Istio 组件、Stackdriver)的虚拟机。

请注意,用户控制层面由管理员集群管理。它们在管理员集群中的节点上运行,而不是在用户集群中运行。如需管理用户控制层面,管理员集群需要:

  • 管理运行用户集群控制层面的机器。
  • 创建、更新和删除控制层面组件。
  • 将 Kubernetes API 服务器公开给用户集群。
  • 管理集群证书。

用户集群

用户集群是您部署和运行容器化工作负载和服务的地方。

插件虚拟机

GKE On-Prem 会创建两个虚拟机来运行管理员集群的插件,例如 Grafana、Prometheus、Istio 组件和 Stackdriver。

关于软件包

GKE On-Prem 的软件包是一个受版本控制的 TGZ 归档文件,其中包含创建和升级 GKE On-Prem 集群所需的全部组件。

软件包有两种类型:

完整软件包

管理员工作站提供完整软件包 gke-onprem-vsphere-[VERSION]-full.tgz。您可以在 /var/lib/gke/bundles 找到它。首次安装 GKE On-Prem 时使用完整软件包。它是一个含有以下各项的大型文件:

  • 内含所有集群组件容器映像的 TAR 文件。
  • 这些集群组件的 YAML 文件。
  • GKE On-Prem 的节点映像

升级软件包

升级软件包 gke-onprem-vsphere-[VERSION].tgz 用于升级集群。每次升级集群时,您都需要从下载内容中下载该版本的软件包。升级软件包仅包含 YAML 配置文件,这些文件用于升级集群的组件。

CLI 工具

安装 GKE On-Prem 时,您可以将以下 CLI 工具下载到本地工作站或笔记本电脑:

  • govc
  • terraform
  • gkectl
  • kubectl(包含在 Google Cloud CLI 中)
  • gcloud(包含在 gcloud CLI 中)

govc

govc 是 vSphere 的 CLI。您会在创建管理员工作站时使用 govc,并且可以用它来管理 vSphere 集群。

terraform

terraform 是 HashiCorp Terraform 的 CLI。terraform 可用于创建和升级管理员工作站。

gkectl

gkectl 是 GKE On-Prem 的 CLI。请参阅其参考指南

您可以使用 gkectl 来处理许多集群管理任务,包括:

  • 集群创建和管理。
  • 诊断和排查问题。
  • 捕获和导出集群日志。

kubectl

kubectl 是 Kubernetes 的 CLI。您可以使用 kubectl 与 Kubernetes 和 Kubernetes 集群进行互动,以及处理以下任务:

  • 部署、管理和删除集群中运行的容器化工作负载。
  • 管理、修改和删除 Kubernetes 资源。

gcloud

Google Cloud CLI 是 Google Cloud 的 CLI。您可以将 gcloud CLI 用于多种用途,包括:

  • 针对 Google Cloud 项目进行身份验证。
  • 创建服务帐号及其私钥。
  • 将 Identity and Access Management 角色绑定到帐号。

向 Google Cloud 控制台注册集群

当您创建 GKE On-Prem 用户集群时,可以选择启用 Connect,以自动向 Google Cloud 控制台注册这些集群。通过 Connect,您可以在同一 Google Cloud 界面中查看和登录本地和云端 Kubernetes 集群。

如果启用 Connect,则会在每个用户集群中创建一个 Connect Agent。Connect Agent 是一个 Deployment,可在运行它的用户集群与 Google Cloud 之间建立加密长期连接。

Connect Agent 的容器映像是从位于 gcr.ioContainer Registry 存储库中拉取。如果您的用户集群未连接到或无法连接到 gcr.io,您需要使用私有 Docker 存储库将其连接到 Google Cloud 控制台。

版本控制

如需详细了解版本控制的工作原理,请参阅版本

问题排查和诊断

请参阅以下问题排查主题:

GKE On-Prem 文档中的占位值

使用 GKE On-Prem 的文档时,您可以通过点击代码块来更改其中的 placeholder values。在以下代码块中,点击 [YOUR_NAME],可以看到它是可以修改的:

Enter your name: [YOUR_NAME]

如果您想要在复制命令以及在您的环境中运行这些命令之前填写占位值,就会发现此功能非常有用。

后续步骤

接下来,阅读系统要求以详细了解如何准备本地环境。