基于kuboard部署k8s服務(wù)
前言
昨天我們分享了本地springboot項(xiàng)目構(gòu)建docker鏡像的內(nèi)容,詳細(xì)介紹了springboot項(xiàng)目打包、鏡像構(gòu)建、基于docker啟動(dòng)運(yùn)行的全過(guò)程,這個(gè)技術(shù)雖然不是特別難,但是很實(shí)用,因?yàn)殓R像構(gòu)建完成后,我們不僅可以讓我們的服務(wù)在docker中運(yùn)行,也可以讓它在k8s中運(yùn)行,今天我們就來(lái)看下如何通過(guò)kuboard在k8s上部署我們的服務(wù)。
今天的內(nèi)容以圖片為主,文字說(shuō)明為輔,只有大家按照我的操作流程進(jìn)行操作,一定也可以部署成功。好了,話不多說(shuō),讓我們直接開(kāi)始吧。
kuboard
登錄kuboard控制臺(tái)
在開(kāi)始之前,我們要先登錄kuboard的控制臺(tái),然后選擇需要部署服務(wù)的k8s集群:

選擇登錄角色,這里我們直接以管理員角色登錄:

進(jìn)入對(duì)應(yīng)集群后,選擇要部署服務(wù)的命名空間。在k8s中,所有的pod、service都是基于命名空間進(jìn)行管理的,而且一個(gè)工作空間下的服務(wù)可以直接通過(guò)負(fù)載名稱(chēng)進(jìn)行訪問(wèn),如果跨命名空間訪問(wèn)服務(wù),需要加上對(duì)應(yīng)的命名空間名稱(chēng)。
這里我們選的是默認(rèn)的工作空間default,點(diǎn)擊命名空間即可進(jìn)入命名空間內(nèi)部:

創(chuàng)建服務(wù)
在命名空間內(nèi)部,我們可以構(gòu)建我們的工作負(fù)載(大家要慢慢習(xí)慣這個(gè)叫法)。點(diǎn)擊中間的懸浮菜單常用操作

在展開(kāi)的選項(xiàng)中選擇創(chuàng)建工作負(fù)載菜單,進(jìn)入工作負(fù)載創(chuàng)建頁(yè)面

填寫(xiě)負(fù)載基本信息
首先填寫(xiě)工作負(fù)載的基本信息。工作負(fù)載類(lèi)型我們選擇第一個(gè)部署,通常我們的服務(wù)和組件都選擇這個(gè);工作負(fù)載分層可以根據(jù)自己的服務(wù)類(lèi)型進(jìn)行選擇,這個(gè)選項(xiàng)只是為了方便管理,分層之后會(huì)在控制面板的不同區(qū)域顯示

工作負(fù)載的名稱(chēng)要唯一,不能重復(fù),而且不能有中文,后面我們?cè)L問(wèn)服務(wù)的時(shí)候就是通過(guò)負(fù)載名稱(chēng)+端口進(jìn)行訪問(wèn)的,描述信息可以隨便填寫(xiě)

填寫(xiě)容器信息
基本信息填寫(xiě)完成后,切換到容器信息填寫(xiě)頁(yè)面。這里創(chuàng)建容器,經(jīng)過(guò)我的試驗(yàn),初始化容器可以不創(chuàng)建,但是工作容器必須創(chuàng)建,否則無(wú)法提交表單

我們直接創(chuàng)建工作容器,然后填寫(xiě)容器信息。這里的容器名稱(chēng),一般和基本信息保持一致就行了,雖然沒(méi)有要求,但是不一致的話,不利于后期管理;這一塊的配置中,容器鏡像是最重要的內(nèi)容,而且要確保鏡像存在,否則在后面容器啟動(dòng)的時(shí)候會(huì)報(bào)錯(cuò)。

這里的鏡像配置的內(nèi)容和我們docker pull 鏡像名稱(chēng)的鏡像名稱(chēng)是一樣的,我們以zookeeper為例,我們拉取鏡像的命令是這樣的:
docker pull zookeeper:latest
所以我們這里配置的就是zookeeper:latest;大家注意右側(cè)的imagePullSecret配置,這個(gè)配置是方便我們配置私有鏡像倉(cāng)庫(kù),例如很多公司都基于harbor搭建了私有的鏡像倉(cāng)庫(kù),這里就配置harbor的配置。

然后,記得指定下容器的端口,否則我們是服務(wù)訪問(wèn)容器中的服務(wù)或組件的。
鏡像的拉取策略,設(shè)置的是拉取的條件,第一個(gè)選項(xiàng)始終拉取新鏡像,表示任何時(shí)候只要你重啟了容器都會(huì)從鏡像倉(cāng)庫(kù)拉取鏡像,不論本地是否已經(jīng)有鏡像;第二個(gè)選項(xiàng)表示當(dāng)本地沒(méi)有鏡像的時(shí)候,才拉取鏡像;第三個(gè)選項(xiàng)表示從不拉取鏡像,但當(dāng)鏡像不存在則會(huì)報(bào)錯(cuò)。大家可以根據(jù)自己的需要設(shè)置,一般對(duì)于第三方組件,或者不經(jīng)常變更的鏡像,我們都選擇第二個(gè)。

配置服務(wù)路由
這里也是很關(guān)鍵的一步,如果不設(shè)置路由的話,我們是沒(méi)辦法通過(guò)負(fù)載名稱(chēng)訪問(wèn)服務(wù)的,雖然通過(guò)ip地址也能訪問(wèn),但是容器重啟后,ip地址會(huì)發(fā)生變化,所以必須配置路由。
這里只需要選擇clusterIP,然后指定端口映射即可

服務(wù)控制面板
點(diǎn)擊保存后,會(huì)進(jìn)入服務(wù)的控制面板,控制面板處理常用的操作菜單外,還會(huì)顯示服務(wù)的運(yùn)行狀況信息:

如果在右側(cè)事件顯示區(qū)域,有如下顯示,表明你的服務(wù)鏡像配置有誤,可以點(diǎn)擊編輯菜單進(jìn)行修改:

有時(shí)候頁(yè)面內(nèi)容長(zhǎng)時(shí)間未變化,可以點(diǎn)擊上部的刷新菜單進(jìn)行刷新。如果提示容器已就緒,說(shuō)明我們的服務(wù)已經(jīng)部署啟動(dòng)成功,這時(shí)候我們可以點(diǎn)擊容器下部的菜單對(duì)容器進(jìn)行管理。

追蹤日志菜單可以實(shí)時(shí)展示容器中服務(wù)的日志信息,點(diǎn)擊后會(huì)打開(kāi)新頁(yè)面,內(nèi)容顯示如下,頁(yè)面支持搜索,還可以設(shè)置是否滾動(dòng)

bash和sh沒(méi)有本質(zhì)區(qū)別,都是進(jìn)入容器的linux控制臺(tái),點(diǎn)擊對(duì)應(yīng)菜單后,會(huì)打開(kāi)如下頁(yè)面

下載日志菜單,可以下載容器中的日志文件,也就是我們跟蹤日志顯示的日志,可以根據(jù)自己的需要進(jìn)行下載:

補(bǔ)充內(nèi)容
下面這張圖片很好地展示了配置路由器和配置路由后的訪問(wèn)情況,配置路由前,我們?cè)L問(wèn)activemq-k8s,提示無(wú)法解析主機(jī),但當(dāng)我們添加路由配置后,再次訪問(wèn),發(fā)現(xiàn)這時(shí)候activemq-k8s已經(jīng)可以正常解析了,而且返回了頁(yè)面內(nèi)容。
為了更好地測(cè)試命名空間內(nèi)服務(wù)間的通信,我這里構(gòu)建了兩個(gè)服務(wù),一個(gè)是zk,一個(gè)是mq,然后在mq的控制臺(tái)訪問(wèn)zookeeper-k8s,雖然無(wú)法正常訪問(wèn),但可以看到名稱(chēng)已經(jīng)被正常解析,說(shuō)明路由是沒(méi)有問(wèn)題的

在zk控制臺(tái)訪問(wèn)activemq-k8s效果也是一樣的,由于容器的linux沒(méi)有ping和curl,我只能用wget命令了:

容器配置導(dǎo)出
最后,我們?cè)僦v一下容器的導(dǎo)出。導(dǎo)出主要是為了備份,如果特殊原因?qū)е?code style="overflow-wrap: break-word;padding: 2px 4px;border-radius: 4px;margin-right: 2px;margin-left: 2px;background-color: rgba(27, 31, 35, 0.05);font-family: "Operator Mono", Consolas, Monaco, Menlo, monospace;word-break: break-all;color: rgb(255, 100, 65);">k8s崩潰(前段時(shí)間,我們測(cè)試環(huán)境就發(fā)生過(guò),有人把k8s集群搞壞了,然后集群被刪除了),這時(shí)候如果從頭再配置,不僅浪費(fèi)時(shí)間,而且好多配置你也記不清楚了。
但如果你之前備份過(guò),那直接可以通過(guò)備份的yaml文件重新構(gòu)建容器,這樣效率更高,而且不容器出錯(cuò)。上次一也是因?yàn)槲姨崆皞浞葸^(guò),所以除了我們項(xiàng)目,其他組都花了好久才把環(huán)境重新部署好。
備份的方式也很簡(jiǎn)單,首先命名空間首頁(yè),點(diǎn)擊懸浮菜單,選擇導(dǎo)出工作負(fù)載


選擇需要導(dǎo)出的負(fù)載

下一步,然后選擇需要導(dǎo)出的服務(wù)

然后一直下一步,最后點(diǎn)擊確認(rèn),到這里負(fù)載文件就導(dǎo)出完成了。

導(dǎo)出的文件長(zhǎng)這個(gè)樣子,是標(biāo)準(zhǔn)的yaml文件

導(dǎo)入負(fù)載
導(dǎo)入負(fù)載也很簡(jiǎn)單,導(dǎo)入方式有兩種,第一種直接點(diǎn)擊左側(cè)導(dǎo)入工作負(fù)載菜單,然后選擇導(dǎo)入文件,點(diǎn)擊確定就可以了,剩下的就是等待,等待容器啟動(dòng)完成。

另一種方式是點(diǎn)擊左側(cè)從yaml創(chuàng)建菜單,這里主要是針對(duì)單個(gè)負(fù)載,多個(gè)負(fù)載我沒(méi)有試過(guò)。

然后把我們負(fù)載yaml內(nèi)容賦值進(jìn)去,點(diǎn)擊確定即可,然后也是漫長(zhǎng)的等待。

好了,到這里,今天的內(nèi)容就全部結(jié)束了,圖片雖然多,但是都是實(shí)打?qū)嵉母韶洠袟l件的小伙伴自己動(dòng)手試下吧。
總結(jié)
今天我們主要分享了基于kuboard管理k8s容器的一些基本的常用操作,包括服務(wù)部署、日志查看、負(fù)載導(dǎo)入導(dǎo)出等,雖然簡(jiǎn)單但是很實(shí)用。
總體來(lái)說(shuō),kuboard確實(shí)比k8s官方的控制臺(tái)體驗(yàn)要好,除了顏值高,功能也很強(qiáng)大,而且又是原生的中文支持,確實(shí)很香。
最后我想說(shuō),k8s確實(shí)要比docker優(yōu)秀,這個(gè)最大的體會(huì)來(lái)源于k8s的伸縮特性,在docker中,創(chuàng)建第一個(gè)容器和創(chuàng)建第二個(gè)容器一樣復(fù)雜,一樣的麻煩,但是在k8s中,創(chuàng)建第二個(gè)容器只需要把副本數(shù)改為2,想創(chuàng)建多少個(gè)都可以,既簡(jiǎn)單又方便,而且很靈活,反正就是很強(qiáng)。更多特性,后面有機(jī)會(huì)的話再來(lái)分享,今天就到這里吧!
