回答问题

我想设置一个持久卷(pv 和 pvc),由Kind cluster中的 pod 共享。但是我还需要将数据保留在我的笔记本电脑(主机服务器)中,因此卷的路径应该是我的笔记本电脑中的某个东西,我可以直接访问它。

如果我删除 kind 集群,则该卷应该被持久化,而不是被销毁。

我希望轻松地在该卷中添加或更新,或从我的主机笔记本电脑中复制文件。

如何让 KIND 集群中的 pod 知道它?

贴上我的kind.yaml供你参考

$ kind
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
- role: worker
- role: worker
- role: worker

Answers

当您创建您的 kind 集群时,您可以指定要安装在虚拟节点上的主机目录。如果您这样做,那么您可以使用hostPath存储配置卷,它们将引用节点上的挂载路径。

因此,您将创建一个 kind 配置文件:

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)中,您可能根本无法控制主机内容。

您可能会重新审视您的应用程序设计,以尽量减少对“文件”作为一流对象的需求。与其“更新卷”,不如考虑部署一个包含更新内容的新 Docker 镜像;与其“复制文件”,不如考虑一个可以通过入口控制器公开的 HTTP 服务。

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐