【问题标题】:Kubernetes) subdirectories not mounted when creating podKubernetes) 创建 pod 时未挂载的子目录
【发布时间】:2021-08-27 06:53:38
【问题描述】:

我正在使用 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

显示“工作区”目录是空的,但实际上“工作区”中有一些目录。

对这种情况有什么想法吗?

【问题讨论】:

  • 您使用的是哪个版本的 Kubernetes?您是如何部署集群的?
  • hostPath: 从运行 pod 的节点挂载一个目录,这可能是多个副本的不同节点,或者如果一个 pod 被删除;你通常不想要它。没有办法将本地系统的磁盘挂载到 Kubernetes 集群中(除非在特定的本地开发人员导向设置中)。
  • 我使用“kubectl apply -f job.yaml”来部署我的集群。
  • @DavidMaze 你的意思是在 kubernetes 节点之间使用“hostPath”吗?那么有没有办法把我的本地目录挂载到我的pod上呢?
  • 我问的是你是如何部署集群的,而不是 Pod。您是否使用了一些云提供商或裸机安装?

标签: kubernetes kubernetes-pod


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2019-12-21
    • 2021-06-14
    • 1970-01-01
    • 2016-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-28
    • 2021-12-14
    相关资源
    最近更新 更多