如要在 AWS 上使用 GKE 設定面向外部的負載平衡器,您必須使用叢集 ID 標記 VPC 和公開子網路。如果您已為虛擬私有雲和子網路加上標記,請跳至「啟用 Ingress」。
事前準備
開始使用 GKE on AWS 前,請務必完成下列工作:
- 完成必要條件。
GKE on AWS 需要在含有負載平衡器端點的子網路上加上標記。GKE on AWS 會自動標記 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,可以使用 - aws指令列工具擷取子網路 ID。- 選取下列其中一個選項: - 公開:如要公開子網路上的服務。
- 如要公開私人子網路上的服務,請選取「私人」。
- 多個子網路 (如要在多個子網路上公開服務)。 
 - 公開- 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- 多個子網路- 如果您為 AWSNodePools 使用多個子網路 (例如使用多個可用區),則需要個別標記子網路 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。