本页面介绍如何使用在 Compute Engine 上运行的虚拟机 (VM) 设置采用高可用性 (HA) 模式的 GKE on Bare Metal 混合集群。
您无需准备任何硬件,即可快速试用 GKE on Bare Metal。完成本页面上的步骤后,您可以获得在 Compute Engine 上运行的有效 GKE Clusters on Bare Metal 测试环境。
要在 Compute Engine 虚拟机上试用 GKE on Bare Metal,请完成以下步骤:
准备工作
- Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
-
Make sure that billing is enabled for your Google Cloud project.
- 请记下项目 ID,因为您需要用它来设置本页面上的脚本和命令中使用的环境变量。如果您选择现有项目,请确保您是 Project Owner 或 Project Editor。
-
在 Linux 工作站上,请确保您已安装最新的 Google Cloud CLI(用于与 Google Cloud 交互的命令行工具)。如果您已安装 gcloud CLI,请运行以下命令来更新其组件:
gcloud components update
根据 gcloud CLI 的安装方式,您可能会看到以下消息:“您无法执行此操作,因为此安装已停用 Google Cloud CLI 组件管理器。您可以运行以下命令来实现此安装的相同结果:”。按照说明复制并粘贴命令以更新组件。
本指南中的步骤来自 anthos-samples 代码库中的安装脚本。常见问题解答部分详细介绍了如何自定义此脚本以使用一些热门变异。
在 Compute Engine 中创建 6 个虚拟机
完成以下步骤以创建以下虚拟机:
- 一个虚拟机用于管理员工作站。管理员工作站托管命令行界面 (CLI) 工具和配置文件以在安装期间配置集群,以及用于在安装后与预配的集群交互的 CLI 工具。管理员工作站将通过 SSH 访问集群中的所有其他节点。
- 三个用作控制平面节点的虚拟机,运行 GKE on Bare Metal 控制平面所需。
- 两个用作工作器节点的虚拟机,运行 GKE on Bare Metal 集群的工作负载。
设置环境变量:
export PROJECT_ID=PROJECT_ID export ZONE=ZONE export CLUSTER_NAME=CLUSTER_NAME export BMCTL_VERSION=1.16.8
运行以下命令以使用您的 Google 账号登录,并将您的项目设置为默认项目:
gcloud auth login gcloud config set project $PROJECT_ID gcloud config set compute/zone $ZONE
创建
baremetal-gcr
服务账号:启用 Google Cloud API 和服务:
向
baremetal-gcr
服务账号授予额外的权限,以避免为不同的 API 和服务使用多个服务账号:创建本页面上所有命令需要的变量和数组:
使用以下循环创建 6 个虚拟机:
此命令会创建具有以下名称的虚拟机实例:
- abm-ws:管理员工作站的虚拟机。
- abm-cp1、abm-cp2、abm-cp3:控制平面节点的虚拟机。
- abm-w1、abm-w2:运行工作负载的节点的虚拟机。
使用以下循环验证 SSH 是否在所有虚拟机上准备就绪:
在虚拟机之间创建具有 L2 连接的 vxlan
网络
使用 Linux 的标准 vxlan
功能创建通过 L2 连接连接所有虚拟机的网络。
以下命令包含两个循环,它们执行以下操作:
- 通过 SSH 连接到每个虚拟机。
- 更新并安装所需软件包。
执行所需命令以使用
vxlan
配置网络。
现在,10.200.0.0/24 网络内具有 L2 连接。虚拟机具有以下 IP 地址:
- 管理员工作站虚拟机:10.200.0.2
- 运行控制平面节点的虚拟机:
- 10.200.0.3
- 10.200.0.4
- 10.200.0.5
- 运行工作器节点的虚拟机:
- 10.200.0.6
- 10.200.0.7
安装 GKE on Bare Metal 的前提条件
在安装 GKE on Bare Metal 之前,您需要先在管理员工作站上安装以下工具:
bmctl
kubectl
- Docker
如需安装这些工具并为 GKE on Bare Metal 安装做好准备,请执行以下操作:
运行以下命令,将服务账号密钥下载到管理员工作站并安装所需工具:
运行以下命令确保
root@10.200.0.x
有效。这些命令执行以下任务:- 在管理员工作站上生成新的 SSH 密钥。
- 将公钥添加到部署中的所有其他虚拟机上。
部署 GKE on Bare Metal 混合集群
以下代码块包含完成以下任务所需的所有命令和配置:
- 为所需的混合集群创建配置文件。
- 运行预检检查。
- 部署集群。
验证集群
您可以在管理员工作站的 root 账号的 bmctl-workspace
目录中找到集群的 kubeconfig
文件。如需验证部署,请完成以下步骤。
以根用户身份通过 SSH 连接到管理员工作站:
gcloud compute ssh root@abm-ws --zone ${ZONE}
您可以忽略任何有关更新虚拟机的消息并完成本教程。如果您计划将虚拟机保留为测试环境,则可能需要按照 Ubuntu 文档中的说明更新操作系统或升级到下一个版本。
使用集群配置文件的路径设置
KUBECONFIG
环境变量,以便在集群上运行kubectl
命令。export clusterid=CLUSTER_NAME export KUBECONFIG=$HOME/bmctl-workspace/$clusterid/$clusterid-kubeconfig kubectl get nodes
在环境变量中设置当前上下文:
export CONTEXT="$(kubectl config current-context)"
运行以下
gcloud
命令。此命令会执行以下操作:- 为您的用户账号授予集群上的 Kubernetes
clusterrole/cluster-admin
角色。 - 配置集群,以便在本地计算机上运行
kubectl
命令,而无需通过 SSH 连接到管理员工作站。
将
GOOGLE_ACCOUNT_EMAIL
替换为与您的 Google Cloud 账号关联的电子邮件地址。例如:--users=alex@example.com
。gcloud container fleet memberships generate-gateway-rbac \ --membership=CLUSTER_NAME \ --role=clusterrole/cluster-admin \ --users=GOOGLE_ACCOUNT_EMAIL \ --project=PROJECT_ID \ --kubeconfig=$KUBECONFIG \ --context=$CONTEXT\ --apply
此命令的输出类似于以下内容,为了便于阅读,已将其截断:
Validating input arguments. Specified Cluster Role is: clusterrole/cluster-admin Generated RBAC policy is: -------------------------------------------- ... Applying the generate RBAC policy to cluster with kubeconfig: /root/bmctl-workspace/CLUSTER_NAME/CLUSTER_NAME-kubeconfig, context: CLUSTER_NAME-admin@CLUSTER_NAME Writing RBAC policy for user: GOOGLE_ACCOUNT_EMAIL to cluster. Successfully applied the RBAC policy to cluster.
- 为您的用户账号授予集群上的 Kubernetes
探索完毕后,输入 exit 以退出管理员工作站。
获取可通过 Connect 网关访问集群的
kubeconfig
条目。gcloud container fleet memberships get-credentials CLUSTER_NAME
输出类似于以下内容:
Starting to build Gateway kubeconfig... Current project_id: PROJECT_ID A new kubeconfig entry "connectgateway_PROJECT_ID_global_CLUSTER_NAME" has been generated and set as the current context.
您现在可以通过 Connect 网关运行
kubectl
命令:kubectl get nodes kubectl get namespaces
从 Google Cloud 控制台登录集群
如需在 Google Cloud 控制台中观察 GKE Clusters on Bare Metal 上的工作负载,您需要登录集群。在首次登录控制台之前,您需要配置身份验证方法。配置身份验证的较简单方法是使用 Google 身份。此身份验证方法让您可以使用与您的 Google Cloud 账号关联的电子邮件地址登录。
您在上一部分中运行的 gcloud container fleet memberships generate-gateway-rbac
命令会配置集群,以便您可以使用 Google 身份登录。
在 Google Cloud 控制台中,前往 GKE 集群页面。
点击已注册集群旁边的
操作,然后点击登录。选择使用您的 Google 身份登录。
点击 Login(登录)。
清理
连接到管理员工作站,以便将集群虚拟机重置为安装之前的状态,并从 Google Cloud 项目中取消注册集群:
gcloud compute ssh root@abm-ws --zone ${ZONE} << EOF set -x export clusterid=CLUSTER_NAME bmctl reset -c \$clusterid EOF
列出名称中包含
abm
的所有虚拟机:gcloud compute instances list | grep 'abm'
验证您是否可以安全删除名称中包含
abm
的所有虚拟机。验证后,您可以通过运行以下命令来删除
abm
虚拟机:gcloud compute instances list --format="value(name)" | grep 'abm' | xargs gcloud \ --quiet compute instances delete