kubernetes - 从 Docker Desktop 上运行的 Kubernetes 集群中清除持久卷
问题描述
我在我的单节点集群中运行 MySQL 映像,仅用于本地测试目的。
我希望能够在需要让图像从头开始构建新数据库时删除数据库,但我似乎无法找到可以轻松做到这一点的位置或方式。
我在 Windows 上,使用 Docker Desktop 使用 WSL2 管理我的 Docker 映像和 Kubernetes 集群。该 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
docker
是否有一个命令我可以用来查看这个数据库在我的 Windows 或 WSL2 机器上的存储位置,以便我可以手动删除它,或者通过或从命令行删除它kubectl
?
解决方案
对于任何在未来寻找这个解决方案并且不想通过深入的 github 讨论来挖掘的人,我的解决方案是这样的:
定义路径时更改hostPath:
为。local:
hostPath 显然适用于您的 kubernetes 节点提供商是否有外部永久磁盘,例如 GCE 或 AWS。
其次,从 Docker 桌面指向本地计算机的符号链接的路径显然可以在/run/desktop/mnt/host/c
您的 c 驱动器中找到。我设置了路径并在我的 C 驱动器的根目录中/run/desktop/mnt/host/c/MySQLTemp
创建了一个文件,它可以工作。MySQLTemp
第三,local:
路径定义需要 nodeAffinity。你可以告诉它像这样使用 Docker Desktop:
spec:
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- docker-desktop
推荐阅读
- mongodb - mongodb 模型在调用函数 levelQuestion 时包含更改
- loops - SSIS foreach 循环枚举器 empty 为空 - 仅在部署时
- makefile - *.c 在依赖 xh 更改时不会反抗,使用自动生成的 *.d 文件
- tfs - Azure Devops - 是否可以防止复制或克隆工作项
- node.js - TypeError [ERR_UNESCAPED_CHARACTERS] 请求路径包含非转义字符
- css - 行跨度未在全日历中应用
- python-3.x - Python 3.7 Flask-SocketIO + uWSGI + nginx 配置
- powershell-3.0 - 5 台机器中有 1 台无法使用 Invoke-Command 共享权限
- r - r lm 参数估计
- mjpeg - 如果文件中定义了 MJPEG 帧速率,该怎么办?