本頁面提供快速入門操作說明,協助您建立叢集和節點集區,然後使用 GKE on AWS 部署範例應用程式。
本文適用於想要設定、監控及管理雲端基礎架構的 IT 管理員和操作人員。如要進一步瞭解我們在 Google Cloud 內容中提及的常見角色和範例工作,請參閱「常見的 GKE Enterprise 使用者角色和工作」。
使用 Terraform 快速啟動叢集
您可以使用 Terraform 建立叢集和節點集區。在建立叢集前,Terraform 指令碼也會準備 AWS 虛擬私有雲。
如要進一步瞭解 AWS 環境中的 Terraform,請參閱 Terraform 叢集參考資料和 Terraform 節點集區參考資料。
使用 Terraform 建立 VPC 和叢集後,請跳至「將應用程式部署至叢集」一節,部署範例應用程式。
不使用 Terraform 快速啟動叢集
如要準備 AWS VPC,並建立叢集和節點集區,但不想使用 Terraform,請按照這些操作說明進行。
事前準備
建立叢集前,請先完成必要條件。具體來說,您必須提供下列資源:
- 叢集執行的 AWS 虛擬私有雲。
- 最多可為三個控制層備用資源提供三個 AWS 子網路。每個執行個體都必須位於不同的 AWS 可用區。
- GKE on AWS 管理叢集時擔任的 AWS IAM 角色。這需要一組特定的身分與存取權管理權限。
- 用於叢集資料 (etcd) 和設定靜態加密的 KMS 對稱 CMK 金鑰。
- 每個控制層副本的 AWS IAM 執行個體設定檔。這需要一組特定的 IAM 權限。
- EC2 安全殼層金鑰組 (選用),如果您需要透過安全殼層存取執行各個控制平面副本的 EC2 執行個體。
您必須負責建立及管理這些資源,這些資源可供所有 GKE on AWS 叢集共用。所有其他基礎叢集範圍的 AWS 資源,都由 GKE on AWS 管理。
設定 gcloud CLI 的預設設定
使用 gcloud CLI 設定預設專案和 Google Cloud 區域的預設設定。
您的專案會有個專案 ID,也就是該專案的唯一識別碼。建立專案時,您可以使用系統自動產生的專案 ID,或是建立自己的專案 ID。
Google Cloud 區域是管理叢集的位置。例如,us-west1
。詳情請參閱「管理區域」。
設定這些預設設定後,執行 Google Cloud CLI 時就不需要納入這些設定。您也可以將 --project
和 --location
旗標傳遞至 Google Cloud CLI,指定設定或覆寫預設設定。
設定預設專案和位置後,系統就會在您建立 GKE on AWS 資源時,自動在該專案和位置中建立資源。
如要設定預設值,請按照下列步驟操作:
設定預設專案:
gcloud config set project PROJECT_ID
將
PROJECT_ID
替換為您的專案 ID。設定預設管理位置:
gcloud config set container_aws/location GOOGLE_CLOUD_LOCATION
將
GOOGLE_CLOUD_LOCATION
替換為您的位置,例如us-west1
。
選取叢集的 CIDR 範圍
Kubernetes 需要為叢集提供兩個 CIDR 範圍。請選擇這些 CIDR 範圍,確保不會與 VPC 子網路使用的 CIDR 範圍重疊。這些範圍應足以容納叢集的最大預期大小。
Pod 位址 CIDR 範圍:建立新的
Pod
時,系統會從這個範圍分配 IP 位址。範例範圍:192.168.208.0/20服務位址 CIDR 範圍:建立新的
Service
時,系統會從這個範圍分配 IP 位址。範例範圍:192.168.224.0/20
建立叢集
使用下列指令,在 AWS 上的 GKE 下建立叢集。如要進一步瞭解這個指令 (包括選用參數),請參閱 gcloud container aws create 參考頁面。
gcloud container aws clusters create aws-cluster-0 \
--cluster-version 1.32.4-gke.200 \
--aws-region AWS_REGION \
--fleet-project FLEET_PROJECT_ID \
--vpc-id VPC_ID \
--subnet-ids CONTROL_PLANE_SUBNET_1,CONTROL_PLANE_SUBNET_2,CONTROL_PLANE_SUBNET_3 \
--pod-address-cidr-blocks POD_CIDR_BLOCK \
--service-address-cidr-blocks SERVICE_CIDR_BLOCK \
--role-arn API_ROLE_ARN \
--iam-instance-profile CONTROL_PLANE_PROFILE \
--database-encryption-kms-key-arn DB_KMS_KEY_ARN \
--config-encryption-kms-key-arn CONFIG_KMS_KEY_ARN \
--tags "google:gkemulticloud:cluster=aws-cluster-0"
更改下列內容:
AWS_REGION
:要在其中建立叢集的 AWS 區域。FLEET_PROJECT_ID
:叢集要註冊的機群主專案VPC_ID
:這個叢集的 AWS 虛擬私有雲 ID,您在「建立虛擬私有雲」必要條件步驟中設定CONTROL_PLANE_SUBNET_1
、CONTROL_PLANE_SUBNET_2
、CONTROL_PLANE_SUBNET_3
:您在建立私人子網路必要條件步驟中建立的叢集三個控制平面執行個體子網路 IDPOD_CIDR_BLOCK
:叢集 Pod 的 CIDR 位址範圍SERVICE_CIDR_BLOCK
:叢集服務的 CIDR 位址範圍API_ROLE_ARN
:您在建立 GKE Multi-cloud API 角色必要條件步驟中建立的 GKE Multi-cloud 服務 IAM 角色 ARNCONTROL_PLANE_PROFILE
:與您在「建立控制平面角色」先決條件步驟中選擇的叢集相關聯的 IAM 執行個體設定檔名稱DB_KMS_KEY_ARN
:您在建立 AWS KMS 金鑰先決條件步驟中建立的其中一個 AWS KMS 金鑰的 Amazon 資源名稱 (ARN)- :您在建立 AWS KMS 金鑰先決條件步驟中建立的另一個 AWS KMS 金鑰的 Amazon 資源名稱 (ARN)
CONFIG_KMS_KEY_ARN
如果存在,--tags
參數會將指定的 AWS 標記套用至 GKE on AWS 管理的所有基礎 AWS 資源。這個範例會使用所屬叢集的名稱,為控制層節點加上標記。
建立節點集區
使用下列指令建立節點集區:
gcloud container aws node-pools create pool-0 \
--cluster aws-cluster-0 \
--node-version 1.32.4-gke.200 \
--min-nodes 1 \
--max-nodes 5 \
--max-pods-per-node 110 \
--root-volume-size 50 \
--subnet-id NODEPOOL_SUBNET_ID \
--iam-instance-profile NODEPOOL_PROFILE \
--config-encryption-kms-key-arn CONFIG_KMS_KEY_ARN \
--ssh-ec2-key-pair EC2_KEY_PAIR \
--tags "google:gkemulticloud:cluster=aws-cluster-0"
更改下列內容:
NODEPOOL_SUBNET_ID
:您在建立私人子網路必要步驟中建立的其中一個私人子網路 IDNODEPOOL_PROFILE
:在「建立節點集區 IAM 角色」必要條件步驟中選擇的節點集區,其 EC2 執行個體的 IAM 執行個體設定檔名稱CONFIG_KMS_KEY_ARN
:用於加密使用者資料的 AWS KMS 金鑰 Amazon Resource Name (ARN)EC2_KEY_PAIR
(選用):為安全殼層存取權建立的 EC2 金鑰組名稱 (選用),您在建立安全殼層金鑰組的必要步驟中建立此金鑰組
查看叢集狀態
建立叢集和節點集區後,您可以使用 Google Cloud CLI 或 Google Cloud 控制台查看叢集狀態。如要查看叢集狀態,請選擇使用 Google Cloud CLI 或 Google Cloud 控制台,然後按照下列步驟操作:
gcloud
使用 gcloud container aws clusters describe
指令取得叢集的詳細資料:
gcloud container aws clusters describe CLUSTER_NAME \
--location GOOGLE_CLOUD_LOCATION
更改下列內容:
CLUSTER_NAME
:叢集名稱GOOGLE_CLOUD_LOCATION
:管理叢集的 Google Cloud位置名稱
Google Cloud 控制台
在 Google Cloud 控制台中,前往「Google Kubernetes Engine clusters overview」(Google Kubernetes Engine 叢集總覽) 頁面。
叢集會依名稱和位置列出。
按一下叢集名稱。系統會顯示面板,提供叢集相關資訊,包括狀態和已啟用的功能。
取得叢集的驗證憑證
建立叢集後,您需要取得驗證憑證才能與叢集互動:
gcloud container aws clusters get-credentials aws-cluster-0
這個指令會設定 kubectl
,透過 Connect 閘道存取您建立的叢集。您至少需要一個節點集區才能使用 Connect 閘道,因為這項功能依賴 Connect 代理程式,而該代理程式會在叢集中以部署作業的形式執行。
將應用程式部署至叢集
您已經建立叢集,現在可以將容器化應用程式部署至叢集。在本快速入門導覽課程中,您可以部署範例網頁應用程式 hello-app
。
您可以使用 Kubernetes 物件建立及管理叢集資源。您可以使用 Deployment 物件部署無狀態應用程式,例如網路伺服器。Service 物件會定義從網際網路存取應用程式時的規則和負載平衡器。
建立 Deployment
如要在叢集中執行 hello-app
,請執行下列指令來部署應用程式:
kubectl create deployment hello-server --image=us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
這個 Kubernetes 指令 (kubectl create deployment
) 會建立名為 hello-server
的 Deployment。Deployment 的 Pod 會執行 hello-app
容器映像檔。
在這個指令中:
--image
會指定要部署的容器映像檔。在本例中,指令會從 Artifact Registry 存放區提取範例映像檔:us-docker.pkg.dev/google-samples/containers/gke/hello-app
。:1.0
會指示要提取的特定映像檔版本。如未指定版本,系統會使用標記latest
的圖片。
公開 Deployment
當您部署應用程式之後,就必須對網際網路公開該應用程式,好讓使用者能夠存取。您可以建立 Service 來公開應用程式;Service 就是能對外部流量公開應用程式的 Kubernetes 資源。
如要公開應用程式,請執行下列 kubectl expose
指令:
kubectl expose deployment hello-server --type LoadBalancer --port 80 --target-port 8080
傳入 --type LoadBalancer
標記會為容器建立 AWS 負載平衡器。--port
標記會對網際網路啟用公開通訊埠 80,而 --target-port
標記則會將流量導向應用程式的通訊埠 8080。
負載平衡器的計費方式依據 AWS 負載平衡器定價。
檢查及查看應用程式
使用
kubectl get pods
檢查執行中的 Pod:kubectl get pods
您應該會看到在叢集執行的一個
hello-server
Pod。使用
kubectl get service
檢查hello-server
服務:kubectl get service hello-server
請在上述指令的輸出內容中,複製
EXTERNAL-IP
欄的 Service 外部 IP 位址。在網路瀏覽器上利用外部 IP 位址與公開的通訊埠來查看應用程式:
http://EXTERNAL-IP
您已將容器化網頁應用程式部署至 AWS 上的 GKE。
清除所用資源
刪除應用程式的 Service 和 Deployment:
kubectl delete service hello-server kubectl delete deployment hello-server
執行
gcloud container aws node-pools delete
,刪除節點集區:gcloud container aws node-pools delete pool-0 --cluster aws-cluster-0
執行
gcloud container aws clusters delete
以刪除叢集:gcloud container aws clusters delete aws-cluster-0