如何解决我在哪里可以找到在 Mac 上本地运行的 Kubernetes 集群上的 PersistentVolume 的路径
我需要将文件 (.txt) 复制到 PersistentVolume?
kubectl cp <file-spec-src> <file-spec-dest>
我需要知道 PersistentVolume 的 <file-spec-dest>
。
背景:我有一个单节点 Kubernetes-Cluster (docker-desktop) 在我的 mac 上本地运行。我正在尝试将 .txt 文件复制到 PersistentVolume (PV)。我已经创建了 PV 和 PersistentVolumeClaim (PVC)。
注意:有人问我用 pod 代替persistentVolume 是否更有意义。目的是作为 Kubernetes 作业运行的映像将使用 .txt 文件中的数据。
持久卷:
apiVersion: v1
kind: PersistentVolume
metadata:
name: task-pv-volume
labels:
type: local
spec:
capacity:
storage: 10Gi
accessModes:
- ReadWriteMany
hostPath:
path: "/mnt/data"
持久卷声明:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: task-pv-claim
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 3Gi
这是我用 kubectl get pvc -o yaml
得到的
apiVersion: v1
items:
- apiVersion: v1
kind: PersistentVolumeClaim
metadata:
annotations:
pv.kubernetes.io/bind-completed: "yes"
pv.kubernetes.io/bound-by-controller: "yes"
volume.beta.kubernetes.io/storage-provisioner: docker.io/hostpath
creationTimestamp: "2021-02-18T15:06:19Z"
finalizers:
- kubernetes.io/pvc-protection
managedFields:
- apiVersion: v1
fieldsType: FieldsV1
fieldsV1:
f:metadata:
f:annotations:
.: {}
f:pv.kubernetes.io/bind-completed: {}
f:pv.kubernetes.io/bound-by-controller: {}
f:volume.beta.kubernetes.io/storage-provisioner: {}
f:spec:
f:volumeName: {}
f:status:
f:accessModes: {}
f:capacity:
.: {}
f:storage: {}
f:phase: {}
manager: kube-controller-manager
operation: Update
time: "2021-02-18T15:06:19Z"
- apiVersion: v1
fieldsType: FieldsV1
fieldsV1:
f:spec:
f:accessModes: {}
f:resources:
f:requests:
.: {}
f:storage: {}
f:volumeMode: {}
manager: kubectl-create
operation: Update
time: "2021-02-18T15:06:19Z"
name: task-pv-claim
namespace: default
resourceVersion: "113659"
selfLink: /api/v1/namespaces/default/persistentvolumeclaims/task-pv-claim
uid: 5b825c41-cf4f-4c08-b90e-47e3fca557a1
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 3Gi
storageClassName: hostpath
volumeMode: Filesystem
volumeName: pvc-5b825c41-cf4f-4c08-b90e-47e3fca557a1
status:
accessModes:
- ReadWriteOnce
capacity:
storage: 3Gi
phase: Bound
kind: List
metadata:
resourceVersion: ""
selfLink: ""
解决方法
目标目录是您在 pod/job manifest 中作为 mountPath
使用的目录。因此,如果您选择将其安装在 /mnt/data
中,它将成为您的目标目录。例如:
apiVersion: batch/v1
kind: Job
metadata:
name: pi
spec:
template:
spec:
volumes:
- name: task-pv-claim
hostPath:
path: /mnt/data
type: Directory
containers:
- name: pi
image: nginx
command: ["some_job"]
volumeMounts:
- name: task-pv-claim
mountPath: /mnt/data
restartPolicy: Never
因此,如果要将文件从主机复制到已挂载的目录:
kubectl cp <some_host_file> <pod_name>/:/mnt/data
除此之外,如果您使用 hostPath
,它会将文件从您的主机复制到指定目录中的 pod,这样您只需将文件放在那里,它就会被复制到 pod。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。