创建用户集群

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

您可以使用 AWSClusterAWSNodePool 自定义资源预配 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
    

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

  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 组件的网址。

查看集群的状态

如果您应用 AWSClusterAWSNodePool,则管理服务会预配 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-0AWSCluster

    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

后续步骤