Docker Kubernetes上Jenkins的持续体积

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

我正在尝试在本地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 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