文章前提:已安装好k8s集群,至少1master1slave
1. 挂载卷安装
1.1 非master节点安装pv
安装nfs
yum -y install nfs-utils rpcbindmkdir -p /data/k8scd /data/k8smkdir 0 1 2 3 4 5 6 7 8 9# 开放访问权限chmod 755 0 1 2 3 4 5 6 7 8 9vim /etc/exports
/data/k8s/0 *(rw,sync,no_root_squash)/data/k8s/1 *(rw,sync,no_root_squash)/data/k8s/2 *(rw,sync,no_root_squash)/data/k8s/3 *(rw,sync,no_root_squash)/data/k8s/4 *(rw,sync,no_root_squash)/data/k8s/5 *(rw,sync,no_root_squash)/data/k8s/6 *(rw,sync,no_root_squash)/data/k8s/7 *(rw,sync,no_root_squash)/data/k8s/8 *(rw,sync,no_root_squash)/data/k8s/9 *(rw,sync,no_root_squash)
启动服务
# 启动rpcsystemctl start rpcbind.servicesystemctl enable rpcbindsystemctl status rpcbind# 启动nfssystemctl start nfs.servicesystemctl enable nfssystemctl status nfs# 查看具体目录挂载权限:cat /var/lib/nfs/etab
1.2 master节点安装pv
#启动rpcsystemctl start rpcbind.servicesystemctl enable rpcbind.service#启动nfssystemctl start nfs.servicesystemctl enable nfs.service# 查看从节点挂载目录showmount -e w1
2. 安装jenkins
注:这里为了简单,直接采用helm 进行安装,当然chart 由我整合创建的;
2.1 安装helm
helm-v3.9.0-linux-amd64.tar.gz.txt
去除后缀.txt; 解压安装
tar -zxvf helm-v3.9.0-linux-amd64.tar.gz -C /root/cp linux-amd64/helm /usr/local/bin/
2.2 helm安装jenkins
去除后缀.txt; 安装
# 创建namespace[root@m ~]# kubectl create namespace ns-jenkins# 使用helm安装jenkins[root@m ~]# helm install jenkins helm-jenkins# 查看jenkins 部署节点[root@m ~]# kubectl get pod -n ns-jenkins -o wideNAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATESjenkins-bbb6fcdd5-2kkzx 1/1 Running 0 15m 192.168.190.86 w1 <none> <none>
主机上访问jenkins: http://w1:30002
2.3 配置kubernates




3. 部署spring-boot 项目
3.1 整体流程概览
以下是服务发布的主流程
3.2 创建jenkins项目
示例项目地址:https://github.com/haopenge/shiqi-deploy
1) 创建工程

2) 配置git项目
配置git 项目地址
私库的话需要配置秘钥,这个可自行google;
3) 配置docker仓库登录变量

4)maven打包配置
5)发布服务

源代码如下:
echo "<<====================== 1. 登录docker仓库===================>>"docker login --username=$ALI_DOCKER_USERNAME --password=$ALI_DOCKER_PASSWORD registry.cn-hangzhou.aliyuncs.comecho "<<====================== 2. 构建docker镜像 ===================>>"docker build -t registry.cn-hangzhou.aliyuncs.com/ranmo/shiqi-deploy:${BUILD_NUMBER} -f Dockerfile .echo "<<======================push docker镜像 ===================>>"docker push registry.cn-hangzhou.aliyuncs.com/ranmo/shiqi-deploy:${BUILD_NUMBER}echo "<<====================== 3. 修改helm、k8s.yaml中的镜像版本号 ===================>>"sed -i "s/build_number/${BUILD_NUMBER}/g" chart/Chart.yamlsed -i "s/build_number/${BUILD_NUMBER}/g" chart/values.yamlsed -i "s/build_number/${BUILD_NUMBER}/g" k8s.yamlecho "<<====================== 4. 发布服务 ===================>>"kubectl apply -f k8s.yaml
3.3 访问服务
主机上配置hosts: 192.168.78.128 shiqi-deploy.qa.cn
curl : http://shiqi-deploy.qa.cn/eat/apple
返回: I eat 6 apple !!!
4. 可能疑问
为啥不用helm 发布服务?
暂时没有找到helm 安装+升级 功能合并的 命令;如果用的话,需要手动写脚本实现;
项目中的chart是否可用?
maven 如何配置本地仓库,避免重复拉取?
1) 安装 Configuration File 插件
2) 配置全局setting文件
3) 项目配置 build 项目点高级
4)配置全局pv
创建maven 仓库挂载卷
kubectl create -f maven-pvc.yaml
maven-pvc.yaml源码如下:
apiVersion: v1kind: PersistentVolumemetadata:name: maven-pvspec:capacity:storage: 20GiaccessModes:- ReadWriteManypersistentVolumeReclaimPolicy: Deletenfs:server: w1path: /data/k8s/2---kind: PersistentVolumeClaimapiVersion: v1metadata:name: maven-pvcnamespace: ns-jenkinsspec:accessModes:- ReadWriteManyresources:requests:storage: 20Gi
参见2.3中的位置配置
