gpt4 book ai didi

kubernetes - 从 Docker Desktop 上运行的 Kubernetes 集群中清除持久卷

转载 作者:行者123 更新时间:2023-12-02 16:12:00 25 4
gpt4 key购买 nike

我在我的单节点集群中运行一个 MySQL 镜像,仅用于本地测试。

我希望能够在需要时删除数据库,让图像从头开始构建新数据库,但我似乎无法找到在哪里或如何轻松地做到这一点。

我在 Windows 上,使用 Docker Desktop 管理我的 Docker 镜像和 Kubernetes 集群以及 WSL2。 Pod 使用持久卷/声明,如下所示。

apiVersion: v1
kind: PersistentVolume
metadata:
name: mysql-pv-volume
labels:
type: local
spec:
storageClassName: manual
capacity:
storage: 3Gi
accessModes:
- ReadWriteOnce
hostPath:
path: "/var/MySQLTemp"
type: DirectoryOrCreate
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: mysql-pv-claim
spec:
storageClassName: manual
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 3Gi

我部署的卷部分如下所示:

        volumeMounts:
- name: mysql-persistent
mountPath: /var/lib/mysql
volumes:
- name: mysql-persistent
persistentVolumeClaim:
claimName: mysql-pv-claim

有没有一个命令可以用来查看这个数据库在我的 Windows 或 WSL2 机器上的存储位置,以便我可以手动删除它,或者通过 docker 从命令行删除它>kubectl?

最佳答案

对于任何在未来寻找这个解决方案,并且不想通过深入的 github 讨论进行挖掘的人,我的解决方案是这样的:

定义路径时,将hostPath:改为local:。 hostPath 显然适用于您的 kubernetes 节点提供商是否具有外部永久性磁盘,例如 GCE 或 AWS。

其次,从 Docker 桌面指向本地计算机的符号链接(symbolic link)的路径显然可以在 /run/desktop/mnt/host/c 中为您的 C 驱动器找到。我将我的路径设置为 /run/desktop/mnt/host/c/MySQLTemp 并在我的 C 驱动器的根目录中创建了一个 MySQLTemp 文件,它工作了。

第三,local: 路径定义需要一个 nodeAffinity。您可以像这样告诉它使用 Docker Desktop:

spec:
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- docker-desktop

关于kubernetes - 从 Docker Desktop 上运行的 Kubernetes 集群中清除持久卷,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67746843/

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