前言
現在很多企業已經進入了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集群的搭建的工具,很推薦哦
當然具體工具的使用細節,需要小伙伴們自行搭建,里面會遇到很多的坑,遇到坑就去解決,這樣理解起來會更好。