目录
Jenkins 在 Kubernetes 上的搭建
本文基于 Jenkins 官方 Kubernetes 安装文档进行实践,不重复展开全部官方配置文件,而是重点记录部署思路、关键配置改动以及实际验证过程。涉及的 YAML 仅保留与当前环境相关的核心片段。 YAML 配置文件的完整版本请参考 Jenkins 官方文档:https://www.jenkins.io/doc/book/installing/kubernetes/
安装
步骤概括
步骤官方文档写的很详细了,主要写我更改了什么。
因为我这是学习场景下的一次简单尝试,执行了创建命名空间、创建服务账户、创建持久卷、创建无状态负载,创建服务访问 service,就可以通过端口转发访问 Jenkins 了。更改概括如下:
- 单节点 Kubernetes 集群部署 Jenkins。
- 存储卷使用了 ‘local’ 存储类,将在节点
/mnt/jenkins-data创建PersistentVolume卷。更改了spec.nodeAffinity.required.nodeSelectorTerms[].matchExpressions[].values的值为工作节点的主机名。单节点部署方式工作节点的主机名使用
kubectl get nodes命令获取。 - PV 的 YAML 文件还更改了
spec.local.path为/mnt/jenkins-data。这样可以减少干扰
/mnt目录下的其他数据。 - 访问方式使用的是 SSH 端口转发。
转发使用的是
ssh -L 32000:127.0.0.1:32000 <用户名>@<服务器IP> -N命令,参数说明如下:该命令表示在本地监听 32000 端口,并将流量转发到服务器上的 32000 端口。
-N表示只做转发,不登录执行远程命令。 建立转发后,在本地访问http://127.0.0.1:32000
卸载
卸载主要是删除 Jenkins 相关的 Kubernetes 资源,删除或者重新安装简单流程如下:
完整卸载
完整删除 Jenkins,可以按与安装相反的大致顺序进行清理:
- 删除 Service。
- 删除 Jenkins Deployment。
- 删除 PVC / PV。
- 删除服务账户及相关权限配置。
- 删除命名空间。
- 删除节点上的本地数据目录
/mnt/jenkins-data。
简单重装
如果只是想以“清除数据”的方式重新安装,那么不一定需要完整删除全部 Kubernetes 资源。
在当前这种单节点 + local PV 的学习环境中,通常只需要:
- 删除 Jenkins Deployment。
- 删除或清空本地数据目录
/mnt/jenkins-data。
这样做的本质是:
- 删除 Deployment:让 Jenkins Pod 重新创建。
- 删除本地数据目录:清空 Jenkins 持久化数据。
注意事项
- local PV 对应的目录必须存在
如果 PV 中配置的是:
spec:
local:
path: /mnt/jenkins-data那么节点上的 /mnt/jenkins-data 目录必须提前创建。
否则 Pod 会在挂载阶段失败,并出现类似报错:
MountVolume.NewMounter initialization failed for volume "jenkins-pv-volume" : path "/mnt/jenkins-data" does not exist- 关于误删除
/mnt目录后的重建
- 可以手动创建,但是要注意权限问题,确保 Jenkins 进程有权限访问这个目录。
- 如果使用的是
/mnt/jenkins-data,需要确保这个目录存在并且权限正确。 - 如果是 root 用户创建目录,通常需要先用
chmod调整权限,再用chown将目录所有权转移给 Jenkins 进程运行用户。 - 相关命令示例:
sudo mkdir -p /mnt/jenkins-data
sudo chown -R 1000:1000 /mnt/jenkins-data
sudo chmod 755 /mnt/jenkins-data