我正在尝试为Docker Desktop for Windows中运行的K8设置永久卷。最终目标是我想运行Jenkins,并且如果docker / K8s旋转下来,也不会丢失任何工作。
我尝试了几件事,但是我误解了这样做的能力,或者我设置了错误的东西。目前,我的环境设置如下:
我在Docker中为Jenkins设置了一个卷。我所做的只是创建卷,不确定是否需要在此处进行更多配置。
docker volume inspect jenkins-pv
[
{
"CreatedAt": "2020-05-20T16:02:42Z",
"Driver": "local",
"Labels": {},
"Mountpoint": "/var/lib/docker/volumes/jenkins-pv/_data",
"Name": "jenkins-pv",
"Options": {},
"Scope": "local"
}
]
我还在K8中创建了一个持久卷,该持久卷指向Docker卷中的安装点并进行了部署。
apiVersion: v1
kind: PersistentVolume
metadata:
name: jenkins-pv-volume
labels:
type: hostPath
spec:
storageClassName: manual
capacity:
storage: 1Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Delete
hostPath:
path: "/var/lib/docker/volumes/jenkins-pv/_data"
我还创建了一个pv声明并将其部署。
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: jenkins-pv-claim
spec:
storageClassName: manual
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
最后,我为Jenkins创建了一个部署。我确认它可以正常使用,并且可以访问该应用程序。
apiVersion: apps/v1
kind: Deployment
metadata:
name: jenkins-deployment
spec:
replicas: 1
selector:
matchLabels:
app: jenkins-app
template:
metadata:
labels:
app: jenkins-app
spec:
containers:
- name: jenkins-pod
image: jenkins/jenkins:2.237-alpine
ports:
- containerPort: 50000
- containerPort: 8080
volumeMounts:
- name: jenkins-pv-volume
mountPath: /var/lib/docker/volumes/jenkins-pv/_data
volumes:
- name: jenkins-pv-volume
persistentVolumeClaim:
claimName: jenkins-pv-claim
但是,数据不会持续退出Docker,并且每次启动时我都必须重新配置Jenkins。我错过了什么吗?或者我想怎么做?有更好或更容易的方法吗?
谢谢!
答案 0 :(得分:2)
我想出了我的问题,这是两方面的。
要使其正常工作,我在Docker(C:\ DockerShare)中创建了一个共享文件夹。 然后,我在“永久卷”中更新了主机路径。 格式为 / host_mnt / path_to_docker_shared_folder_location 由于我使用C:\ DockerShare,因此我的路径是: / host_mnt / c / DockerShare
apiVersion: v1
kind: PersistentVolume
metadata:
name: jenkins
labels:
type: hostPath
spec:
storageClassName: manual
capacity:
storage: 1Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
hostPath:
path: /host_mnt/c/DockerShare/jenkins
我还必须更新Jenkins部署,因为我实际上没有保存任何配置。 我应该一直从 / var / jenkins_home 保存数据。
部署看起来像这样:
apiVersion: apps/v1
kind: Deployment
metadata:
name: jenkins
spec:
replicas: 1
selector:
matchLabels:
app: jenkins-app
template:
metadata:
labels:
app: jenkins-app
spec:
containers:
- name: jenkins-pod
image: jenkins/jenkins:2.237-alpine
ports:
- containerPort: 50000
- containerPort: 8080
volumeMounts:
- name: jenkins
mountPath: /var/jenkins_home
volumes:
- name: jenkins
persistentVolumeClaim:
claimName: jenkins
无论如何,它现在都可以正常工作,希望在建立PV方面对其他人有所帮助。