如何在kubernetes的pod文件夹中挂载特定的文件



我在k8s中运行Jenkins,并且我已经用PVC挂载了/var/jenkins_home文件夹,现在我想挂载/var/jenkins_home/config.xml作为configmap,其他文件夹仍然用PVC挂载。

下面是我的yaml文件:
volumeMounts:
- mountPath: /var/jenkins_home
name: jenkins-data
subPath: jenkins
- mountPath: /var/jenkins_home/config.xml
name: configxml
subPath: config.xml
volumes:
- name: jenkins-data
persistentVolumeClaim:
claimName: shdr-jenkins-k-test
- name: configxml
configMap:
name: jenkins-k-config
ites:
- key: jenkins-configfile
path: config.xml

当我打开jenkins时,它显示:

Also:   java.nio.file.FileSystemException: /var/jenkins_home/atomic14997153162086721303tmp -> /var/jenkins_home/config.xml: Device or resource busy
at java.base/sun.nio.fs.UnixException.translateToIOException(Unknown Source)
at java.base/sun.nio.fs.UnixException.rethrowAsIOException(Unknown Source)
at java.base/sun.nio.fs.UnixCopyFile.move(Unknown Source)
at java.base/sun.nio.fs.UnixFileSystemProvider.move(Unknown Source)
at java.base/java.nio.file.Files.move(Unknown Source)
at hudson.util.AtomicFileWriter.commit(AtomicFileWriter.java:194)
java.nio.file.FileSystemException: /var/jenkins_home/config.xml: Device or resource busy

简短回答

需要将jenkins-data卷的挂载路径设置为/var/jenkins_home/jenkins。这将正确配置subPath功能。

详细说明如果我理解正确的话,你想达到的目的是:

  1. 您有一个名为jenkins-k-configConfigMap。这包含一个单独的参数config.xml,它的值是你的Jenkins配置的内容。
  2. 你想把这个ConfigMap挂载到Jenkins pod的/var/jenkins_home/路径上,这样pod就可以使用/var/jenkins_home/config.xml文件了。

你可以这样做:

  1. 您将更新您的pod规范以添加ConfigMap作为卷。
  2. 然后,您将添加一个volumeMount来将该ConfigMap的内容挂载到pod容器中的指定挂载点。

由于您的ConfigMap只包含一个名为config.xml的键,因此您无论如何都不必指定items。简单地安装ConfigMap就可以了。见下面的清单:

volumeMounts:
- mountPath: /var/jenkins_home/
name: configxml
subPath: config.xml
readOnly: true.  #<==== Recommended, so config remains immutable.
volumes:
- name:configxml
configMap:
name: jenkins-k-config

我还注意到,当所有这些错误都被修复后,我们最终将有2个卷(jenkins-data, configxml)试图挂载到pod内相同的mountPoint。这就是您看到device or resource busy错误的原因,因为mountPoint已经很忙了,正在与jenkins-data卷一起挂载。

可以将挂载点更改为/var/jenkins_home/jenkins。这也将使您的subPath变量生效,您将能够挂载两个卷。

jenkins-data====>/var/jenkins_home/jenkins

config.xml====>/var/jenkins_home/config.xml.

相关内容

  • 没有找到相关文章

最新更新