kubernetes - Kubernetes容器内的VirtualBox

标签 kubernetes virtualbox

Headless VirtualBox 在 Docker 容器中成功运行

docker run --device=/dev/vboxdrv:/dev/vboxdrv my-vb

我需要在 Kubernetes 上运行这个镜像,我得到:
VBoxHeadless: Error -1909 in suplibOsInit!
VBoxHeadless: Kernel driver not accessible

Kubernetes 对象:
metadata:
  name: vbox
  labels:
    app: vbox
spec:
  selector:
    matchLabels:
      app: vbox
  template:
    metadata:
      labels:
        app: vbox
    spec:
      securityContext:
        runAsUser: 0
      containers:
      - name: vbox-vm
        image: my-vb
        imagePullPolicy: 'Always'
        ports:
        - containerPort: 6666

        volumeMounts:
        - mountPath: /root/img.vdi
          name: img-vdi

        - mountPath: /dev/vboxdrv
          name: vboxdrv

      volumes:
      - name: img-vdi
        hostPath:
          path: /root/img.vdi
          type: File

      - name: vboxdrv
        hostPath:
          path: /dev/vboxdrv
          type: CharDevice

此镜像在 Docker 中运行,因此必须是 Kubernetes 配置中的问题。

最佳答案

这项工作的配置需要稍作修改:

metadata:
  name: vbox
  labels:
    app: vbox
spec:
  selector:
    matchLabels:
      app: vbox
  template:
    metadata:
      labels:
        app: vbox
    spec:
      securityContext:
        runAsUser: 0
      containers:
      - name: vbox-vm
        image: my-vb
        imagePullPolicy: 'Always'
        securityContext:  # << added
          privileged: true

        ports:
        - containerPort: 6666

        volumeMounts:
        - mountPath: /root/img.vdi
          name: img-vdi

        - mountPath: /dev/vboxdrv
          name: vboxdrv

      volumes:
      - name: img-vdi
        hostPath:
          path: /root/img.vdi
          type: File

      - name: vboxdrv
        hostPath:
          path: /dev/vboxdrv
          type: CharDevice

为了能够运行特权容器,您需要:
  • 使用 --allow-privileged
  • 运行的 kube-apiserver
  • kubelet(所有可能有这个容器的主机)运行 --allow-privileged=true

  • https://kubernetes.io/docs/concepts/workloads/pods/pod/#privileged-mode-for-pod-containers 上查看更多信息

    一旦它工作正常,请通过 PodSecurityPolicy

    关于kubernetes - Kubernetes容器内的VirtualBox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55342051/

    相关文章:

    vagrant puphpet Composer 创建项目不起作用

    ruby - 在 osx 10.7 上运行 Vagrant/Puppet 的问题

    c - VirtualBox 无法加载 .img 或 .flp 文件

    linux - 如何更改设备的访问权限或将我的用户添加到 VirtualBox 中的磁盘组?

    kubernetes 清理 pod、服务、部署等

    azure - Azure 上的 Kubernetes 多集群 Pod 对等

    kubernetes - 配备kubeadm时重新启动kube-apiserver

    java - mysql-java-connector 连接被拒绝

    kubernetes - Helm 防止在 helm init 上添加默认图表 repo

    postgresql - kubernetes卷权限错误上的postgres