我正在尝试为在 Docker Desktop for Windows 中运行的 K8s 设置一个持久卷。最终目标是我想运行 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"
}
]
我还在 K8s 中创建了一个持久卷,指向 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"
我还创建了一个光伏声明并进行了部署。
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。我是否错过了某些事情或我如何/我试图做的事情是不可能的?有没有更好或更简单的方法来做到这一点?
谢谢!
最佳答案
我想出了我的问题,这是两个方面。
为了让它工作,我在 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 时能对其他人有所帮助。
关于docker - 使用 Kubernetes 和 Docker Desktop for Windows 设置持久卷,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61918196/