我想设置一个持久卷(pv 和 pvc),由 Kind cluster 中的 pod 共享。但是我还需要将数据保留在我的笔记本电脑(主机服务器)中,因此卷的路径应该是我的笔记本电脑中的某些内容,我可以直接访问它。
如果我删除 kind 集群,该卷应该被持久化,而不是被破坏。
我希望可以轻松地添加或更新该卷,或者从我的主机笔记本电脑中复制文件。
如何让 Pod 在 KIND 集群中知道它?
粘贴我的 kind.yaml
以供引用
$ kind
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
- role: worker
- role: worker
- role: worker
最佳答案
当您创建同类集群时,您可以 specify host directories to be mounted on a virtual node 。如果这样做,则可以使用 hostPath
存储配置卷,它们将引用节点上的挂载路径。
所以你会创建一个种类的配置文件:
apiVersion: kind.x-k8s.io/v1alpha4
kind: Cluster
nodes:
- role: control-plane
extraMounts:
- hostPath: /home/bill/work/foo
containerPath: /foo
然后运行kind create cluster --config kind-config.yaml
创建集群。在您的 Kubernetes YAML 文件中,您需要将该
containerPath
挂载为节点上的“主机路径”。 Pod 规范可能部分包含:volumes:
- name: foo
hostPath:
path: /foo # matches kind containerPath:
containers:
- name: foo
volumeMounts:
- name: foo
mountPath: /data # in the container filesystem
请注意,此设置非常特定于种类。主机路径通常不是可靠的存储:您无法控制 pod 被安排在哪个节点上,并且 pod 和节点都可以在现实世界的集群中被删除。在某些托管设置(AWS EKS、Google GKE)中,您可能根本无法控制主机内容。您可能会重新审视您的应用程序设计,以尽量减少对"file"作为一流对象的需求。与其“更新卷”,不如考虑使用更新的内容部署新的 Docker 镜像;而不是“复制文件”考虑可以通过入口 Controller 公开的 HTTP 服务。
关于docker - 如何在 Kind 中引用本地卷(docker 中的 kubernetes),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/62694361/