arrow_back

设置 Kubernetes 专用集群

登录 加入
欢迎加入我们的社区,一起测试和分享您的知识!
done
学习 700 多个动手实验和课程并获得相关技能徽章

设置 Kubernetes 专用集群

实验 1 小时 30 分钟 universal_currency_alt 5 个积分 show_chart 中级
info 此实验可能会提供 AI 工具来支持您学习。
欢迎加入我们的社区,一起测试和分享您的知识!
done
学习 700 多个动手实验和课程并获得相关技能徽章

GSP178

Google Cloud 自定进度实验

概览

在 Kubernetes Engine 中,专用集群是指确保无法从公共网络访问主实例的集群。在专用集群中,节点没有公共 IP 地址,只有专用地址,因此工作负载在隔离的环境中运行。节点和主实例使用 VPC 对等互连相互通信。

在 Kubernetes Engine API 中,地址范围以无类别域间路由 (CIDR) 区块表示。

在本实验中,您将学习如何创建 Kubernetes 专用集群。

您将执行的操作

  • 创建 Kubernetes 专用集群。

前提条件

  • 学员应已具备创建和启动 Kubernetes 集群的经验,并全面掌握 CIDR 范围格式的 IP 寻址。

设置和要求

点击“开始实验”按钮前的注意事项

请阅读以下说明。实验是计时的,并且您无法暂停实验。计时器在您点击开始实验后即开始计时,显示 Google Cloud 资源可供您使用多长时间。

此实操实验可让您在真实的云环境中开展实验活动,免受模拟或演示环境的局限。我们会为您提供新的临时凭据,让您可以在实验规定的时间内用来登录和访问 Google Cloud。

为完成此实验,您需要:

  • 能够使用标准的互联网浏览器(建议使用 Chrome 浏览器)。
注意:请使用无痕模式或无痕浏览器窗口运行此实验。这可以避免您的个人账号与学生账号之间发生冲突,这种冲突可能导致您的个人账号产生额外费用。
  • 完成实验的时间 - 请注意,实验开始后无法暂停。
注意:如果您已有自己的个人 Google Cloud 账号或项目,请不要在此实验中使用,以避免您的账号产生额外的费用。

如何开始实验并登录 Google Cloud 控制台

  1. 点击开始实验按钮。如果该实验需要付费,系统会打开一个弹出式窗口供您选择付款方式。左侧是实验详细信息面板,其中包含以下各项:

    • 打开 Google Cloud 控制台按钮
    • 剩余时间
    • 进行该实验时必须使用的临时凭据
    • 帮助您逐步完成本实验所需的其他信息(如果需要)
  2. 点击打开 Google Cloud 控制台(如果您使用的是 Chrome 浏览器,请右键点击并选择在无痕式窗口中打开链接)。

    该实验会启动资源并打开另一个标签页,显示登录页面。

    提示:请将这些标签页安排在不同的窗口中,并将它们并排显示。

    注意:如果您看见选择账号对话框,请点击使用其他账号
  3. 如有必要,请复制下方的用户名,然后将其粘贴到登录对话框中。

    {{{user_0.username | "<用户名>"}}}

    您也可以在实验详细信息面板中找到用户名

  4. 点击下一步

  5. 复制下面的密码,然后将其粘贴到欢迎对话框中。

    {{{user_0.password | "<密码>"}}}

    您也可以在实验详细信息面板中找到密码

  6. 点击下一步

    重要提示:您必须使用实验提供的凭据。请勿使用您的 Google Cloud 账号凭据。 注意:在本次实验中使用您自己的 Google Cloud 账号可能会产生额外费用。
  7. 继续在后续页面中点击以完成相应操作:

    • 接受条款及条件。
    • 由于该账号为临时账号,请勿添加账号恢复选项或双重验证。
    • 请勿注册免费试用。

片刻之后,系统会在此标签页中打开 Google Cloud 控制台。

注意:如需查看列有 Google Cloud 产品和服务的菜单,请点击左上角的导航菜单导航菜单图标

激活 Cloud Shell

Cloud Shell 是一种装有开发者工具的虚拟机。它提供了一个永久性的 5GB 主目录,并且在 Google Cloud 上运行。Cloud Shell 提供可用于访问您的 Google Cloud 资源的命令行工具。

  1. 点击 Google Cloud 控制台顶部的激活 Cloud Shell “激活 Cloud Shell”图标

如果您连接成功,即表示您已通过身份验证,且当前项目会被设为您的 PROJECT_ID 环境变量所指的项目。输出内容中有一行说明了此会话的 PROJECT_ID

Your Cloud Platform project in this session is set to YOUR_PROJECT_ID

gcloud 是 Google Cloud 的命令行工具。它已预先安装在 Cloud Shell 上,且支持 Tab 自动补全功能。

  1. (可选)您可以通过此命令列出活跃账号名称:
gcloud auth list
  1. 点击授权

  2. 现在,输出的内容应如下所示:

输出:

ACTIVE: * ACCOUNT: student-01-xxxxxxxxxxxx@qwiklabs.net To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (可选)您可以通过此命令列出项目 ID:
gcloud config list project

输出

[core] project = <project_ID>

输出示例

[core] project = qwiklabs-gcp-44776a13dea667a6 Note: For full documentation of gcloud, in Google Cloud, refer to the gcloud CLI overview guide.

任务 1. 设置区域和可用区

  1. 设置本实验的项目区域:
gcloud config set compute/zone {{{project_0.default_zone | "Zone"}}}
  1. 为区域创建一个变量:
export REGION={{{project_0.default_region | REGION}}}
  1. 为可用区创建一个变量:
export ZONE={{{project_0.default_zone | Zone}}}

参阅“区域和可用区”文档了解详情。

注意:当您在自己的机器上运行 gcloud 时,不同会话的配置设置保持不变。但在 Cloud Shell 中,您需要为每个新会话或在每次重新连接时设置配置。

任务 2. 创建专用集群

  1. 创建专用集群时,您必须指定运行 Kubernetes 主实例组件的虚拟机的 /28 CIDR 范围,并且需要启用 IP 别名。

接下来,您将创建一个名为 private-cluster 的集群,并为主实例指定 CIDR 范围 172.16.0.16/28。启用 IP 别名时,让 Kubernetes Engine 自动为您创建一个子网。

您将使用 --private-cluster--master-ipv4-cidr--enable-ip-alias 标志来创建专用集群。

  1. 运行以下命令以创建集群:
gcloud beta container clusters create private-cluster \ --enable-private-nodes \ --master-ipv4-cidr 172.16.0.16/28 \ --enable-ip-alias \ --create-subnetwork ""

验证您已完成的任务

点击检查我的进度可验证您已完成的任务。如果您已成功创建专用集群,就会看到一个评估分数。

创建专用集群

任务 3. 查看子网和次要地址范围

  1. 列出默认网络中的子网:
gcloud compute networks subnets list --network default
  1. 在输出中,找到为您的集群自动创建的子网的名称。例如 gke-private-cluster-subnet-xxxxxxxx。请保存该集群的名称,以备在后续步骤中使用。

  2. 现在,运行以下命令获取自动创建的子网的信息(将 [SUBNET_NAME] 替换为您的子网):

gcloud compute networks subnets describe [SUBNET_NAME] --region=$REGION

输出中会显示带 GKE 专用集群名称的主地址范围以及次要地址范围:

... ipCidrRange: 10.0.0.0/22 kind: compute#subnetwork name: gke-private-cluster-subnet-163e3c97 ... privateIpGoogleAccess: true ... secondaryIpRanges: - ipCidrRange: 10.40.0.0/14 rangeName: gke-private-cluster-pods-163e3c97 - ipCidrRange: 10.0.16.0/20 rangeName: gke-private-cluster-services-163e3c97 ...

在输出中,您可以看到一个次要范围用于 Pod,另一个次要范围用于服务

请注意,privateIPGoogleAccess 设置为 true。这让您的集群主机(只有专用 IP 地址)能够与 Google API 和服务通信。

任务 4. 启用主授权网络

此时,唯一能访问主实例的 IP 地址是在以下范围内的地址:

  • 您的子网的主要范围,这是用于节点的范围。
  • 您的子网的次要范围,这是用于 Pod 的范围。

要提供对主实例的其他访问权限,您必须为所选地址范围授权。

创建虚拟机实例

  1. 创建一个源实例,用于检查与 Kubernetes 集群的连接情况:
gcloud compute instances create source-instance --zone=$ZONE --scopes 'https://www.googleapis.com/auth/cloud-platform'

验证您已完成的任务

点击检查我的进度可验证您已完成的任务。如果您已成功创建虚拟机实例,就会看到一个评估分数。

创建虚拟机实例
  1. 使用以下命令来获取 source-instance<External_IP>
gcloud compute instances describe source-instance --zone=$ZONE | grep natIP

输出示例:

natIP: 35.192.107.237
  1. 复制 <nat_IP> 地址并保存,以在后续步骤中使用。

  2. 运行以下命令来为外部地址范围授权,请将 [MY_EXTERNAL_RANGE] 替换为上一个输出中的外部地址 CIDR 范围(您的 CIDR 范围是 natIP/32)。通过将 CIDR 范围指定为 natIP/32,我们将一个特定的 IP 地址加入许可名单:

gcloud container clusters update private-cluster \ --enable-master-authorized-networks \ --master-authorized-networks [MY_EXTERNAL_RANGE] 注意: 在生产环境下,请将 [MY_EXTERNAL_RANGE] 替换为您的网络外部地址 CIDR 范围。

验证您已完成的任务

点击检查我的进度可验证您已完成的任务。如果您已成功为外部地址范围授权,就会看到一个评估分数。

为外部地址范围授权

现在您可以从一系列外部地址访问主实例了,接下来您将安装 kubectl,以便使用它来获取有关您集群的信息。例如,您可以使用 kubectl 来验证您的节点没有外部 IP 地址。

  1. 使用以下命令,通过 SSH 连接到 source-instance
gcloud compute ssh source-instance --zone=$ZONE
  1. Y 继续。对于所有口令问题,均按 Enter 键回复。

  2. 在 SSH shell 中,安装 Cloud SDK 的 kubectl 组件:

sudo apt-get install kubectl
  1. 使用以下命令,从 SSH shell 中配置对 Kubernetes 集群的访问权限:
sudo apt-get install google-cloud-sdk-gke-gcloud-auth-plugin gcloud container clusters get-credentials private-cluster --zone=$ZONE 注意:请确保已在 ZONE 变量中导出指定的可用区。
  1. 验证您的集群节点没有外部 IP 地址:
kubectl get nodes --output yaml | grep -A4 addresses

输出中显示节点具有内部 IP 地址,但没有外部地址:

... addresses: - address: 10.0.0.4 type: InternalIP - address: "" type: ExternalIP ...
  1. 下面是另一个可用于验证节点没有外部 IP 地址的命令:
kubectl get nodes --output wide

输出中显示 EXTERNAL-IP 列为空:

STATUS ... VERSION EXTERNAL-IP OS-IMAGE ... Ready v1.8.7-gke.1 Container-Optimized OS from Google Ready v1.8.7-gke.1 Container-Optimized OS from Google Ready v1.8.7-gke.1 Container-Optimized OS from Google
  1. 输入以下命令关闭 SSH shell:
exit

任务 5. 清理

  1. 删除 Kubernetes 集群:
gcloud container clusters delete private-cluster --zone=$ZONE
  1. Y 继续。

验证您已完成的任务

点击检查我的进度可验证您已完成的任务。如果您已成功删除 Kubernetes 集群,就会看到一个评估分数。

删除 Kubernetes 集群

任务 6. 创建一个使用自定义子网的专用集群

在上一部分,Kubernetes Engine 自动为您创建了一个子网。在此部分,您将创建自己的自定义子网,然后创建一个专用集群。 您的子网有一个主地址范围和两个次要地址范围。

  1. 创建子网和次要地址范围:
gcloud compute networks subnets create my-subnet \ --network default \ --range 10.0.4.0/22 \ --enable-private-ip-google-access \ --region=$REGION \ --secondary-range my-svc-range=10.0.32.0/20,my-pod-range=10.4.0.0/14

验证您已完成的任务

点击检查我的进度可验证您已完成的任务。如果您已在 区域中成功创建子网和次要地址范围,就会看到一个评估分数。

区域中创建子网和次要地址范围
  1. 创建一个使用您的子网的专用集群:
gcloud beta container clusters create private-cluster2 \ --enable-private-nodes \ --enable-ip-alias \ --master-ipv4-cidr 172.16.0.32/28 \ --subnetwork my-subnet \ --services-secondary-range-name my-svc-range \ --cluster-secondary-range-name my-pod-range \ --zone=$ZONE

验证您已完成的任务

点击检查我的进度可验证您已完成的任务。如果您已成功创建一个使用您的子网的专用集群,就会看到一个评估分数。

创建一个使用您的子网的专用集群
  1. 检索源实例的外部地址范围:
gcloud compute instances describe source-instance --zone=$ZONE | grep natIP

输出示例:

natIP: 35.222.210.67
  1. 复制 <nat_IP> 地址并保存,以在后续步骤中使用。

  2. 运行以下命令来为外部地址范围授权,请将 [MY_EXTERNAL_RANGE] 替换为上一个输出中的外部地址 CIDR 范围(您的 CIDR 范围是 natIP/32)。通过将 CIDR 范围指定为 natIP/32,我们将一个特定的 IP 地址加入许可名单:

gcloud container clusters update private-cluster2 \ --enable-master-authorized-networks \ --zone=$ZONE \ --master-authorized-networks [MY_EXTERNAL_RANGE]

验证您已完成的任务

点击检查我的进度可验证您已完成的任务。如果您已成功为外部地址范围授予访问自定义子网中某个专用集群的权限,就会看到一个评估分数。

为外部地址范围授予访问自定义子网中的专用集群的权限
  1. 使用以下命令,通过 SSH 连接到 source-instance
gcloud compute ssh source-instance --zone=$ZONE
  1. 使用以下命令,从 SSH shell 中配置对 Kubernetes 集群的访问权限:
gcloud container clusters get-credentials private-cluster2 --zone=$ZONE 注意:请确保已在 ZONE 变量中导出指定的可用区。
  1. 验证您的集群节点没有外部 IP 地址:
kubectl get nodes --output yaml | grep -A4 addresses

输出中显示节点具有内部 IP 地址,但没有外部地址:

... addresses: - address: 10.0.4.3 type: InternalIP ...

此时,唯一能访问主实例的 IP 地址是在以下范围内的地址:

  • 您的子网的主要范围,这是用于节点的范围。在本例中,节点范围是 10.0.4.0/22
  • 您的子网的次要范围,这是用于 Pod 的范围。在本例中,Pod 的范围是 10.4.0.0/14

恭喜!

您学习了如何创建 Kubernetes 专用集群。

后续步骤/了解详情

Google Cloud 培训和认证

…可帮助您充分利用 Google Cloud 技术。我们的课程会讲解各项技能与最佳实践,可帮助您迅速上手使用并继续学习更深入的知识。我们提供从基础到高级的全方位培训,并有点播、直播和虚拟三种方式选择,让您可以按照自己的日程安排学习时间。各项认证可以帮助您核实并证明您在 Google Cloud 技术方面的技能与专业知识。

上次更新手册的时间:2024 年 4 月 15 日

上次测试实验的时间:2023 年 9 月 20 日

版权所有 2024 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。

此内容目前不可用

We will notify you via email when it becomes available

太好了!

We will contact you via email if it becomes available