1. 程式人生 > 實用技巧 >企業微服務專案如何進入K8S的全過程

企業微服務專案如何進入K8S的全過程

前言

現在很多企業已經進入了docker容器化的部署方式,容器化的部署離不開容器編排的工具,現在用的最多的當屬K8S的編排工具。那專案從0開始時,一直進入到k8s中,整體流程是什麼,以及用到什麼工具元件呢?今天老顧就從整體上面來介紹一下。

整體流程

工作流程

1)開發人員提交程式碼到Git版本倉庫;
2)Jenkins人工/定時觸發專案構建;
3)Jenkins拉取程式碼、程式碼編碼、打包映象、推送到測試環境的映象倉庫;
4)k8s拉取映象產生pod中的容器
5)測試環境中測試沒有問題後,把映象同步到生產的映象倉庫中
6)生產環境K8S部署映象

git

git現在有的私有倉庫,有兩種選擇gitlab,gogs。

gogs

一開始老顧選擇的gogs,因為比較輕量級,消耗伺服器的資源也很少。但是gogs現有版本中缺少很重要的功能,就是在web介面上面操作拉取分支的功能,這個功能是平常經常用的,但比較可惜的是gogs現在不支援。

gitlab

gitlab功能還是比較強大的,唯一的缺點就是比較耗伺服器資源,最好用4G記憶體承載,要不然很慢哦

jenkins

jenkins應該是持續整合的唯一選擇了,功能非常強大,強大的外掛功能;不同的團隊應用jenkins的方式也不盡相同。

拉取git的外掛Git Parameter

動態獲取Git倉庫Branch、Tag

配置好後,在build時,你可以選擇不同的分支

利用pom.xml檔案構建專案

在Jenkins本機映象構建與推送到映象倉庫

REPOSITORY=192.168.110.10/qy-tribe/user-server:${branch}
#構建映象

cat > Dockerfile << EOF

FROM openjdk:8-jdk-alpine

RUN rm -rf /usr/local/qy-tribe

COPY target/*.jar /usr/local/qy-tribe/user-server.jar

ENTRYPOINT java -jar /usr/local/qy-tribe/user-server.jar

EOF

docker build -t $REPOSITORY .

#上傳映象

docker push $REPOSITORY

上面是直接在jenkins的shell中輸入了構建映象指令碼。

其實還有一種常用的方式就是在專案工程下新建Dockerfile檔案,在可以利用mvn外掛

在jenkins中使用shell

mvn dockerfile:build dockerfile:push

這樣就更簡單一點

注意點:因為我們會對同一個版本會構建多次,映象images會產生多次,會把上一次的映象的tag更改為none;我們要記得清除哪些被替換的image,可以使用指令碼

注意點:jenkins結點需要安裝docker哦,不要忘了

docker images | grep none | awk '{print $3}' | xargs docker rmi

映象倉庫

現在市面上的映象倉庫,不二人選肯定是harbor了,使用起來比較簡單,功能也是比較強大的

harbor的安裝推薦使用docker方式安裝,比較方便

https://github.com/goharbor/harbor/releases/download

harbor中有個複製管理,即是同步映象的功能。

很多網上有harbor的高可用,以及叢集的架構方案,老顧認為沒有必要,應該harbor是在內部使用,高可用的需求不強烈。我們只要保證映象檔案不丟失即可,正好harbor的複製管理即可完成此功能。

所以我們只要架設幾個harbor就ok了

k8s

k8s叢集安裝是比較複雜的,網上介紹的有兩種方式kubeadm方式和二進位制方式,我們今天介紹更簡單的方式,只要幾句命令就ok。

利用sealyun工具,利用go語言方式,能夠快速搭建k8s叢集

結點規劃

主機名

IP地址

master01

192.168.0.2

master02

192.168.0.3

master03

192.168.0.4

work01

192.168.0.5

work02

192.168.0.6

注意:

系統支援:centos7.2以上 ubuntu16.04以上 核心推薦4.14以上

推薦配置:centos7.4

注意事項

1)必須同步所有伺服器時間

2)所有伺服器主機名不能重複

#下載並安裝sealos, sealos是個golang的二進位制工具,直接下載拷貝到#bin目錄即可, release頁面也可下載
wget -c https://sealyun.oss-cn-beijing.aliyuncs.com/latest/sealos && \
chmod +x sealos && mv sealos /usr/bin

#下載離線資源包
wget -c https://sealyun.oss-cn-beijing.aliyuncs.com/d551b0b9e67e0416d0f9dce870a16665-1.18.0/kube1.18.0.tar.gz


#安裝一個三master的kubernetes叢集
sealos init --passwd 123456 \
--master 192.168.0.2 --master 192.168.0.3 --master 192.168.0.4 \
--node 192.168.0.5 --node 192.168.0.6 \
--pkg-url /root/kube1.18.0.tar.gz \
--version v1.18.0

上面就是3條命令,就可以幫我們完成k8s叢集的搭建,等待的時長根據自身的網路環境。

注意:上面的passwd 123456,是5個伺服器結點的root密碼,一定要一樣哦

k8s介面控制檯

安裝好了k8s後,只能用命令方式控制k8s,是很不方便的,所以我們還需要安裝一個介面控制檯,我們這裡選擇強大的kuboard

wget https://github.com/sealstore/dashboard/releases/download/v1.0-1/kuboard.tar


sealos install --pkg-url kuboard.tar

到這裡我們完成了k8s的安裝,來看看炫酷的介面

建立Deployment

kuboard的優勢,可以在邏輯上面區分不同的層級,可以方便的讓我們一覽系統架構

ingress安裝

為了讓叢集外可以訪問叢集裡面的訪問,需要安裝ingress

kubectl apply -f https://kuboard.cn/install-script/v1.16.2/nginx-ingress.yaml

配置service服務,以及ingress

總結

今天整體介紹把一個微服務專案,如何部署到k8s中,經過什麼流程,以及需要什麼工具,而且推薦了市面上面的主流工具。尤其介紹了k8s叢集的搭建的工具,很推薦哦

當然具體工具的使用細節,需要小夥伴們自行搭建,裡面會遇到很多的坑,遇到坑就去解決,這樣理解起來會更好。