Docker绑定挂载迁移至Google Kubernetes集群的配置问题咨询
绑定关系配置说明
你当前使用GCE持久化磁盘作为集群存储,和Docker本地bind mount的逻辑有差异,不需要手动配置宿主机的本地目录路径,K8s会自动完成云盘到运行Pod节点的挂载操作。你需要配置的绑定规则全部写在Pod的YAML文件中,和Docker命令的对应关系如下:
- Docker命令中的
target=<docker_dir>对应Pod配置里spec.containers[*].volumeMounts.mountPath字段,填写你要挂载到容器内的路径即可 - 你当前的Pod配置存在错误:
spec.volumes中定义的存储卷名称为pvc,但volumeMounts下的name字段写的是dir,两者必须完全一致才能完成绑定,修正后的Pod配置示例如下:
kind: Pod apiVersion: v1 metadata: name: k8s-pod spec: volumes: # 定义存储卷,绑定你提前创建的PVC资源 - name: pvc persistentVolumeClaim: claimName: pvc containers: - name: image_name image: eu.gcr.io/container:latest volumeMounts: # 容器内挂载路径,替换为你实际需要的路径 - mountPath: <docker_dir> # 必须和上方volumes中定义的存储卷名称完全一致 name: pvc
如果你确实需要和Docker bind mount完全一致的效果,直接挂载Pod运行节点的本地目录,可以使用hostPath类型的存储卷,配置示例如下:
注意:hostPath类型存储的数据只会保存在对应节点的本地磁盘,Pod漂移到其他节点后无法访问之前的数据,不适合需要持久化存储的场景
kind: Pod apiVersion: v1 metadata: name: k8s-pod spec: volumes: - name: host-dir hostPath: # 对应Docker命令中的source=<host_dir>,填写宿主机本地路径 path: <host_dir> type: DirectoryOrCreate containers: - name: image_name image: eu.gcr.io/container:latest volumeMounts: # 对应Docker命令中的target=<docker_dir>,填写容器内挂载路径 - mountPath: <docker_dir> name: host-dir
你之前创建的PV和PVC配置无需修改,只需要修正Pod配置中的存储卷名称匹配问题即可完成挂载。
内容的提问来源于stack exchange,提问作者Nil
相关产品推荐
相关产品推荐

