如何在 Virtualbox 中将新硬盘附加到 Minikube?

How to attach a new hard disk to Minikube in Virtualbox?

我正在尝试将硬盘连接到 Minikube。我可以通过转到设置 > 存储并从那里添加一个新硬盘来创建一个新硬盘,但我不知道如何将它连接到 Minikube。任何人都知道如何?任何帮助将不胜感激!

可以在 Virtualbox 环境中以多种方式为您的 minikube 实例提供额外的存储空间。

其中一些是:


关注:

创建一个额外的 Virtualbox 磁盘并将其装载到 minikube 个实例

假设:

  • 您已经启动了 minikube 实例并且 运行 Virtualbox 作为驱动程序
  • 您将新创建的磁盘附加到您的 minikube 实例(例如VMDK

步骤:

  • 检查 minikube 实例是否知道新磁盘
  • 准备要挂载的新磁盘
  • 安装你的磁盘
  • 使用您新创建的磁盘作为示例 pods

检查 minikube 实例是否知道新磁盘

您需要连接到您的 minikube 实例:

  • 运行 在 powershell/cmd/terminal 以下命令:
    • $ minikube ssh
  • 使用 Virtualbox 图形化

您需要确定您之前安装的磁盘。您可以使用以下命令来完成:

  • $ fdisk -l

此命令的输出应如下所示:

Disk /dev/sdb: 16 GiB, 17179869184 bytes, 33554432 sectors
Disk model: VBOX HARDDISK
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xb925daf0

准备要挂载的新磁盘

您需要为此磁盘创建分区 table 并对其进行格式化。

  • $ fdisk /dev/sdb
  • n,p,1,enter,enter - 为整个磁盘创建一个分区

您可以使用以下指南获取更多参考:

您还需要格式化此磁盘:

  • mkfs.ext4 /dev/sdb1 # 请注意数字

安装你的磁盘

您可以使用以下命令挂载此磁盘:

  • mkdir /data/disk - 创建一个文件夹以将您的磁盘装入
  • mount /dev/sdb1 /data/disk - 将磁盘挂载到指定位置(重启后不工作)

Disclaimer!

Creating an entry in /etc/fstab to have this disk mounted between shutdowns/reboots will not work as /etc/fstab will be overridden with each $ minikube start

要克服 /etc/fstab 被覆盖的问题,您需要:

  • 在以下位置创建文件:/var/lib/boot2docker/
  • 姓名:bootlocal.sh
  • 内容:mount /dev/sdb1 /data/disk

此步骤将创建一个脚本,该脚本将在每次启动 minikube 实例时执行,将磁盘安装到 /data/disk

参考minikube中的启动命令:


使用您新创建的磁盘作为示例 pods

默认minikube实例支持hostPath:

您可以使用以下示例创建 PV 和 PVC:

apiVersion: v1
kind: PersistentVolume
metadata:
  name: pv0001
spec:
  storageClassName: standard
  accessModes:
    - ReadWriteOnce
  capacity:
    storage: 1Gi
  hostPath:
    path: /data/disk/pv0001
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pv0001-claim
spec:
  storageClassName: standard
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1Gi
  volumeName: pv0001

您可以将之前创建的 PVC 挂载到 pod:

apiVersion: v1
kind: Pod
metadata:
  name: ubuntu
spec:
  volumes:
    - name: storage-name
      persistentVolumeClaim:
        claimName: pv0001-claim
  containers:
    - name: ubuntu
      image: ubuntu
      command: 
      - sleep
      - "infinity"
      volumeMounts:
        - mountPath: "/storage"
          name: storage-name

我在 /data/disk/pv0001 中放入了一个文件来检查它是否正常工作:

$ kubectl exec -it ubuntu -- cat /storage/hello.txt
Hello there!