在 podTemplate 中为 kubernetes-plugin 配置时未安装 hostPathVolume
Posted
技术标签:
【中文标题】在 podTemplate 中为 kubernetes-plugin 配置时未安装 hostPathVolume【英文标题】:hostPathVolume not mounting when configured in podTemplate for kubernetes-plugin 【发布时间】:2019-10-15 20:29:39 【问题描述】:我一直在尝试在 Kubernetes 插件 podTemplate 中挂载 hostPathVolume,当 pod 通过 Jenkins master 启动时,路径永远不会挂载。
我在一个 5 节点集群中部署了 Openshift v3.10,它附带了 Jenkins (v 2.89.2) 模板和 Kubernetes 插件 (v 0.10) 已经可用。在我的项目中,我正在部署 jenkins-ephemeral 模板来测试管道构建的配置。当我的管道启动时,我的自定义 jenkins 代理 pod 会按照 Jenkins 主容器的预期启动,但我配置的 hostPathVolume 安装永远不会安装。我尝试了许多目录和文件,但无法挂载其中的任何一个。想知道它是否可能是权限,但詹金斯和我的 pod 日志没有显示与挂载目录或文件有关的任何错误或问题。我有一个这样配置的 ConfigMap(为简洁起见,省略了一些标签):
apiVersion: v1
metadata:
name: jenkins-agent-test
labels:
role: jenkins-slave
data:
dino: |-
<org.csanchez.jenkins.plugins.kubernetes.PodTemplate>
<inheritFrom></inheritFrom>
<name>dino</name>
<label>dino</label>
<serviceAccount>jenkins</serviceAccount>
<nodeSelector></nodeSelector>
<containers>
<org.csanchez.jenkins.plugins.kubernetes.ContainerTemplate>
<name>jnlp</name>
<image>blah.blah.blah/deploy/jenkins-agent-test</image>
...
</containers>
<volumes>
<hostPathVolume>
<mountPath>/tmp/test</mountPath>
<hostPath>/home/sysadmin/test</hostPath>
</hostPathVolume>
</volumes>
...
</org.csanchez.jenkins.plugins.kubernetes.PodTemplate>
I expect the volume to be mounted in my pod. oc describe pod dino does not show the mounted volume and I logged into my pod and verified the path is not mounted. Not sure what else to try or where to look.
【问题讨论】:
顺便说一句,所有其他 podTemplate 配置项都按我的预期显示在 pod 上。 【参考方案1】:想通了。也许这会帮助别人。您必须为 hostPathVolumes 指定完整的包...
<volumes>
<org.csanchez.jenkins.plugins.kubernetes.volumes.HostPathVolume>
<mountPath>/tmp/test</mountPath>
<hostPath>/home/sysadmin/test</hostPath>
</org.csanchez.jenkins.plugins.kubernetes.volumes.HostPathVolume>
</volumes>
【讨论】:
以上是关于在 podTemplate 中为 kubernetes-plugin 配置时未安装 hostPathVolume的主要内容,如果未能解决你的问题,请参考以下文章
12.Jenkins进阶之分布式架构扩充知识(Kubernetes-plugin)实践讲解
在 Kubernetes Init 容器中为 Kubernetes 主容器创建环境变量