我想设置一个持久卷(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/

10-11 08:41