【问题标题】:Share local directory with Kind Kubernetes Cluster using hostpath使用 hostpath 与 Kind Kubernetes Cluster 共享本地目录
【发布时间】:2021-02-08 15:34:19
【问题描述】:

我想与 kind 集群共享我的非空本地目录。

基于此处的答案:How to reference a local volume in Kind (kubernetes in docker)

我尝试了以下几种变体:

类集群yaml:

kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
  extraMounts:
  - hostPath: /Users/xyz/documents/k8_automation/data/manual/
    containerPath: /host_manual
  extraPortMappings:
  - containerPort: 30000
    hostPort: 10000

Pod yaml:

apiVersion: v1
kind: Pod
metadata:
  name: manual 
spec:
  serviceAccountName: manual-sa
  containers:
  - name: tools 
    image: tools:latest 
    imagePullPolicy: Never
    command:
    - bash
    tty: true
    volumeMounts:
    - mountPath: /home/jenkins/agent/data
      name: data
  volumes:
  - name: data
    hostPath: 
      path: /host_manual
      type: Directory
---

我看到创建 pod 时目录 /home/jenkins/agent/data 确实存在。但是,文件夹是空的。

这里有各种文档:https://kind.sigs.k8s.io/docs/user/configuration/#extra-mounts

应该是集群yaml中extraMounts中hostpath(/Users/xyz/documents/k8_automation/data/manual/)的本地机器中的任何内容都可用于containerPath(/host_manual)的节点,然后将其挂载到容器卷 mounthPath (/home/jenkins/agent/data)。

我应该补充一点,即使我将集群 yaml 文件中的 hostPath 更改为不存在的文件夹,空的“数据”文件夹仍会安装在容器中,所以我认为这是从本地到 kind 集群的连接这就是问题所在。

  1. 为什么我没有获得 /Users/xyz/documents/k8_automation/data/manual/ 的内容,而容器中的 /home/jenkins/agent/data 也提供了许多文件?
  2. 我该如何解决这个问题?
  3. 如果没有修复,有什么替代方案吗?

【问题讨论】:

  • 您的集群中有一个节点还是多个节点?
  • 只是上面看到的控制平面@AndD
  • 您能确认kind: Cluster 中的hostPath 是正确的吗?您的环境中有Users 或users?
  • @PjoterS 主机路径正确且没有用户。

标签: kubernetes kind


【解决方案1】:

事实证明这些 yaml 配置很好。

目录未显示在容器中的原因与 docker 设置有关。而且因为“kind 是一种使用 Docker 容器“节点”运行本地 Kubernetes 集群的工具”,所以它很重要。

似乎 docker 限制了资源共享,默认情况下只允许将特定目录绑定挂载到 Docker 容器中。一旦我将我想在容器中显示的特定目录添加到首选项 -> 资源 -> 文件共享下的目录列表中,它就起作用了!

【讨论】:

    猜你喜欢
    • 2019-02-01
    • 1970-01-01
    • 2016-12-05
    • 1970-01-01
    • 1970-01-01
    • 2013-07-14
    • 1970-01-01
    • 2020-01-12
    • 1970-01-01
    相关资源
    最近更新 更多