Docker Kubernetes上Jenkins的持续体积
我正在尝试在本地Kubernetes群集上部署Jenkins映像。部署成功,但我无法使持久性数据正常工作。没有错误被抛出,新的POD成功启动,唯一的问题是它不是持久的 詹金斯·多克菲尔:Docker Kubernetes上Jenkins的持续体积,docker,jenkins,kubernetes,persistent-volumes,persistent-volume-claims,Docker,Jenkins,Kubernetes,Persistent Volumes,Persistent Volume Claims,我正在尝试在本地Kubernetes群集上部署Jenkins映像。部署成功,但我无法使持久性数据正常工作。没有错误被抛出,新的POD成功启动,唯一的问题是它不是持久的 詹金斯·多克菲尔: FROM jenkins/jenkins:lts ENV JENKINS_USER admin ENV JENKINS_PASS admin # Skip initial setup ENV JAVA_OPTS -Djenkins.install.runSetupWizard=false COPY pl
FROM jenkins/jenkins:lts
ENV JENKINS_USER admin
ENV JENKINS_PASS admin
# Skip initial setup
ENV JAVA_OPTS -Djenkins.install.runSetupWizard=false
COPY plugins.txt /usr/share/jenkins/plugins.txt
RUN /usr/local/bin/install-plugins.sh < /usr/share/jenkins/plugins.txt
USER root
RUN apt-get update \
&& apt-get install -qqy apt-transport-https ca-certificates curl gnupg2 software-properties-common
RUN curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -
RUN add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/debian \
$(lsb_release -cs) \
stable"
RUN apt-get update -qq \
&& apt-get install docker-ce -y
RUN usermod -aG docker jenkins
RUN apt-get clean
RUN curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose && chmod +x /usr/local/bin/docker-compose
USER jenkins
Kubernetes持久卷:
apiVersion: v1
kind: PersistentVolume
metadata:
name: jenkins-pv
labels:
type: local
spec:
storageClassName: manual
capacity:
storage: 6Gi
accessModes:
- ReadWriteOnce
hostPath:
path: "/var/lib"
持续性批量索赔
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: jenkins-pv-claim
spec:
storageClassName: manual
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 2Gi
我使用Minikube进行本地开发。当然还有库贝特
别看我做错了什么。
感谢所有帮助。常规dockerhub jenkins图像使用路径
/var/jenkins_home
,而不是/var/lib/jenkins
来获取持久数据。
因此,您应该使用该路径装载持久卷。我尝试了您的建议。pod状态为CrashLoopBackOff。当我查看日志时,我收到以下消息:
touch:cannot touch'/var/jenkins\u home/copy\u reference\u file.log':权限被拒绝无法写入/var/jenkins\u home/copy\u reference\u file.log。错误的卷权限代码>。我猜持久卷的主机路径也不正确。我找到了一个解决方案initContainers:-name:set jenkins home permissions image:alpine:3.11命令:-chown--R-1000:1000-/var/jenkins_home volumeMounts:-name:jenkins home mountPath:/var/jenkins_home
不确定这是否是一种很好的安装方法解决这个问题,但现在它已经解决了,所以我可以继续。但是任何更好的建议都是受欢迎的。您可以使用securityContext
并将fsGroup
设置为1000
,而不是自己测试,它应该会给您与init容器相同的结果。更多详细信息:@MikeManders,请将您的解决方案作为答案发布,以便其他人在将来遇到类似问题时能够得到帮助。是的@Thomas是正确的,您可以在此处看到fsGroup:1000
的示例
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: jenkins-pv-claim
spec:
storageClassName: manual
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 2Gi