為了縮小開發者在本機或是Kubernetes叢集開發應用程式的環境差異,Google對Minikube以及Skaffold開源專案進行更新貢獻,除了讓本機端的Kubernetes支援GPU工作負載外,現在Skaffold還能自動部署Java應用程式。

由於現在機器學習和其他計算密集的應用程式越來越盛行,同時也增加了對GPU硬體加速的需求,但是Google提到,目前缺乏對本機Kubernetes開發的GPU支援,而這代表,開發者想要開發和測試GPU應用程式,除非使用不同於生產環境的本機環境進行開發,否則就是要使用遠端的開發環境,而這將產生較長的回饋周期,使得開發測試速度受到限制,而且在不同於生產的環境中進行開發,不只降低生產力也容易產生微小的錯誤。

Minikube允許使用者在本機執行Kubernetes工作負載,而Google為最新的Minikube增加了GPU支援,改善了在Kubernetes上創建GPU工作負載的開發人員體驗。因此現在開發者可以利用工作站空閑的GPU,在Minikube上執行GPU工作。Google提到,目前這項整合只能在Linux上執行,而且仍存在一些硬體限制,僅支援Nvidia的GPU。

另外,開發者把應用程式部署到雲端平臺,可能需要使用Kubernetes LoadBalancer類型創建負載平衡器或是外部IP,而Minikube也支持LoadBalancer類型的模擬行為,目前Minikube會將其以單獨的守護進程執行,並創建網路路由到Minikube虛擬機器,使得主機可以獲得ClusterIP,並複製ClusterIP到ExternalIP網域。

Google提到,目前Java應用程式無法良好的相容於Kubernetes,除了建構時間緩慢,而且重載應用程式以部署更新的程序非常麻煩。為此去年Google發布了Jib,能將Java應用程式簡單的容器化,使用Jib不需要安裝Docker、執行Docker守護進程或是編寫Dockerfile。而現在Google對Skaffold做出更新,讓Jib成為Kubernetes持續開發命令列工具Skaffold中的建置器。

使用者可以將Skaffold與使用Jib插件配置的Maven或Gradle專案一起使用,Skaffold使用Jib以容器化JVM應用程式,並在偵測到更新時將其部署至Kubernetes叢集,這將免除了開發者繁雜的手續,可以專心的執行開發工作。只需要將jibMaven或是jibGradle添加到skaffold.yaml中,就能夠自動持續部署Java應用程式到Kubernetes叢集中。

Skaffold還提供了檔案同步功能,當開發者只想處理一個簡單的網頁應用程式,小幅度修改了一個HTML文件,重建並且重新部署應用程式顯得過於缺乏效率,Skaffold可以只將新版的檔案注入到正在執行的容器中,藉此大幅提升更新效率。


Advertisement

更多 iThome相關內容