如何将临时卷转换为持久卷声明

How to Transition Ephemeral Volumes to Persistent Volume Claims

目前,我的一些 pods 正在使用临时卷(由 Docker 在容器级别创建的卷)。我想要某种形式的持久数据存储在主机上的特定目录中(如 Docker 中的绑定挂载),这样我的 pods 可以重新启动而不会丢失数据。 Persistent Volume Claims 似乎是执行此操作的最佳方式。我应该如何将现有 pods 转换为使用从现有临时卷复制数据的 PVC?

  1. 在主机上,创建用于保存数据的目录。例如。 mkdir /local_data
  2. 复制数据到本地目录。例如。 kubectl cp <namespace>/<pod>:/path/in/the/container /local_data
  3. 检查并再次检查您在 /local_data
  4. 中的所有数据是否完好无损
  5. 使用以下规范创建一个新 pod。

示例:

kind: Pod
...
spec:
  ...
  nodeName: <name>  # <-- if you have multiple nodes this ensure your pod always run on the host that hold the data
  containers:
  - name: ...
    ...
    volumeMounts:
    - name: local_data
      mountPath: /path/in/the/container
    ...
  volumes:
  - name: local_data
    hostPath: /local_data
    type: Directory

应用并检查您的 pod 是否按预期运行