上一回硬將 Docker-compose file 用落 K8s,而且是無法設定的 single node cluster 模式,還有煩人 database lock 問題未解決,用來開發還好,但用在 production 上,無法接受。
一邊看 GCP 有甚麼可以設定,一邊解說功能及使用方法,這次主要說 Kubernetes Engine。
流程︰
———————————簡易的分隔線————————————
首先建立或登入您的 Google 帳戶
https://javatoybox.blogspot.com/2017/05/GoogleACApply.html
申請 Google Cloud Platform 前,請確保信用卡。假如持有香港身份證,但不能申請信用卡 ( 如學生 ),有 Tab & Go ( 拍住賞 ) 這個選擇, 是 HKT Payment Limited 旗下公司,別用 TNG,是不同公司。
需要用 prepaid 版 Mastercard 這個功能,TNG 沒有這種服務。保險起見,卡裡最好有 $100 HKD ( Tab & Go 最少增值金額 )。
[以正視聽] TNG =/= Tap and Go
https://lihkg.com/thread/581723/page/1
Mastercard® 預付卡發卡機構
https://www.mastercard.com.hk/zn-hk/consumers/find-card-products/prepaid-cards/prepaid-card-issuers.html
填上卡號等資料,按【開始免費試用】,手提電話會有訊息,說扣掉你 $1 USD,這會換算成 HKD 顯示,測試信用卡是否正確且能用。
恭喜,成功踏出第一步!
———————————簡易的分隔線————————————
這一步屬於【歸類】動作,編組成 Project、cluster、帳單之類,方便日後資源調配,不用把散落一地的資源及設定,逐一搬弄,只需把標籤好的東西整串移動。
參考官方 Kubernetes Engine Quickstart,最後改裝成使用 Docker hub image 在 Kubernetes Engine 運行。
官方 Kubernetes Engine Quickstart
https://cloud.google.com/kubernetes-engine/docs/quickstart
首先建立 Project,與 Eclipse 概念一樣。
打開選單,設定預算。
設定預算,黃色高亮位置一定要設好!我要免費試,所以設定為 0 元。
———————————簡易的分隔線————————————
不用 Google Cloud SDK,選 Google Cloud Shell 也可以。大部份步驟跟官方 Quickstart 一樣。照官網指示做,完成安裝及嘗試 Deploy。
——————————— ( 補充資訊 start ) ————————————
完美的錯誤示範!以下教學用了香港區伺服及沒有關掉負載平衡,所以不是免費用量。
只有伺服設在美國地區及流量不輸出至中國及澳洲才有額度免費!還有!
「一年免費」或「用過限額」即中止試用!
一律免費的用量限制
https://cloud.google.com/free/docs/always-free-usage-limits
試用中止條件
https://cloud.google.com/free/docs/gcp-free-tier?hl=zh-tw
如果忘了在建立 Cluster 時取消勾選,可在 Google Could Shell 打以下 command 取消 LoadBalance。
gcloud container clusters update tomee-test --zone us-central1-a --update-addons=HttpLoadBalancing=DISABLED
gcloud reference
https://cloud.google.com/sdk/gcloud/reference/container/clusters/update#--update-addons
——————————— ( 補充資訊 end ) ————————————
本教學使用 Google Cloud Shell 作示範,看圖跟著做,應該沒問題,有時候還會自動幫你選好 Project,連下面 command 也可以省。
需要留意 zone 那一部份,注意選用的 zone 有沒有支援特定産品,例如 Cloud Filestore 之類,還有 geographical compute zone,例如香港區的 asia-east2,入面還細分 ︰
如官方教學及本教學圖示,必須設定成 geographical compute zone ( 如需要有限度免費,不要跟足本教學設定地區 ) 才建立 cluster,例如以下 command︰
可以用以下 command 查詢名字︰
Cloud 服務據點
https://cloud.google.com/about/locations/?region=asia-pacific
———————————簡易的分隔線————————————
沒有甚麼特別,只是在建立 cluster 需要點時間,請耐心等待,或用網頁介面建立 cluster,記得取消 LoadBalance 選項,要計費的!
———————————簡易的分隔線————————————
可以設定 mirror,利用 google 提升速度,之後就跟官方教學 command 一樣。
Using Container Registry's Docker Hub mirror
https://cloud.google.com/container-registry/docs/using-dockerhub-mirroring
如上圖示,把服務對外開放。
https://kubernetes.io/docs/tutorials/kubernetes-basics/expose/expose-intro/#objectives
kubectl Command Reference
https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#expose
———————————簡易的分隔線————————————
用以前例子修改成 GKE 應用 ( Port forwarding 版本 )
https://8080-dot-[xxxxxxxx]-dot-devshell.appspot.com/TomEE-JNDI-Derby-Example/datasource.jsp
JNDI + Derby + TomEE Plus 教學
https://javatoybox.blogspot.com/2018/09/jndi-derby-tomee-plus.html#result
———————————簡易的分隔線————————————
把測試完的資源打掃乾淨,請順序使用以下兩個 command。
刪除 deployment︰
———————————簡易的分隔線————————————
一邊看 GCP 有甚麼可以設定,一邊解說功能及使用方法,這次主要說 Kubernetes Engine。
流程︰
- 前期準備︰
- 申請 GCP
- 建立 Project
- 設定帳單
- 安裝 Google Cloud SDK 或使用 Google Cloud Shell
- 開始使用︰
- 設定 project 及 zone
- 建立及授權 cluster
- deploy image 到 cluster
- 測試結果
———————————簡易的分隔線————————————
申請 GCP︰
首先建立或登入您的 Google 帳戶
https://javatoybox.blogspot.com/2017/05/GoogleACApply.html
申請 Google Cloud Platform 前,請確保信用卡。假如持有香港身份證,但不能申請信用卡 ( 如學生 ),有 Tab & Go ( 拍住賞 ) 這個選擇, 是 HKT Payment Limited 旗下公司,別用 TNG,是不同公司。
需要用 prepaid 版 Mastercard 這個功能,TNG 沒有這種服務。保險起見,卡裡最好有 $100 HKD ( Tab & Go 最少增值金額 )。
[以正視聽] TNG =/= Tap and Go
https://lihkg.com/thread/581723/page/1
Mastercard® 預付卡發卡機構
https://www.mastercard.com.hk/zn-hk/consumers/find-card-products/prepaid-cards/prepaid-card-issuers.html
填上卡號等資料,按【開始免費試用】,手提電話會有訊息,說扣掉你 $1 USD,這會換算成 HKD 顯示,測試信用卡是否正確且能用。
恭喜,成功踏出第一步!
———————————簡易的分隔線————————————
準備及設定 Kubernetes Engine︰
這一步屬於【歸類】動作,編組成 Project、cluster、帳單之類,方便日後資源調配,不用把散落一地的資源及設定,逐一搬弄,只需把標籤好的東西整串移動。
參考官方 Kubernetes Engine Quickstart,最後改裝成使用 Docker hub image 在 Kubernetes Engine 運行。
官方 Kubernetes Engine Quickstart
https://cloud.google.com/kubernetes-engine/docs/quickstart
建立 Project︰
首先建立 Project,與 Eclipse 概念一樣。
設定帳單︰
打開選單,設定預算。
設定預算,黃色高亮位置一定要設好!我要免費試,所以設定為 0 元。
———————————簡易的分隔線————————————
安裝 Google Cloud SDK 或使用 Google Cloud Shell︰
不用 Google Cloud SDK,選 Google Cloud Shell 也可以。大部份步驟跟官方 Quickstart 一樣。照官網指示做,完成安裝及嘗試 Deploy。
——————————— ( 補充資訊 start ) ————————————
免費方案限制︰
完美的錯誤示範!以下教學用了香港區伺服及沒有關掉負載平衡,所以不是免費用量。
只有伺服設在美國地區及流量不輸出至中國及澳洲才有額度免費!還有!
「一年免費」或「用過限額」即中止試用!
一律免費的用量限制
https://cloud.google.com/free/docs/always-free-usage-limits
試用中止條件
https://cloud.google.com/free/docs/gcp-free-tier?hl=zh-tw
關閉 HttpLoadBalancing︰
如果忘了在建立 Cluster 時取消勾選,可在 Google Could Shell 打以下 command 取消 LoadBalance。
gcloud container clusters update tomee-test --zone us-central1-a --update-addons=HttpLoadBalancing=DISABLED
gcloud reference
https://cloud.google.com/sdk/gcloud/reference/container/clusters/update#--update-addons
——————————— ( 補充資訊 end ) ————————————
設定 project 及 zone︰
設定 project︰
- gcloud config set project [PROJECT_ID]
設定 compute/zone︰
需要留意 zone 那一部份,注意選用的 zone 有沒有支援特定産品,例如 Cloud Filestore 之類,還有 geographical compute zone,例如香港區的 asia-east2,入面還細分 ︰
- asia-east2-a
- asia-east2-b
- asia-east2-c
如官方教學及本教學圖示,必須設定成 geographical compute zone ( 如需要有限度免費,不要跟足本教學設定地區 ) 才建立 cluster,例如以下 command︰
- gcloud config set compute/zone asia-east2-a
可以用以下 command 查詢名字︰
- gcloud compute zones list
Cloud 服務據點
https://cloud.google.com/about/locations/?region=asia-pacific
———————————簡易的分隔線————————————
建立及授權 cluster︰
沒有甚麼特別,只是在建立 cluster 需要點時間,請耐心等待,或用網頁介面建立 cluster,記得取消 LoadBalance 選項,要計費的!
- gcloud container clusters create tomee-test
- gcloud container clusters get-credentials tomee-test
———————————簡易的分隔線————————————
Deploy image 到 cluster︰
deploy image︰
格式是︰
- kubectl run [SERVICE_NAME] --image [REGISTRY_URL]/[USER_NAME]/[IMAGE_NAME]:[TAG_NAME] --port [TARGET_PORT]
- kubectl run derby-tomee-server --image registry.hub.docker.com/integrityknight/tomee-derby:1.0.1 --port 8080
可以設定 mirror,利用 google 提升速度,之後就跟官方教學 command 一樣。
Using Container Registry's Docker Hub mirror
https://cloud.google.com/container-registry/docs/using-dockerhub-mirroring
提供服務︰
--type=LoadBalancer 版本︰ ( Load Balance 收費的!而且很貴! )
如上圖示,把服務對外開放。
- kubectl expose deployment derby-tomee-server --type=LoadBalancer --port=80 --target-port=8080
https://kubernetes.io/docs/tutorials/kubernetes-basics/expose/expose-intro/#objectives
kubectl Command Reference
https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands#expose
--type=NodePort 版本︰( 做 Port following,不知怎對外開放 )
- kubectl expose deployment derby-tomee-server --type=NodePort --port=8080 --target-port=8080 --name=derby-tomee-service-demo
———————————簡易的分隔線————————————
測試結果︰
用以前例子修改成 GKE 應用 ( Port forwarding 版本 )
https://8080-dot-[xxxxxxxx]-dot-devshell.appspot.com/TomEE-JNDI-Derby-Example/datasource.jsp
JNDI + Derby + TomEE Plus 教學
https://javatoybox.blogspot.com/2018/09/jndi-derby-tomee-plus.html#result
———————————簡易的分隔線————————————
Clean Up︰
把測試完的資源打掃乾淨,請順序使用以下兩個 command。
刪除 deployment︰
- kubectl delete service derby-tomee-server
- gcloud container clusters delete tomee-test
———————————簡易的分隔線————————————
總結︰
沒有 Volume 吧?當然在 GCP 上做法不同,有機會再說,而且 K8s 的 yaml 是怎樣?怎解決 database 沒正確關閉問題?還有強大的 Rolling updates 及 Rollback 都沒學到……
學習 K8s 還有不少距離,才算得上會用。
Storage option
https://cloud.google.com/storage-options/
Performing a Rolling Update
https://kubernetes.io/docs/tutorials/kubernetes-basics/update/update-intro/
Container Lifecycle Hooks
https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#hook-details
下一回【了解及編寫 Kubernetes 的 yaml】
https://cloud.google.com/storage-options/
Performing a Rolling Update
https://kubernetes.io/docs/tutorials/kubernetes-basics/update/update-intro/
Container Lifecycle Hooks
https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#hook-details
下一回【了解及編寫 Kubernetes 的 yaml】
沒有留言:
發佈留言
設有留言驗證及審查,檢閱後,才會顯示留言。
本人惰性很高,留言或許會石沉大海。