使用主机路径与 Kind Kubernetes 集群共享本地目录
Share local directory with Kind Kubernetes Cluster using hostpath
我想把我的非空本地目录分享给kind cluster
基于此处的回答:
我尝试了以下几种变体:
种类集群 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 中主机路径 (/Users/xyz/documents/k8_automation/data/manual/) 的本地机器中的任何内容都应该对 containerPath (/host_manual) 的节点可用,这然后安装在容器卷 mounthPath (/home/jenkins/agent/data).
我应该补充一点,即使我将集群 yaml 文件中的 hostPath 更改为一个不存在的文件夹,空的“数据”文件夹仍然会挂载在容器中,所以我认为这是从我的本地连接到这就是问题所在。
- 为什么我无法获取 /Users/xyz/documents/k8_automation/data/manual/ 的内容,容器中的 /home/jenkins/agent/data 中也有很多文件?
- 我该如何解决这个问题?
- 如果没有解决方案,还有其他选择吗?
事实证明这些 yaml 配置没问题。
目录未显示在容器中的原因与 docker 设置有关。因为“kind 是 运行 本地 Kubernetes 集群使用 Docker 容器“节点”的工具”,所以它很重要。
似乎docker 限制了资源共享,默认情况下只允许将特定目录绑定挂载到Docker 容器中。一旦我将我想在容器中显示的特定目录添加到“首选项”->“资源”->“文件共享”下的目录列表中,它就成功了!
我想把我的非空本地目录分享给kind cluster
基于此处的回答:
我尝试了以下几种变体:
种类集群 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 中主机路径 (/Users/xyz/documents/k8_automation/data/manual/) 的本地机器中的任何内容都应该对 containerPath (/host_manual) 的节点可用,这然后安装在容器卷 mounthPath (/home/jenkins/agent/data).
我应该补充一点,即使我将集群 yaml 文件中的 hostPath 更改为一个不存在的文件夹,空的“数据”文件夹仍然会挂载在容器中,所以我认为这是从我的本地连接到这就是问题所在。
- 为什么我无法获取 /Users/xyz/documents/k8_automation/data/manual/ 的内容,容器中的 /home/jenkins/agent/data 中也有很多文件?
- 我该如何解决这个问题?
- 如果没有解决方案,还有其他选择吗?
事实证明这些 yaml 配置没问题。
目录未显示在容器中的原因与 docker 设置有关。因为“kind 是 运行 本地 Kubernetes 集群使用 Docker 容器“节点”的工具”,所以它很重要。
似乎docker 限制了资源共享,默认情况下只允许将特定目录绑定挂载到Docker 容器中。一旦我将我想在容器中显示的特定目录添加到“首选项”->“资源”->“文件共享”下的目录列表中,它就成功了!