概述
Google Kubernetes Engine (GKE) 提供了一個 Google 管理的環境,這個環境可使用 Google 的基礎設施來部署,管理容器化應用,以及調整容器化應用的規模大小。 Kubernetes Engine 環境包含了多台的機器(這邊專指為 Google Compute Engine 的實例),形成一個容器的叢集。
在這個課程中,你將可以實際操作練習如何建立一個容器,以及在 GKE 上部署你的應用。
前言
本篇為 GCP Kubernetes Engine 的學習筆記
Kubernetes Engine 的叢集管理
Kunernetes Engine 叢集器由 Kunernetes 開源叢集管理系統所提供。Kubernetes 提供與你的容器叢集互動的機制。使用Kebernetes的指令以及資源來部署、管理你的應用,執行管理任務、制訂政策,以及監控部屬工作量的健康度。
Kubernetes 使用了與目前運行在 Google 熱門服務相同的設計原則,並提供相同的優勢:
自動管理, 應用容器的監控以及健康檢查, 自動擴展, 滾動升級, 以及更多…
當你在一個容器叢集中運行你的應用, 相當於你使用了 Google 這10幾年正式在容器內上線的經驗來運行你的應用。
Kubernetes on Google Cloud Platform
當你使用Kubernetes Engine 叢集,你同時也得到了 Google Cloud Platform 提供的優勢以及進階的叢集管理功能, 如下:
- Compute Engine 實例的平衡負載
- 節點池:在叢集內分配子集節點以提升靈活度
- 叢集節點實例數量的自動擴展
- 叢集節點軟體的自動升級
- 節點自動修復:保持節點的健康度以及可用性
- 使用 Stackdriver 來紀錄與監控,讓您可以掌握叢集的狀態
現在你已經對 Kubernetes 有基本的認識,你將在30分鐘內,學習如何使用 Kubernetes Engine 來部署你的容器化應用。
繼續往下看並遵照每一個步驟來設定你的Lab環境。
設定及要求
在你按下 Start Lab 按鈕之前
詳讀所有的教學。Labs 是有時間限制的,而且你不可以停止時間倒數。倒數計時器在你按下 Start Lab 按鈕後開始倒數,上面顯示的時間為你還能使用 Cloud 資源的時間。
Qwiklabs 的手把手環境,讓你可以在真實環境中來操作進行 Qwiklabs 上提供的課程,而不是在一個模擬或是展示的環境。我們透過提供你一個全新的、暫時的帳號密碼,在計時器歸零之前,你可以用來登入並存取 Google Cloud Platform。
你需要什麼?
要完成這個 lab ,你需要:
- 一個一般的網路瀏覽器(推薦 Chrome)
- 完成這個 lab 的時間
備註: 如果你已經有你自己的個人 GCP 帳號或專案,請不要使用在這一個 lab
現在你已經開始你的 lab
, 你將會登入 Google Cloud Shell
主控台,然後開啟命令列工具
如何開始你的 lab ,然後登入 Console?
- 按下 Start Lab 按鈕。如果你需要付費,會有一個彈出視窗來讓你選擇付費的方式。在左方你會看到一個面板,上面有暫時的帳號密碼,你必須使用這些帳號密碼在此次 lab
- 複製
username
, 然後點擊Open Google Console
。 Lab 會開啟另外一個視窗,顯示選擇帳號
的頁面
tip: 開啟一個全新的視窗,然後跟原本的頁面並排
- 在
選擇帳號
頁面, 點擊Use Another Account
- 登入頁面開啟,貼上之前複製的
username
以及password
,然後貼上
重要:必須使用之前於 Connection Details 面板
取得的帳號密碼,不要使用你自己的 Qwiklabs 帳號密碼。 如果你有自己的 GCP 帳號,請不要用在這裡(避免產生費用)
- 點擊並通過接下來的頁面:
- 接受
terms
以及conditions
- 不要增加
recovery optoins
或two factor authentication
(因為這只是一個臨時帳號) - 不要註冊免費體驗
- 接受
稍待一些時候, GCP 控制台將會在這個視窗開啟。
注意:按下左上方位於Google Cloud Platform
隔壁的 Navigation menu
,你可以瀏覽選單,裡面有一系列的 GCP 產品以及服務
啟動 Google Cloud Shell
Google Cloud Shell
是載有開發工具的虛擬機器。它提供了5GB的 home 資料夾,並且運行在 Google Cloud
上。 Google Cloud Shell
讓你可以利用 command-line 存取 GCP
資源
- 在
GCP 控制台
,右上的工具列,點擊Open Cloud Shell
按鈕
- 在打開的對話框裡,按下
START CLOUD SHELL
:
你可以立即按下 START CLOUD SHELL
當對話視窗打開。
連結並提供環境會需要一點時間。當你連結成功,這代表你已成功獲得授權,且此專案已被設為你的專案ID,例如:
gcloud 是 Google Cloud Platform
的 command-line 工具,他已事先被安裝在 Cloud Shell
並且支援自動補齊
使用這個 command ,你可以列出有效帳戶名稱:
gcloud auth list |
輸出:
Credentialed accounts: |
範例輸出:
Credentialed accounts: |
你可以使用以下 command 來列出專案 ID
gcloud config list project |
輸出:
[core] |
範例輸出:
[core] |
gcloud
的完整文件可以參閱 Google Cloud gcloud Overview
設定一個預設的 compute zone
你的 [compute zone] 是一個你的叢集以及其資源大概所在的一個位置。 例如說, us-central1-a
是一個位於 us-central1
region 的 zone
在 Cloud Shell 開始一個新的區塊,並且依照下面的指令來將你的預設 compute zone 設定為 us-central1-a
gcloud config set compute/zone us-central1-a |
你將會收到以下的輸出
Updated property [compute/zone]. |
建立一個 Kubernetes Engine 叢集
一個叢集包含至少一個叢集主要機器,以及多台工作機器,稱為 nodes
(節點)。 Nodes
是 Compute Engine 虛擬機器實例,運行著 Kubernetes
的必要程序,使他們成為叢集的一部分。
執行以下的 command 來建立一個叢集。以你喜歡的叢集名稱(例如: my-cluster
)來取代 command 中的 CLUSTER-NAME
。
叢集的名稱必須由一個字母開始,並且需同時包含字母以及數字,且長度不可超過40個字。
gcloud container clusters create [CLUSTER-NAME] |
你可以無視輸出裡的任何警告。
建立叢集會需要一些時間,很快的你將會收到類似下面的輸出:
NAME LOCATION ... NODE_VERSION NUM_NODES STATUS |
點擊 Check my progress 來確認目前的進度。
取得叢集的授權證明
在建立叢集之後,你需要取得授權證明來進行對叢集的進一步操作
執行下面的 command 來授權叢集,並用你自己的叢集名稱取代 command 裡面的 CLUSTER-NAME
gcloud container clusters get-credentials [CLUSTER-NAME] |
你將會收到類似下面的輸出:
Fetching cluster endpoint and auth data. |
部署應用到叢集上
現在你已經建立了一個叢集,你可以部署一個容器化的應用到這上面。在這個 Lab ,你將會部署 hello-app
到你的叢集上
Kubernetes Engine
使用 Kubernetes 物件來建立以及管理你的叢集資源。 Kubernetes 提供 部署 物件來部署無狀態的應用,像是 web server。服務物件定義了從網路上存取你應用的規則,以及負載平衡。
在 Cloud Shell
執行下面的 [kubectl run] 指令,從 hello-app
容器鏡像建立一個新的部署 hello-server
kubectl run hello-server --image=gcr.io/google-samples/hello-app:1.0 --port 8080 |
你應該會收到以下的輸出:
deployment.apps "hello-server" created |
這一個 Kubernetes 的指令,建立了一個代表 hello-app
的部署物件,在此指令中:
--image
指定了一個容器鏡像來部署,在此範例中,這個指令從Google Container Registry儲存區裡,拉下一個範例鏡像。gcr.io/google-samples/hello-app:1.0
表示一個特定的鏡像。如果版本沒有明確標示,最新的版本將會被使用。--port
指定容器暴露的 port 號
執行以下的 kubectl 暴露指令,建立一個 Kubernetes 的服務,一個 Kubernetes 的資源,讓你暴露你的應用到外部。
kubectl expose deployment hello-server --type="LoadBalancer" |
你應該會收到以下的輸出:
service "hello-server" exposed |
點擊 Check my progress 來確認目前的進度。
帶入參數 type="LoadBalancer"
,在容器中建立一個 Compute Engine
平衡負載
執行 kubectl get 來檢查 hello-server
服務
kubectl get service hello-server |
你應該會收到類似以下的輸出:
NAME TYPE ... EXTERNAL-IP PORT(S) AGE |
備註:外部IP位址的產生,可能需要1分鐘。如果外部IP一直在沒有產生,你可以在執行一次上面的指令
從這個指令的輸出,從 `EXTERNAL-IP 欄位,複製服務的外部 IP 位址。
從瀏覽器,經由外部 IP 還有對應的 port 號來拜訪我們的應用
http://[EXTERNAL-IP]:8080 |
你的頁面應該看起來如下:
點擊 Check my progress 來確認目前的進度。
清除
執行下面的指令來清除叢集
gcloud container clusters delete [CLUSTER-NAME] |
當選項跳出,輸入 Y 確認。清除叢集將會花費一些時間。你可以參閱 文件 來獲得更多刪除 Google Kubernetes Engine 叢集
的資訊
點擊 Check my progress 來確認目前的進度。
恭喜
你已經完成本教程
留言