KubeSphere 容器平臺(tái) 2.1的Binary-to-Image新功能怎么用,相信很多沒有經(jīng)驗(yàn)的人對(duì)此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。
成都創(chuàng)新互聯(lián)主營鐘山網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,app軟件定制開發(fā),鐘山h5微信小程序搭建,鐘山網(wǎng)站營銷推廣歡迎鐘山等地區(qū)企業(yè)咨詢
Binary-to-image(B2I)是 KubeSphere 容器平臺(tái)在 2.1.0 版本新增的功能,旨在幫助開發(fā)者和運(yùn)維在項(xiàng)目打包成 WAR、JAR、Binary這一類的制品后,快速將制品或二進(jìn)制的 Package 打包成 Docker 鏡像,并發(fā)布到 DockerHub 或 Harbor 等鏡像倉庫中。并且支持以創(chuàng)建服務(wù)的形式,一鍵將制品生成鏡像推送到倉庫,并創(chuàng)建其部署(Deployment)和服務(wù)(Service)最終 自動(dòng)發(fā)布到 Kubernetes 中。
Binary-to-image(B2I)能夠在實(shí)際的項(xiàng)目快速部署上線、微服務(wù)改造的過程中,極大地賦能開發(fā)者和運(yùn)維用戶。B2I 無需編寫一行 Dockerfile,降低學(xué)習(xí)成本的同時(shí)提升發(fā)布效率,使用戶能夠更好地專注在業(yè)務(wù)本身。
下圖簡述了 B2I 的業(yè)務(wù)實(shí)現(xiàn)流程,B2I 已將以下多個(gè)步驟工具化和流程化,因此只需要在一個(gè)表單中完成。
① 在 KubeSphere 創(chuàng)建 B2I 類型的服務(wù),上傳制品或二進(jìn)制包
② B2I 將在后臺(tái)創(chuàng)建 K8s Job、Deployment 和 Service
③ 將制品自動(dòng)打包成 Docker 鏡像
④ 推送鏡像至 DockerHub 或 harbor
⑤ B2I Job 將在第二步創(chuàng)建的 Deloyment 中使用倉庫中的鏡像
⑥ 自動(dòng)發(fā)布至 Kubernetes
說明:在上述流程中,B2I Job 還會(huì)在后臺(tái)執(zhí)行狀態(tài)上報(bào)的功能
接下來用兩個(gè)示例介紹 B2I 的兩種使用方式,本文提供了示例制品 WAR、JAR、Binary 方便實(shí)操。
以下提供 5 個(gè)供測試使用的制品包,您也可以提交個(gè)人打包的測試項(xiàng)目到 KubeSphere 社區(qū)。
示例包 | 示例項(xiàng)目(代碼倉庫) |
---|---|
b2i-war-java8.war | Spring-MVC-Showcase |
b2i-war-java11.war | SpringMVC5 |
b2i-binary | DevOps-go-sample |
b2i-jar-java11.jar | java-maven-example |
b2i-jar-java8.jar | devops-java-sample |
第一個(gè)示例將使用創(chuàng)建服務(wù)的方式實(shí)現(xiàn) B2I,實(shí)現(xiàn)上圖的 6 個(gè)步驟。在 2.1.0 版本中,創(chuàng)建服務(wù)的方式和用戶體驗(yàn)相較于 2.0.x 版本變得更加方便和高效。
B2I 屬于 DevOps 功能組件,因此使用前需開啟安裝 DevOps 組件。
由于 B2I 的自動(dòng)構(gòu)建流程中需要將打包的 Docker 鏡像推送到鏡像倉庫,因此需要先創(chuàng)建一個(gè)鏡像倉庫的密鑰(Secret),以下創(chuàng)建一個(gè) DockerHub 的密鑰,可參考 創(chuàng)建常用的幾類密鑰。
在 應(yīng)用負(fù)載 → 服務(wù)
下點(diǎn)擊 創(chuàng)建服務(wù)
。
下拉至 通過制品構(gòu)建新的服務(wù)
,選擇 WAR
,此處僅以一個(gè) Spring-MVC-Showcase 的項(xiàng)目倉庫作為示例,將它的 WAR 包(b2i-war-java8)b2i-war-java8.war 上傳到 KubeSphere。
自定義名稱,如 b2i-war-java8
,下一步構(gòu)建設(shè)置中,默認(rèn)無狀態(tài)服務(wù),點(diǎn)擊將本地的制品 b2i-war-java8.war
上傳,構(gòu)建環(huán)境選擇 tomcat85-java8-centos7:latest
。
鏡像名稱為
,tag 默認(rèn) latest,目標(biāo)鏡像倉庫選擇已創(chuàng)建的 dockerhub-secret
。
下一步容器設(shè)置,鏡像名稱和端口名稱可自定義,容器端口與 服務(wù)端口填寫 tomcat 默認(rèn)的 8080
。
由于是無狀態(tài)服務(wù),因此跳過掛載存儲(chǔ)。
在高級(jí)設(shè)置中勾選外網(wǎng)訪問
,并設(shè)置為 NodePort
,點(diǎn)擊 創(chuàng)建
。
B2I 創(chuàng)建完成后,在 構(gòu)建鏡像
下查看 B2I 的構(gòu)建狀態(tài),包括執(zhí)行記錄(動(dòng)態(tài)日志)、資源狀態(tài)、鏡像制品、環(huán)境變量和 Events。
查看構(gòu)建鏡像
查看服務(wù)
查看部署狀態(tài)
查看任務(wù)執(zhí)行狀態(tài)
若您習(xí)慣使用 kubectl 命令行,也可以通過 工具箱 → Web Kubectl
通過 kubectl get all -n PRJECT_NAME
來查看 b2i 具體創(chuàng)建了哪些資源。
web kubectl 查看資源
從服務(wù)的列表中,可以看到 NodePort 是 30571,因此在瀏覽器通過 <$IP>:<$NodePort>/spring-mvc-showcase/
訪問 Spring-MVC-Showcase 服務(wù)(默認(rèn)的訪問路徑 <$IP>:<$NodePort>
是 tomcat 服務(wù))。
登錄 DockerHub 賬號(hào),查看 B2I 自動(dòng)推送的 Docker 鏡像。
第一個(gè)示例是以創(chuàng)建服務(wù)的方式完成了 B2I,最終將 Spring-MVC-Showcase 的 WAR 包打包成鏡像后部署到了 Kubernetes。而以 構(gòu)建鏡像的方式使用 B2I 更像一個(gè)基于制品自動(dòng)生成鏡像的 快速工具,最終不會(huì)自動(dòng)發(fā)布至 Kubernetes。
以下將使用一個(gè)基于 Go 語言的 示例項(xiàng)目 打包的 Binary 制品 - b2i-binary(點(diǎn)擊下載) ,演示 B2I 的第二種使用方式 - 構(gòu)建鏡像使用 B2I。
1、在 構(gòu)建鏡像
下點(diǎn)擊 創(chuàng)建構(gòu)建鏡像
,然后選擇 binary
。
2、下一步,將下載的 b2i-binary 上傳至 KubeSphere,鏡像名稱可自定義
,目標(biāo)鏡像倉庫選擇已創(chuàng)建的 dockerhub-secret
,點(diǎn)擊 創(chuàng)建
。
驗(yàn)證 B2I 狀態(tài)
查看任務(wù)
登錄 DockerHub 賬號(hào),查看 B2I 自動(dòng)推送的 Docker 鏡像。
您可以根據(jù)需求使用上述兩種不同的方式來完成 B2I 的自動(dòng)鏡像構(gòu)建。一般來說,像 Java 語言的項(xiàng)目,可以通過 mvn package
命令打成 JAR/WAR 包,而像 C、C++ 和 Go 這類不需要運(yùn)行時(shí)的語言,可以使用其語言自身的 build 命令打包成 binary 格式的制品,最終就可以通過 KubeSphere B2I 來快速將制品打包成 Docker 鏡像,并發(fā)布到鏡像倉庫和 Kubernetes 中。而像 Python、Nodejs 和 PHP 這類腳本式語言的項(xiàng)目,可以通過 KubeSphere Source-to-Image(S2I) 完成類似 B2I 的自動(dòng)構(gòu)建與發(fā)布。
KubeSphere (https://github.com/kubesphere/kubesphere) 是一個(gè)開源的以應(yīng)用為中心的容器管理平臺(tái),支持部署在任何基礎(chǔ)設(shè)施之上,并提供簡單易用的 UI,極大減輕日常開發(fā)、測試、運(yùn)維的復(fù)雜度,旨在解決 Kubernetes 本身存在的存儲(chǔ)、網(wǎng)絡(luò)、安全和易用性等痛點(diǎn),幫助企業(yè)輕松應(yīng)對(duì)敏捷開發(fā)與自動(dòng)化監(jiān)控運(yùn)維、端到端應(yīng)用交付、微服務(wù)治理、多租戶管理、多集群管理、服務(wù)與網(wǎng)絡(luò)管理、鏡像倉庫、AI 平臺(tái)、邊緣計(jì)算等業(yè)務(wù)場景。
看完上述內(nèi)容,你們掌握KubeSphere 容器平臺(tái) 2.1的Binary-to-Image新功能怎么用的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!