哈囉大家好,我是古古
在前幾篇文章中,分別去介紹了 Google Cloud 中的 IaaS (Compute Engine)、PaaS (App Engine)、FaaS (Cloud Functions) 這三大經典服務,而這篇文章我們會接著來介紹,在 Google Cloud 中的強力武器,一個兼具 IaaS 和 PaaS 優點的運算服務:Google Kubernetes Engine
在介紹 Google Kubernetes Engine (GKE) 之前,要先跟大家介紹一下什麼是 Docker 和 Kubernetes
所謂的 Docker,就是「把你寫的程式和這隻程式需要的環境,通通裝進一個容器來保存」,達到應用程式之間的隔離
舉例來說,假設我們想要執行某個程式時,最一開始就是要安裝他的環境,譬如說這隻 python 程式要用 python2 來運行,那我們就得先安裝 python2 的環境,但是當我們想要執行另一隻程式時,他需要的可能是 python3 的環境,因此我們就又得跑去安裝 python3 的環境,才能夠回頭來執行那隻程式
但這時候我們可能就會想,明明我們只是想要執行程式啊!但在執行程式之前卻要被 python2 和 python3 這種環境問題給搞崩潰,太不值得了!!
因此就有工程師發想出了 Docker,希望可以透過「容器化」的概念,將程式和這隻程式所需要的開發環境 (ex: python2 或是 python3),通通給包進一個「容器」裡,這樣當別人想要運行這隻程式時,就不需要再去安裝 python 環境了,只需要「直接運行這個容器」,就可以在運行容器中的程式時、又免於被環境折騰的痛苦了
所以 Docker 就是透過 「容器化」 的方式,把「你寫的程式和這隻程式需要的環境,通通裝進一個容器來保存」,因此其他人想要運行你的程式時,就直接運行該容器即可,這樣就可以免除環境安裝的困擾,並且也可以「達到應用層級的隔離」
了解了 Docker 之後,接著就可以接著來看 Kubernetes 的用途
Kubernetes 其實就是「Docker 的集群管理工具」,也就是假設你有 100 個 Docker 的 container 要管理,你就可以使用 Kubernetes 這套工具,來方便你管理這 100 個 Docker container 這樣
另外有趣的是,可能是因為 Kubernetes 的發音實在太長了XD,因此他也常常被簡稱為是 k8s,因此 k8s 和 Kubernetes,他們指的是同一個東西
補充:這邊介紹的僅是 Docker 和 Kubernetes 的概念,其實這部分已經有點偏向 DevOps 維運那邊了,我自己也涉獵不多🥹,大家有興趣可以參考其他 DevOps 大神的文章
了解了 Docker 和 Kubernetes 的概念之後,接著就可以回頭來介紹 Google Kubernetes Engine (GKE) 了!
所謂的 Google Kubernetes Engine (GKE),他其實就只是提供了「雲端版的 Kubernetes」服務,讓大家可以用 Google Kubernetes Engine 來管理我們放在雲上的 Docker 們,僅此而已~
前面提到,Google Kubernetes Engine 其實就只是一個「雲端版的 Kubernetes」,讓我們可以使用 Google Kubernetes Engine 去管理雲上的 Docker 們
但是由於 Docker 擁有「容器化」的特性,因此我們是可以很容易的將我們所開發的程式,透過 Docker 的容器化,自己將這些程式去封裝成容器,最後交由 Google Kubernetes Engine 去管理的
也因為如此,所以 Google Kubernetes Engine 既有容器的概念 (有點 PaaS),但是我們又保有客製化容器的能力 (有點 IaaS),因此 Google 自己也把 Google Kubernetes Engine 定位在介於 IaaS 和 PaaS 中間,並且也在官方介紹中提到「It scales like PaaS but gives you nearly the same flexibility as IaaS」,可以說是開發者的超強力武器!!
補充:這只是我的個人猜想,我猜可能是因為 Google Kubernetes Engine 的推出,所以 App Engine 才會漸漸式微,畢竟 Google Kubernetes Engine 可是兼具了 IaaS 和 PaaS 的優點,因此 App Engine 這種限制較多的經典 PaaS 服務,相對就比較沒人在使用了
如上所述,Google Kubernetes Engine 兼具了 IaaS 的客製化能力,但也保有了 PaaS 優秀的容器化管理,因此讓 Google Kubernetes Engine 成為了一個強力的開發工具
由於 Google Kubernetes Engine 是建立在 Docker 和 Kubernetes 之上,因此要使用這項強力武器就會需要工程師具備這方面的知識,某種層面來說也是提升了他的使用難度
這篇文章先介紹了 Docker 和 Kubernetes 的概念,接著介紹了 Google Kubernetes Engine 服務的用途,並且介紹了他是如何兼具 IaaS、PaaS 之間的優點,成長為強大的運算服務
介紹完強大的 Google Kubernetes Engine 之後,下一篇文章就會來介紹最後一個常見的運算服務:Cloud Run,相較於 Google Kubernetes Engine 是去融合 IaaS 和 PaaS 的優點,Cloud Run 則是嘗試去強化 FaaS 的功能,那我們就下一篇文章見啦!