简体   繁体   English

Kubernetes 上 Jenkins 的持久卷

[英]Persistent Volume for Jenkins on Kubernetes

I'm trying to deploy a Jenkins image on a local Kubernetes cluster.我正在尝试在本地 Kubernetes 集群上部署 Jenkins 映像。 The deployment is succesfull but I can't get the persistence data working.部署成功,但我无法使持久性数据正常工作。 No errors are being thrown and new pods start up succesfully, the only problem is that it's not persistent.没有抛出任何错误并且新的 pod 成功启动,唯一的问题是它不是持久的。

Jenkins Dockerfile: Jenkins Dockerfile:

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 Deployment file: Kubernetes 部署文件:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: jenkins
spec:
  replicas: 1
  selector:
    matchLabels:
      app: jenkins
  template:
    metadata:
      labels:
        app: jenkins
    spec:
      containers:
        - name: jenkins
          image: mikemanders/my-jenkins-image:1.1
          env:
            - name: JAVA_OPTS
              value: -Djenkins.install.runSetupWizard=false
          ports:
            - name: http-port
              containerPort: 8080
            - name: jnlp-port
              containerPort: 50000
          volumeMounts:
            - name: jenkins-home
              mountPath: /var/lib/jenkins
              subPath: jenkins
      volumes:
        - name: jenkins-home
          persistentVolumeClaim:
            claimName: jenkins-pv-claim

Kubernetes persistent volume: Kubernetes 持久卷:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: jenkins-pv
  labels:
    type: local
spec:
  storageClassName: manual
  capacity:
    storage: 6Gi
  accessModes:
    - ReadWriteOnce
  hostPath:
    path: "/var/lib"

Persistent Volume Claim持久卷声明

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: jenkins-pv-claim
spec:
  storageClassName: manual
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 2Gi

I'm using Minikube for local development.我正在使用 Minikube 进行本地开发。 And of course Kubectl.当然还有 Kubectl。

Don't see what i'm doing wrong.不要看到我做错了什么。 All help is appreciated.感谢所有帮助。

The regular dockerhub jenkins image uses the path /var/jenkins_home , not /var/lib/jenkins for persistent data.常规 dockerhub jenkins 映像使用路径/var/jenkins_home ,而不是/var/lib/jenkins用于持久数据。 Therefore you should use that path to mount your persistent volume.因此,您应该使用该路径来安装您的持久卷。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM