首页 > 解决方案 > Kubernetes) 创建 pod 时未挂载的子目录

问题描述

我正在使用 Kubernetes。我想在容器中安装本地(主机)卷。

但它不会挂载目录内的子目录。

这是我的 job.yaml 文件。

apiVersion: v1
kind: Pod
metadata:
    name: ts-engine
spec:
    containers:
    - image: ts_engine:latest
      name: ts-engine
      imagePullPolicy: Never
      command: ["/bin/bash", "-c","cd workspace && ls && echo '1234'&& cd .. && ls"]
      volumeMounts:
      - mountPath: /workspace
        name: workspace
    volumes:
    - name: workspace
      hostPath:
        path: /workspace
        type: Directory

此 pod 的日志如下所示:

1234
bin
boot
dev
etc
home
lib
lib64
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var
workspace

它表明“工作区”目录是空的,但实际上它在“工作区”中有一些目录。

这种情况有什么想法吗?

标签: kuberneteskubernetes-pod

解决方案


“ls”命令的输出表明您实际上并未在目录“workspace”中工作。您位于顶层 (/),并且列出的是目录而不是其内容。换句话说,你的 cd 命令没有按照你的想法做。

要真正回答这个问题,我们需要更多地了解您的设置,但这是我的最佳猜测:

  • 您可能正在运行 Minikube,或其他一些本地 kubernetes 集群。
  • 这将运行它自己的虚拟机,默认情况下它无权访问本地计算机上的目录
  • 正如@David Maze 所指出的, hostPath: 从本地节点挂载一个目录,所以这只有在开发中本地运行 kubernetes 时才真正可用
  • 您的 Kubernetes 集群可能位于隔离的虚拟机中,因此挂载失败

推荐阅读