若要使用 GKE on AWS 来设置面向外部的负载平衡器,您需要使用集群 ID 标记 VPC 和公共子网。如果您已标记了 VPC 和子网,请跳到启用 Ingress。
准备工作
在开始使用 GKE on AWS 之前,请确保您已执行以下任务:
- 完成前提条件。
GKE on AWS 会要求标记包含负载均衡器端点的子网。AWS on GKE 会自动标记在 AWSCluster 资源的 spec.Networking.ServiceLoadBalancerSubnetIDs 字段中指定的所有子网。
如果您要向用户集群添加额外的子网,或者需要将标记重新应用到现有子网,请执行以下步骤。
- 在 - anthos-aws目录中,使用- anthos-gke将上下文切换到管理服务。- cd anthos-aws anthos-gke aws management get-credentials 
- 使用 - kubectl获取集群的 AWS VPC 的 ID,并将其存储为变量。- export VPC_ID=$(\ env HTTPS_PROXY=http://localhost:8118 \ kubectl get awscluster cluster-0 -o jsonpath='{.spec.networking.vpcID}')
- 使用 - echo检查变量内容。输出类似于- vpc-12345678abcdef0。- echo $VPC_ID
- 将集群 ID 保存到环境变量。 - export CLUSTER_ID=$(\ env HTTPS_PROXY=http://localhost:8118 \ kubectl get awscluster cluster-0 -o jsonpath='{.status.clusterID}')- 您可以使用 - echo检查变量:- echo $CLUSTER_ID- 响应包含您的集群 ID。 - gke-12345678
- 如果您将 GKE on AWS 安装到专用 VPC 中,则可以使用 - aws命令行工具检索子网 ID。- 从以下选项中进行选择: - 公共(如果要在公共子网上公开 Service)。
- 专用(如果要在专用子网上公开 Service)。
- 多个子网(如果要在多个子网上公开 Service)。 
 - 公开- export SUBNET_ID=$(aws ec2 describe-subnets \ --filters "Name=vpc-id,Values=$VPC_ID" "Name=tag:Name,Values=*public*" \ --query "Subnets[*].SubnetId" \ --output text)- 输出内容是包含子网 ID 的对象。它类似于 - subnet-1234abcdefg。您可以使用- echo检查变量:- echo $SUBNET_ID- 响应会包含您的子网 ID。 - subnet-012345678abcdef- 专用- export SUBNET_ID=$(aws ec2 describe-subnets \ --filters "Name=vpc-id,Values=$VPC_ID" "Name=tag:Name,Values=*private*" \ --query "Subnets[*].SubnetId" \ --output text)- 输出内容是包含子网 ID 的对象。它类似于 - subnet-1234abcdefg。您可以使用- echo检查变量:- echo $SUBNET_ID- 响应会包含您的子网 ID。 - subnet-012345678abcdef- 多个子网- 如果您为 AWSNodePool 使用多个子网(例如,如果您使用多个可用性区域),则需要单独标记子网 ID。 - 使用 - aws ec2 describe-subnets检索子网 ID 的列表。- 如需获取所有公共子网的列表,请运行以下命令: - aws ec2 describe-subnets \ --filters "Name=vpc-id,Values=$VPC_ID" "Name=tag:Name,Values=*public*" \ --query "Subnets[*].SubnetId" \ --output text- 如需获取所有专用子网的列表,请运行以下命令: - aws ec2 describe-subnets \ --filters "Name=vpc-id,Values=$VPC_ID" "Name=tag:Name,Values=*private*" \ --query "Subnets[*].SubnetId" \ --output text- 响应会包含您的子网 ID。 - subnet-012345678abcdef subnet-abcdef123456789 subnet-123456789abcdef
- 使用集群 ID 标记您的子网。如果您拥有多个子网,请选择“多个子网”。 - 单个子网- aws ec2 create-tags \ --resources $SUBNET_ID \ --tags Key=kubernetes.io/cluster/$CLUSTER_ID,Value=shared- 多个子网- 针对您的每个子网运行以下命令: - aws ec2 create-tags \ --resources subnet-ids \ --tags Key=kubernetes.io/cluster/$CLUSTER_ID,Value=shared- 将 subnet-ids 替换为子网 ID 列表,以空格分隔。例如 - subnet-012345678abcdef subnet-abcdef123456789 subnet-123456789abcdef。