將服務容器化這個口號您可能聽過很多次了,那麼將實體機的服務轉換到容器化,該如何做到快速佈建呢?傳統佈建的過程,需要準備許多安裝程序,建置一套 Kubernetes Cluster 環境可能就得花費半個工作天,不熟悉操作的人,也可能需耗費一整天。且從安裝到設定,每個環節都不能出錯,不然就無法將多台工作站串連在一起。

Cloud Shell 是 Google Cloud 上託管資源的一個 Shell 環境,而 Cloud Shell 已預安裝 gcloud 命令行工具kubectl 命令行工具:gcloud 提供 Google Cloud 主要命令介面,kubectl 則為 Kubernetes 叢集運行命令提供主命令行介面。今天,宏庭科技架構師將帶您了解如何透過 Cloud Shell 快速佈建 Google Kubernetes Engine (GKE),就此告別曠日廢時的流程!

 

如何啟動 Cloud Shell? 

Step 1:前往 Google Cloud Console

Step 2:在控制台的右上角,點擊啟用 Cloud Shell 按鈕

Step 3:點擊後會如下圖所示,Cloud Shell 介面已開啟 

 

如何配置 gcloud 工具的默認設定?

使用 gcloud 工具來配置以下默認設置:projectcompute zonecompute region

  • 您的項目具有project ID,它是項目的唯一標識符。首次創建project時,您可以使用自動生成的project ID,也可以創建自己的project ID。
  • compute zone 是您的叢集及其資源所在區域中的某個位置。例如,us-west1-a是us-west區域中的地區。
  • compute region 是您的叢集及其資源所在的區域(例如us-west)。

配置這些默認設置可以更輕鬆地運行gcloud命令,因為gcloud要求您指定要在其中工作的project和compute zone。您還可以在gcloud命令中指定這些設置或使用–project、–zone、–region和–cluster等標誌替換默認設置。在配置默認項目、可用區和區域後創建GKE資源時,這些資源會在該項目、可用區和區域中自動創建。

注意:如果未配置或未指定這些設置,則 gcloud 工具可能會返回錯誤。

 

Step 1:在Cloud Shell 中,設置默認project

gcloud config set project PROJECT_IDs

記得將PROJECT_ID替換為您的project ID

Step 2:設置默認compute zone

gcloud config set compute/zone COMPUTE_ZONE

記得將COMPUTE_ZONE替換為您的compute zone,例如asia-east1-a

Step 3:設置默認compute region

gcloud config set compute/region COMPUTE_REGION

將COMPUTE_REGION替換為您的compute region,例如asia-east1

 

如何創建 GKE Cluster?

一個cluster包含至少一台cluster控制層面機器以及多台工作器機器,這些工作器機器稱為“Nodes”。Nodes是運行Kubernetes進程的Compute Engine虛擬機;必須有這些進程,節點才能加入到cluster中。您將應用部署到cluster,該應用在Nodes上運行。

如需在GKE中創建cluster,您需要選擇一種操作模式:標準版或Autopilot。如果您使用標準模式,則您的cluster是地區級(在本教學中)。如果使用Autopilot 模式,則您的cluster為區域級。

 

Step 1:創建名為hello-cluster的單節點標準cluster

gcloud container clusters create hello-cluster –num-nodes=1

 cluster創建過程可能需要幾分鐘才能完成

Step 2:創建cluster後,您需要獲取身份驗證憑據才能與該cluster交互

gcloud container clusters get-credentials hello-cluster

此命令將命令行工具(kubectl)配置為使用您創建的cluster。

 

如何將應用部署到 Cluster?

現在您已創建了一個cluster,可以向其部署容器化應用了。在本教學中,您可以部署官方提供的hello-app範例Web應用。GKE使用Kubernetes對象創建和管理cluster的資源。Kubernetes提供了Deployment對象,用於部署Web服務器等無狀態應用。Service對象則用於定義從網際網路訪問您的應用時需要遵循的規則和負載平衡機制。

 

Step 1:創建Deployment

如需在cluster中運行hello-app,您需要運行以下命令來部署應用:

kubectl create deployment hello-server –image=gcr.io/google-samples/hello-app:1.0

此Kubernetes命令kubectl create deployment會創建名為hello-server的Deployment。此Deployment的Pod運行hello-app容器映像。

 –image指定了要部署的容器映像。在本範例中,該命令會從Container Registry存儲分區中拉取示例映像gcr.io/google-samples/hello-app

:1.0指示要拉取的特定映像版本。如果您未指定版本,則系統會使用最新版本。

Step 2:公開Deployment

部署應用後,您需要將其公開到網際網路,以便使用者存取該應用。您可以透過創建Service 來公開應用,這是一種 Kubernetes 資源,可以將您的應用公開給外部流量。

如需公開您的應用,請運行以下kubectl expose命令:

kubectl expose deployment hello-server –type LoadBalancer –port 80 –target-port 8080

傳入–type LoadBalancer標誌會為您的容器創建 Compute Engine 負載平衡器。

–port標誌會初始化連接到j網際網路的公共端口80

–target-port標誌會將流量路由到應用的端口8080

負載平衡器按 Compute Engine 的負載平衡器價格計費。

Step 3:檢查和查看應用

使用kubectl get pods檢查正在運行的Pod

kubectl get pods

您應該會看到一個hello-serverPod正在您的叢集上運行。

使用kubectl get service檢查hello-serverService

kubectl get service hello-server

從此命令的輸出結果的EXTERNAL-IP列中,複製Service的外部IP地址。

在您的瀏覽器中使用外部IP 地址及公開的端口查看應用

http://EXTERNAL_IP

也可以點擊GKE Service 與 Ingress頁面中,我們所建立的Service的端點開啟服務位置

下面為瀏覽器打開之後的畫面:

這樣我們就學會了如何建置GKE cluster,並部署一個簡單的服務。

 

如何清理?

最後為避免系統因本教學中使用的資源向您的Google Cloud 帳號收取費用,請按照以下步驟操作。

Step 1:運行kubectl delete以刪除應用的Service

kubectl delete service hello-server

此命令會刪除您在公開Deployment 時創建的Compute Engine 負載平衡器。

Step 2:運行gcloud container clusters delete以刪除您的叢集

gcloud container clusters delete hello-cluster

注意:如果您未設置默認地區或區域,將叢集的區域(–region=COMPUTE_REGION) 或地區 (–zone=COMPUTE_ZONE)標誌添加到gcloud工具。



您已經學會透過 gcloud 和 kubectl CLI 指令的方式,在數分鐘內快速佈建 GKE 環境!告別了冗長的佈建工作,您日後只需要專注於在 Container 中的應用程式開發即可。想了解更多 Google Cloud 的隱藏版實用功能,請持續鎖定宏庭架構師專欄,讓您新知訊息接不完喔!