gpt4 book ai didi

Kubernetes 持久卷覆盖 pod/容器中的现有数据

转载 作者:行者123 更新时间:2023-12-04 03:51:44 25 4
gpt4 key购买 nike

我们正在尝试使用与 pod/container 目录映射的 kubernetes 持久卷作为备份。容器目录 (/home) 已经有来自 dockerimage 的数据,但是当我们使用容器目录 (/home) 挂载 kubernetes 持久卷时,容器数据会被覆盖或消失。
如何使 kubernetes 持久卷不覆盖容器的数据,而仅使用预先存在的数据修改任何数据?
cat pv.yml

 apiVersion: v1
kind: PersistentVolume
metadata:
name: task-pv-volume
labels:
type: local
spec:
storageClassName: manual
capacity:
storage: 10Gi
accessModes:
- ReadWriteOnce
hostPath:
path: "/home/xyz/dock/main/kube/storage"
cat pvclaim.yml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: task-pv-claim
spec:
storageClassName: manual
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 3Gi
下面是主要的 list 文件,它部署具有持久卷 的 Pod
apiVersion: v1
kind: Pod
metadata:
name: mypod
spec:
volumes:
- name: task-pv-storage
persistentVolumeClaim:
claimName: task-pv-claim
- name: cgroup
hostPath:
path: /sys/fs/cgroup
type: Directory
containers:
- name: rbf-container
image: 10.190.205.11:5000/myimage/ubuntu:1.0
securityContext:
privileged: true
volumeMounts:
- mountPath: "/home/xyz" ##-> mounting persistent volume with container directory /home/xyz**
name: task-pv-storage
- mountPath: /sys/fs/cgroup
name: cgroup
带有 kubernetes 持久卷的输出:
$ ssh 10.244.4.29
Failed to add the host to the list of known hosts (/home/xyz/.ssh/known_hosts).
xyz@10.244.4.29's password:
Last login: Tue Aug 25 11:16:48 2020 from 10.252.85.167
$ bash
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

xyz@mypod:~$ ls
xyz@mypod:~$ ls -l
total 0 ##--> no data present it all get vanished
xyz@mypod:~$ pwd
/home/xyz
从没有持久卷的 pod 输出
$ ssh 10.244.4.29
Failed to add the host to the list of known hosts (/home/xyz/.ssh/known_hosts).
xyz@10.244.4.29's password:
Last login: Tue Aug 25 11:16:48 2020 from 10.252.85.167
$ bash
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

xyz@mypod:~$ ls
xyz@mypod:~$ ls -l
total 465780
drwxrwxrwx 1 xyz xyz 4096 Aug 13 12:44 Desktop
drwxr-xr-x 2 xyz xyz 4096 Aug 25 11:12 Documents
drwxr-xr-x 2 xyz xyz 4096 Aug 25 11:12 Downloads
drwxr-xr-x 2 xyz xyz 4096 Aug 25 11:12 Music
drwxr-xr-x 2 xyz xyz 4096 Aug 25 11:12 Pictures
drwxr-xr-x 2 xyz xyz 4096 Aug 25 11:12 Public
drwxr-xr-x 2 xyz xyz 4096 Aug 25 11:12 Templates
drwxr-xr-x 2 xyz xyz 4096 Aug 25 11:12 Videos
-rw------- 1 xyz xyz 2404352 Aug 25 11:12 core
drwx------ 4 root root 4096 Aug 10 08:39 local.bak
-rw-r--r-- 1 root root 474439680 Aug 10 08:35 local.tar
正如您所看到的,来自 dockerimage 的数据无需使用持久卷即可使用

最佳答案

我才刚刚开始 Kubernetes 之旅,仍在努力掌握最佳实践,但我认为您尝试做的事情是不可能的(在/home 到/home 的情况下)。 AFAIK 数据不会被覆盖,而是存在于安装“下”。您可以通过使用 mount --bind folder_a folder_b 挂载文件夹来自己尝试此操作。然后使用 umount folder_b 卸载文件夹.创建挂载会隐藏 folder_b 中的文件,但卸载会使它们再次出现。
所以这意味着您只需要通过将文件复制到卷来初始化卷。您可以通过 kubectl exec <pod> -- <command> 实现此目的,或通过运行 job ,或与 initContainers ,或通过使用入口点 shell 脚本。由于一遍又一遍地将文件复制到安装的卷是浪费能源,我认为前两个选项是首选。

关于Kubernetes 持久卷覆盖 pod/容器中的现有数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64368659/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com