基本操作
Last updated
Last updated
當GKE Cluster建立起來之後,後續的操作基本上與K8S幾近相同,所有操作都是透過kubectl來使用,下面簡單介紹一下透過kubectl指令在GKE的環境上建立主機與服務。
GKE在架構上透過Pod來封裝一個以上的container作為部署的最小單位,並且透過deployment來封裝pod,讓pod本身可以被監控與執行scale或rolling update等動作,整體的概念如下圖所示:
Pod封裝container作為部署的最小單位
透過deployment或是relicaset等方式封裝pod運作的細節,如份數等等資訊
最後透過service或是ingress連結對外的開放端口提供服務
而在這之中,GKE為管理整個K8S cluster的角色,透過GKE底層的instance group的操控,即可進一步做到底層資源的橫向擴展。
kubectl提供指令"run"來手動執行單一個pod,可以作為一次性部署或是臨時操作使用。
我們可以簡單的指定image名稱來啟動一個nginx起來...
仔細看,其實該nginx會被封裝到deployment中,而該deployment預設會以剛剛給定的image啟動一個pod
因此跑起來的nginx-app,基本上可以透過deployment來操作scale out與rolling update等動作..
到這個階段,啟動階段所掛載的port是container內部的port,如果想要讓外部可以存取您的nginx,可以透過expose的方式來掛載service到pod上...
操作無誤後,可以透過get service的方式來找到所有expose的設定...
在這個時候,您可以直接登入該container所掛載的位置,並且透過docker ip來做存取,例如:
不過這樣的存取方式僅限於server內部使用,或是具備存取該node權限的服務使用。
如果要完全open您的服務供外部連線使用,需要透過LoadBalancer的參數指定來連線GKE的外部Network Load Balancer,才可以直接讓服務對外。
檢視服務掛載IP後:
此時,service已經有外部的IP位置,可以透過外部IP來存取:
透過剛剛的演練,大概說明了K8S的一些基本操作,包含:
如何啟動一個Deployment,包含使用指定的Image來建立
使用expose來串接service,串接外部Load Balancer
而K8S持續在演化與發展當中,請大家持續關注K8S帶來更好的部署概念!