准备安装

本页面介绍了在环境中安装 GKE On-Prem 之前应执行的一些步骤。

准备工作

请查看以下主题:

限制

限制 说明
集群和节点的上限和下限

请参阅配额和限制。您的环境性能可能会影响这些限制。

用户集群名称的唯一性

注册到同一 Google Cloud 项目的所有用户集群都必须具有唯一的名称。

不能部署到多个 vCenter 和/或 vSphere 数据中心

目前,您只能将一个管理员集群和一组关联的用户集群部署到单个 vCenter 和/或 vSphere 数据中心。您不能将同一管理员集群和用户集群部署到多个 vCenter 和/或 vSphere 数据中心。

创建集群后不能以声明方式更改集群配置 虽然您可以创建其他集群调整现有集群的大小,但无法通过配置文件更改现有集群。

创建 Google Cloud 项目

如果您还没有 Google Cloud 项目,请创建一个 Google Cloud 项目。您需要一个项目来运行 GKE On-Prem。

安装所需的命令行界面工具

  • 安装 Google Cloud CLI,其中包含 Google Cloud 的命令行界面 (CLI) gcloud

  • govc (CLI) 安装到 VMware vSphere。

  • 安装包含 terraform CLI 的 Terraform 0.11。按照 Terraform 的安装说明操作,以验证安装并设置 PATH 变量。

配置 Google Cloud CLI 以通过笔记本电脑/工作站使用代理/防火墙

如果您使用代理通过笔记本电脑或工作站连接到互联网,则可能需要为代理配置 Google Cloud CLI,以便运行 gcloudgsutil 命令。如需查看相关说明,请参阅配置 gcloud CLI 以在代理/防火墙后使用

授权 gcloud 访问 Google Cloud

安装 gcloud CLI 后,使用您的帐号凭据登录 Google Cloud:

gcloud auth login

设置默认的 Google Cloud 项目

设置默认 Google Cloud 会使所有 gcloud CLI 命令针对该项目运行,这样就无需针对每条命令指定您的项目。如需设置默认项目,请运行以下命令:

gcloud config set project [PROJECT_ID]

请将 [PROJECT_ID] 替换为您的项目 ID。(您可以在 Google Cloud 控制台中或通过运行 gcloud config get-value project 来查找项目 ID。)

创建 Google Cloud 服务帐号

在首次安装 GKE On-Prem 之前,请使用 gcloud 创建 4 个 Google Cloud 服务帐号。GKE On-Prem 代表您使用这些服务帐号完成任务;以下部分介绍了各个帐号的用途。

访问服务帐号

您使用此服务帐号从 Cloud Storage 下载 GKE On-Prem 的二进制文件。它是 Google 列入许可名单的唯一服务帐号。

运行以下命令以创建 access-service-account

gcloud iam service-accounts create access-service-account

注册服务帐号

Connect 使用此服务帐号向 Google Cloud Console 注册您的 GKE On-Prem 集群。

运行以下命令以创建 register-service-account

gcloud iam service-accounts create register-service-account

Connect 服务帐号

Connect 使用此服务帐号来维护 GKE On-Prem 集群与 Google Cloud 之间的连接。

运行以下命令以创建 connect-service-account

gcloud iam service-accounts create connect-service-account

Google Cloud 的运维套件服务帐号

此服务帐号允许 GKE On-Prem 将日志记录和监控数据写入 Google Cloud 的运维套件

运行以下命令以创建 stackdriver-service-account

gcloud iam service-accounts create stackdriver-service-account

将项目和帐号列入许可名单

购买 Anthos 后,Google 会将以下各项列入许可名单,以授予您对 GKE On-Prem 和 Connect 的访问权限:

  • 您的 Google Cloud 项目。
  • 您的 Google 帐号以及团队成员的个人 Google 帐号。
  • 您的访问服务帐号。

如果您想使用其他项目或服务帐号,或者希望让其他用户能执行操作,Google Cloud 支持人员或技术支持客户经理可为您提供帮助。通过 Google Cloud 控制台或 Google Cloud 支持中心创建支持请求。

在项目中启用所需的 API

您需要在 Google Cloud 项目中启用以下 API

  • cloudresourcemanager.googleapis.com
  • container.googleapis.com
  • gkeconnect.googleapis.com
  • gkehub.googleapis.com
  • serviceusage.googleapis.com
  • stackdriver.googleapis.com
  • monitoring.googleapis.com
  • logging.googleapis.com

如需启用这些 API,请运行以下命令:

gcloud services enable \
cloudresourcemanager.googleapis.com \
container.googleapis.com \
gkeconnect.googleapis.com \
gkehub.googleapis.com \
serviceusage.googleapis.com \
stackdriver.googleapis.com \
monitoring.googleapis.com \
logging.googleapis.com

将 Identity and Access Management 角色分配给您的服务帐号

IAM 会授予帐号调用 Google Cloud API 的权限。将专用 IAM 角色分配给这些服务帐号以实现权限隔离。

列出服务帐号的电子邮件地址

首先,列出您的 Google Cloud 项目中的服务帐号:

gcloud iam service-accounts list

对于名为 my-gcp-project 的 Google Cloud 项目,此命令的输出如下所示:

gcloud iam service-accounts list
NAME                                    EMAIL
                                        access-service-account@my-gcp-project.iam.gserviceaccount.com
                                        register-service-account@my-gcp-project.iam.gserviceaccount.com
                                        connect-service-account@my-gcp-project.iam.gserviceaccount.com
                                        stackdriver-service-account@my-gcp-project.iam.gserviceaccount.com

记下每个帐号的电子邮件地址。对于以下各个部分,您需要提供相关帐号的电子邮件帐号。

注册服务帐号

向您的注册服务帐号授予 gkehub.adminserviceuseage.serviceUsageViewer 角色:

gcloud projects add-iam-policy-binding [PROJECT_ID] \
--member "serviceAccount:[REGISTER_SERVICE_ACCOUNT_EMAIL]" \
--role "roles/gkehub.admin"
gcloud projects add-iam-policy-binding [PROJECT_ID] \
--member "serviceAccount:[REGISTER_SERVICE_ACCOUNT_EMAIL]" \
--role "roles/serviceusage.serviceUsageViewer"

Connect 服务帐号

向您的连接服务帐号授予 gkehub.connect 角色:

gcloud projects add-iam-policy-binding [PROJECT_ID] \
--member "serviceAccount:[CONNECT_SERVICE_ACCOUNT_EMAIL]" \
--role "roles/gkehub.connect"

Google Cloud 的运维套件服务帐号

向您的 Google Cloud 运维套件服务帐号授予 stackdriver.resourceMetadata.writerlogging.logWritermonitoring.metricWriter 角色:

gcloud projects add-iam-policy-binding [PROJECT_ID] \
--member "serviceAccount:[STACKDRIVER_SERVICE_ACCOUNT_EMAIL]" \
--role "roles/stackdriver.resourceMetadata.writer"
gcloud projects add-iam-policy-binding [PROJECT_ID] \
--member "serviceAccount:[STACKDRIVER_SERVICE_ACCOUNT_EMAIL]" \
--role "roles/logging.logWriter"
gcloud projects add-iam-policy-binding [PROJECT_ID] \
--member "serviceAccount:[STACKDRIVER_SERVICE_ACCOUNT_EMAIL]" \
--role "roles/monitoring.metricWriter"

配置 Logging 和 Monitoring

默认情况下,系统会为 GKE On-Prem 启用 Stackdriver Logging 和 Stackdriver Monitoring。

将代理的地址列入许可名单

如果您的组织要求通过 HTTP 代理访问互联网,您需要将代理的以下地址列入许可名单。

以下部分详细说明了这些地址。

Google 地址

GKE On-Prem 使用多个 Google API 来创建和管理集群。将代理的以下 Google 地址列入许可名单:

地址 目的
accounts.google.com 允许访问 Google 帐号以访问您的 Google Cloud 项目。
cloudresourcemanager.googleapis.com 创建、读取和更新 Google Cloud 资源容器的元数据。
console.cloud.google.com 允许访问 Google Cloud Console。
container.googleapis.com 允许访问 Google Kubernetes Engine API。
gcr.io 允许访问 Container Registry 代码库,包括 GKE On-Prem 代码库。
gkeconnect.googleapis.com 允许访问 Connect 以便与 Google Cloud 建立长期加密连接。
gkehub.googleapis.com 允许访问 Google Cloud Console,以便通过您的 Google Cloud 项目注册集群。
logging.googleapis.com 允许访问 Cloud Logging 的 API,以使用集群指标日志记录功能。
monitoring.googleapis.com 允许访问 Cloud Monitoring 的 API 以实现集群监控功能。
oauth2.googleapis.com 允许访问 Google 的 OAuth2 API 以进行身份验证。
serviceusage.googleapis.com
storage.googleapis.com 允许访问 Cloud Storage 存储分区。
googleapis.com 允许访问 Google Cloud 产品专用端点。

HashiCorp 地址

您可以使用 HashiCorp Terraform 0.11 版在 vSphere 中创建管理员工作站虚拟机。如需在设有代理或防火墙的环境中运行 Terraform,您需要将以下 HashiCorp 地址列入许可名单:

地址 目的
checkpoint-api.hashicorp.com 允许访问各种开源产品和专有产品的 HashiCorp 版本和提醒信息。
releases.hashicorp.com 允许访问 HashiCorp 的二进制文件。

VMware、负载平衡器和其他地址

最后,请务必将代理的以下地址列入许可名单。这些地址可能会有所不同:

地址 目的
vCenter Server 的 IP 地址 允许 vCenter Server 的互联网流量。
所有 ESXi 主机的 IP 地址 允许运行 GKE On-Prem 集群的 REST 主机的互联网流量。
您打算在负载平衡器上配置的其他 IP 地址 允许其他 IP 地址(如客户端和工作负载)的互联网流量。

预留 pod 和 Service 范围

对于管理员集群以及要创建的每个用户集群,您需要预留两个不同的 CIDR IPv4 块:一个用于 pod IP,一个用于 Service IP。

这些范围的大小取决于您打算创建的 pod 和 Service 的数量。例如,如果您打算在集群中创建少于 256 个 Service,则可以预留 /24 Service 范围,例如 10.96.233.0/24。如果您打算在集群中创建的 pod 数量少于 4096 个,则可以预留 /20 Pod 范围,例如 172.16.0.0/20。

对于给定集群,Service 和 pod 范围不得重叠。此外,Service 和 pod 范围不得与任何集群中节点的 IP 地址重叠。

准备负载平衡器

GKE On-Prem 集群可以通过两种负载平衡模式之一运行:“集成”或“手动”。使用集成模式时,GKE On-Prem 集群将通过 F5 BIG-IP 负载平衡器运行。使用手动模式时,您可以手动配置其他负载平衡器。

准备 F5 BIG-IP 分区

如果您选择使用集成模式,则需要创建 F5 BIG-IP 分区,以处理您打算创建的每个 GKE On-Prem 集群的负载平衡。

最初,您需要创建至少两个分区:一个用于管理员集群,一个用于用户集群。您必须先创建分区,然后才能创建相应的集群。

请勿将集群分区用于其他任何内容。每个集群都必须有一个单独用于该集群的分区。

如需了解如何创建分区,请参阅 F5 BIG-IP 文档中的创建管理分区

使用手动负载平衡模式

手动负载平衡模式要求进行比集成模式更多的配置。如需了解详情,请参阅启用手动负载平衡