k8s 安装笔记 - 部署jenkins服务
温馨提示:
本文最后更新于 2023年07月10日
,已超过 649 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我。
主要遇到的问题:如何处理挂载的/var/jenkins_home无法访问的权限,
通常情况下,每个应用,会对该应用的应用文件所在文件夹属组或权限有要求,如果权限或者属组不对,就会导致此问题。
以这个jenkins实例为例,我们尝试将数据卷的挂载去掉,进入容器,可以看到,jenkins所使用的默认应用目录/var/jenkins_home
权限如下
jenkins@jenkins-675c4bdb4-x7qkp:/var$ ls -ls /var |grep jenkins_home
4 drwxr-xr-x 12 jenkins jenkins 4096 Aug 5 03:44 jenkins_home
# 而将数据卷挂载至/var/jenkins_home 后,该路径会继承数据卷目录的属组和权限。
# 通常为:drwxr-xr-x 12 root root
# 不同环境可能有区别,但这不重要。想表达的意思就是,和应用所需的权限无法匹配,这是问题的根本原因!!!
# 解决方法
# 目的:不论采取什么方法,目的就是希望所挂载卷的权限属组,要和应用所需的保持一致。
# 此处通过k8s中的initcontainers容器,来解决此问题。
###获取用户id
jenkins@jenkins-675c4bdb4-x7qkp:/var$ cat /etc/passwd |grep jenkins
jenkins:x:1000:1000::/var/jenkins_home:/bin/bash
###获取组id
jenkins@jenkins-675c4bdb4-x7qkp:/var$ cat /etc/group |grep jenkins
jenkins:x:1000:
在下面的配置中进行初始化权限。
参考内容
K8S中容器应用目录挂载数据卷后,就无法启动,报错权限问题-腾讯云开发者社区-腾讯云
配置部署文件(关于设置权限的问题,在jenkins中比较严重)
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
k8s-app: jenkins
qcloud-app: jenkins
name: jenkins
namespace: default
spec:
selector:
matchLabels:
k8s-app: jenkins
qcloud-app: jenkins
template:
metadata:
labels:
k8s-app: jenkins
qcloud-app: jenkins
spec:
containers:
- image: jenkins:2.60.3
imagePullPolicy: Always
name: jenkins
volumeMounts:
- mountPath: /var/jenkins_home
name: data
initContainers:
- args:
- -c
- chmod 755 /var/jenkins_home && chown 1000:1000 /var/jenkins_home ### 这里将上一步所记录的权限属组进行更改
command:
- /bin/sh
image: centos
imagePullPolicy: IfNotPresent
name: chauth
securityContext:
privileged: true ### 建议开启特权模式
volumeMounts:
- mountPath: /var/jenkins_home ### initc也要对次数据卷进行挂载
name: data
volumes:
- name: data
persistentVolumeClaim:
claimName: pv-claim-jenkins
增加服务文件
---
apiVersion: v1
kind: Service
metadata:
name: jenkins
namespace: devops
spec:
type: NodePort
ports:
- port: 8080
protocol: TCP
targetPort: 8080
nodePort: 30080
selector:
app: jenkins
正文到此结束
- 本文标签: k8s Java jenkins
- 本文链接: https://www.letcode.cn/article/15
- 版权声明: 本文由Jack.Chen原创发布,转载请遵循《 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权