如要在 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
。