K8S配合 jenkins 完整一键安装
---------------------------------------------初始化创建容器-------------------------------------------------------------文件中所有的 test 都要换成你创建容器时的名字demo换成你的 jar 包名字 command中的目录要和打包时候一致。流程为:代码打包--打成 docker 镜像--上
1、安装k3s K8S简易版(想安装完整版本自行搜索安装)
curl -sfL https://rancher-mirror.rancher.cn/k3s/k3s-install.sh | INSTALL_K3S_MIRROR=cn sh -
2、安装好后可以执行命令查看是否安装成功 显示如下正常继续
sudo systemctl status k3s
3、安装kuboard可视化工具
① K8S命令安装
#安装
kubectl apply -f https://addons.kuboard.cn/kuboard/kuboard-v3.yaml
#卸载
kubectl delete -f https://addons.kuboard.cn/kuboard/kuboard-v3.yaml
#常用命令
#查看所有pod
kubectl get pod -A
#查看kuboard命名空间下的pod
kubectl get pod -n kuboard
#查看状态
kubectl describe pod kuboard-v3-d48fd7b86-wj5wg -n kuboard
#查看日志
kubectl logs kuboard-v3-d48fd7b86-wj5wg -n kuboard
#进入容器执行命令
kubectl exec -it kuboard-v3-d48fd7b86-wj5wg -n kuboard --bash
#找到node节点
kubectl get pod -o wide -n kube-system
#找到service端口
kubectl get svc -n kube-system
②kubectl命令安装不了,是否还有别的方式呢。官网还提供了几种其他方式,实测docker方式是可以安装成功的
sudo docker run -d \
--restart=unless-stopped \
--name=kuboard \
-p 80:80/tcp \
-p 10081:10081/tcp \
-e KUBOARD_ENDPOINT="http://192.168.3.75:80" \
-e KUBOARD_AGENT_SERVER_TCP_PORT="10081" \
-v /root/kuboard-data:/data \
eipwork/kuboard:v3
其中环境变量KUBOARD_ENDPOINT里换成你自己的ip即可。
在浏览器输入 http://your-host-ip:80 即可访问 Kuboard v3.x 的界面,登录方式:
用户名: admin
密 码: Kuboard123
如果无法登录换成30080端口
3、安装 jenkins
创建一个 kenkins.yml文件,内如加入其中
apiVersion: apps/v1
kind: Deployment
metadata:
name: jenkins-new
spec:
replicas: 1
selector:
matchLabels:
app: jenkins-new
template:
metadata:
labels:
app: jenkins-new
spec:
containers:
- name: jenkins-new
image: jenkins/jenkins:lts-jdk11 ###jenkinsci/blueocean
ports:
- containerPort: 8080
volumeMounts:
- name: jenkins-home
mountPath: /var/jenkins_home
volumes:
- name: jenkins-home
执行命令安装 jenkins(如果失败,在 jenkins.yml 前面加上绝对路径)
kubectl apply -f jenkins.yml
等待一会即可 IP:8080访问 jenkins后台页面,根据提示从服务器找到密码进行登陆初始化
4、配合 gitee 拉去代码进行部署
①、Dashboard-Manage Jenkins-插件管理下载 gitee 插件安装好后前往配置个人令牌进行测试
②、新建任务
③、填写对应的 git 地址 以及提前设置好对应的账号密码
④、拉去代码执行的 shell 脚本,按照个人情况编写,案例为 打包 java 代码并且进行覆盖容器现有内容(尾部会介绍初始化时怎么创建并且配置容器)
流程为:代码打包--打成 docker 镜像--上传到阿里云镜像管理--通过阿里云镜像内容更新现有容器
----------------------------------------------初始化创建容器-------------------------------------------------------------
java 项目为例
1、docker 环境准备(baidu)
2、代码根目录需要存在Dockerfile文件,用于打包 docker 镜像 内容随意最终镜像可以运行即可(jar包名字需要记住并且为固定)
FROM openjdk:8
COPY demo.jar /app/demo.jar
CMD ["java", "-jar", "/app/demo.jar"]
cd到文件目录执行
your-image-name是你要给镜像取的 name tag 为版本号
docker build -t your-image-name:tag .
# 执行成功后查询是否打包成功
docker images
# 可查看所有镜像存在则为成功,不放心是否成功可以执行启动命令测试镜像
docker run your-image-name:tag
3、准备阿里云的容器镜像服务,执行前往设置
# 登录阿里云镜像管理
docker login --username=你的用户名 --password=你的密码 registry.cn-hangzhou.aliyuncs.com
# 确认镜像
docker tag your-images-name:tag registry.cn-hangzhou.aliyuncs.com/ceshimapper/ceshi:tag
# 上传镜像
docker push registry.cn-hangzhou.aliyuncs.com/ceshimapper/ceshi:tag
#your-images-name 和tag 填写 使用 docker-images总查出来的 name 和 TAG
4、准备工作完毕,进行创建容器启用镜像
创建容器 demo 为取好的名字,记住后面要用
kubectl create deployment demo --image=demo
# 查询是否创建成功
kubectl get pods
启动需要 2 个 yml 文件,随意目录创建 pod.yml和service.yml 2 个文件
文件中所有的 test 都要换成你创建容器时的名字 demo换成你的 jar 包名字 command中的目录要和打包时候一致
pod.yml
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: test
name: test
spec:
replicas: 1
revisionHistoryLimit: 5
selector:
matchLabels:
app: test
template:
metadata:
labels:
app: test
spec:
imagePullSecrets:
- name: aliyun-docker-registry
containers:
- env:
- name: TZ
value: Asia/Shanghai
command: ["/bin/sh","-c","java -Xmx512m -Dspring.profiles.active=test -Duser.home=/demo -jar /app/demo.jar"]
image: 'registry.cn-hangzhou.aliyuncs.com/ceshimapper/ceshi:0.07'
name: test
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8877
protocol: TCP
# resources:
# limits:
# memory: 2Gi
# requests:
# memory: 2Gi
volumeMounts:
- name: vm-log
mountPath: /application/logs
- name: vm-upload
mountPath: /application/files
- name: vm-data
mountPath: /application/data
- name: vm-static
mountPath: /application/static
- name: vm-config
mountPath: /application/config
restartPolicy: Always
terminationGracePeriodSeconds: 30
volumes:
- name: vm-log
hostPath:
# 宿主机目录
path: /www/websites/test/logs
# hostPath 卷指定 type,如果目录不存在则创建(可创建多层目录)
type: DirectoryOrCreate
- name: vm-upload
hostPath:
path: /www/websites/test/files
type: DirectoryOrCreate
- name: vm-data
hostPath:
path: /www/websites/test/data
type: DirectoryOrCreate
- name: vm-static
hostPath:
path: /www/websites/test/static
type: DirectoryOrCreate
- name: vm-config
hostPath:
path: /www/websites/test/config
type: DirectoryOrCreate
service.yml
apiVersion: v1
kind: Service
metadata:
name: demo
labels:
app: demo
spec:
type: NodePort
ports:
#8199的意思是 你打 docker 镜像时候 jar 运行后的端口
- port: 8199
targetPort: 8199
#30818的意思是容器的入口,通过 30818 进入后会找到 demo服务的 8199
nodePort: 30818
name: demo
selector:
app: demo
开始启动 2 个 yml
kubectl apply -f /var/lib/jenkins/workspace/test/cicd/pod.yml
kubectl apply -f /var/lib/jenkins/workspace/test/cicd/service.yml
启动后等待执行结果,就可前往可视化页面查看容器状态
更多推荐
所有评论(0)