若要使用 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
。