创建用户集群

GKE on AWS 用户集群托管您的 Kubernetes 工作负载。本主题介绍如何创建基本的用户集群。如果您想进一步配置用户集群,请参阅创建自定义用户集群。

您可以使用 AWSCluster 和 AWSNodePool 自定义资源预配 GKE on AWS 用户集群。

准备工作

如需创建用户集群,您首先需要安装管理服务。

如需连接到 GKE on AWS 资源,请执行以下步骤。选择您是拥有现有 AWS VPC(或者与 VPC 的直接连接)还是在创建管理服务时创建了专用 VPC。

现有 VPC

如果您拥有与现有 VPC 的直接连接或 VPN 连接,请省略本主题的命令中的行 env HTTP_PROXY=http://localhost:8118。

专用 VPC

如果您在专用 VPC 中创建管理服务,则 GKE on AWS 会在公共子网中添加一个堡垒主机。

如需连接到您的管理服务,请执行以下步骤:

  1. 切换到您的 GKE on AWS 配置所在的目录。 您在安装管理服务时创建了此目录。

    cd anthos-aws

  2. 要打开隧道,请运行 bastion-tunnel.sh 脚本。隧道会转发到 localhost:8118。

    如需打开堡垒主机的隧道,请运行以下命令:

    ./bastion-tunnel.sh -N
    

    来自 SSH 隧道的消息会显示在此窗口中。准备好关闭连接后,请使用 Control+C 或关闭窗口来停止该进程。

  3. 打开新终端并切换到您的 anthos-aws 目录。

    cd anthos-aws
  4. 检查您是否能够使用 kubectl 连接到集群。

    env HTTPS_PROXY=http://localhost:8118 \
    kubectl cluster-info
    

    输出包括管理服务 API 服务器的网址。

选择控制平面实例大小

GKE on AWS 不支持调整控制平面实例的大小。在创建用户集群之前,请选择控制层面的实例大小。控制平面大小取决于集群中的节点数量。下表包含针对各种集群大小建议的控制平面实例大小。

集群大小(节点数) 控制平面实例类型
1 – 10 m5.large
11 – 100 m5.xlarge
101 – 200 m5.2xlarge

创建用户集群

在此示例中,您将使用 terraform 生成配置以创建基本集群。然后,使用 kubectl apply 应用配置。

  1. 打开您的终端,必要时连接到堡垒主机。

  2. 将目录切换到您在安装管理服务时创建的文件夹。

  3. 使用 Terraform 生成用于配置示例集群的清单并将其保存到 YAML 文件。 选择您的 Terraform 版本,然后运行以下命令:

    Terraform 0.12、0.13

    terraform output cluster_example > cluster-0.yaml
    

    Terraform 0.14.3+

    terraform output -raw cluster_example > cluster-0.yaml
    

    如需详细了解此文件的内容,请参阅 AWSCluster 和 AWSNodePool 文档。

  4. 在文本编辑器中打开文件并进行所需的修改。默认情况下,GKE on AWS 会在 anthos-gke.yaml 中指定的每个可用性区域中创建节点池。您可以更改节点池的大小和数量以匹配所需的集群。您还可以对配置进行其他更改。例如,您可以更改 GKE on AWS 节点的实例类型;您还可以在控制平面节点上启用日志记录和监控。

  5. 将文件应用到您的管理服务。

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl apply -f cluster-0.yaml
    

创建 kubeconfig

在用户集群启动时,您可以为新用户集群创建 kubeconfig 上下文。您将使用该上下文向用户或管理集群进行身份验证。

  1. 使用 anthos-gke aws clusters get-credentials 为 ~/.kube/config 中的用户集群生成 kubeconfig。

    env HTTPS_PROXY=http://localhost:8118 \
      anthos-gke aws clusters get-credentials CLUSTER_NAME
    

    将 CLUSTER_NAME 替换为您的集群的名称。例如 cluster-0。

  2. 使用 kubectl 向新用户集群进行身份验证。

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl cluster-info
    

    如果您的集群已准备就绪,则输出内容会包含集群中 Kubernetes 组件的网址。

查看集群的状态

如果您应用 AWSCluster 或 AWSNodePool,则管理服务会预配 AWS 资源。

  1. 在 anthos-aws 目录中,使用 anthos-gke 将上下文切换到管理服务。

    cd anthos-aws
    anthos-gke aws management get-credentials

  2. 如需列出集群,请使用 kubectl get AWSClusters。

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl get AWSClusters
    

    输出包括每个集群的名称、状态、存在时间、版本和端点。

    例如,以下输出仅包含一个名为 cluster-0 的 AWSCluster:

    NAME        STATE          AGE     VERSION         ENDPOINT
    cluster-0   Provisioning   2m41s   1.25.5-gke.2100   gke-xyz.elb.us-east-1.amazonaws.com
    

查看集群事件

如需查看用户集群中的近期 Kubernetes 事件,请使用 kubectl get events。

  1. 在 anthos-aws 目录中,使用 anthos-gke 将上下文切换到管理服务。

    cd anthos-aws
    anthos-gke aws management get-credentials

  2. 运行 kubectl get events。

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl get events
    

输出包括与您的管理服务相关的信息、警告和错误。

删除用户集群

如需删除用户集群,请执行以下步骤:

  1. 在 anthos-aws 目录中,使用 anthos-gke 将上下文切换到管理服务。

    cd anthos-aws
    anthos-gke aws management get-credentials

  2. 使用 kubectl delete 删除包含用户集群的清单。

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl delete -f CLUSTER_FILE
    

    将 CLUSTER_FILE 替换为包含 AWScluster 和 AWSNodePool 对象的清单的名称。例如 cluster-0.yaml。

删除所有用户集群

要删除所有用户集群,请执行以下步骤:

  1. 在 anthos-aws 目录中,使用 anthos-gke 将上下文切换到管理服务。

    cd anthos-aws
    anthos-gke aws management get-credentials

  2. 使用 kubectl delete 从管理服务中删除 AWSNodePool 和 AWSCluster。

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl delete AWSNodePool --all
    env HTTPS_PROXY=http://localhost:8118 \
      kubectl delete AWSCluster --all
    

如需了解详情,请参阅卸载 GKE on AWS。

后续步骤