【问题标题】:Minikube install in Ubuntu vm_VT-X/AMD-v enabling to VM inside another VM [closed]Minikube 安装在 Ubuntu vm_VT-X/AMD-v 中,启用另一个 VM 内的 VM [关闭]
【发布时间】:2017-07-06 18:22:38
【问题描述】:

我正在尝试在 Ubuntu vm 中安装 minikube(在虚拟机中)。我为 vm 启用了 VT-X/AMD-v。但我收到以下错误。

# minikube start
Starting local Kubernetes cluster...
E0217 15:00:35.395801    3869 start.go:107] Error starting host: Error creating host: Error with pre-create check: "This computer doesn't have VT-X/AMD-v enabled. Enabling it in the BIOS is mandatory".

 Retrying.
E0217 15:00:35.396019    3869 start.go:113] Error starting host:  Error creating host: Error with pre-create check: "This computer doesn't have VT-X/AMD-v enabled. Enabling it in the BIOS is mandatory"
================================================================================
An error has occurred. Would you like to opt in to sending anonymized crash
information to minikube to help prevent future errors?
To opt out of these messages, run the command:
    minikube config set WantReportErrorPrompt false
================================================================================
Please enter your response [Y/n]:

我找到了reference,据此,我们不能在虚拟化里面进行虚拟化。这是真的吗?我该如何解决这个问题?

【问题讨论】:

  • 为什么不在你的主机上运行 minikube?有适用于 windows、macOS 和 linux 的编译二进制文件。
  • 在将它部署到 ubuntu 远程服务器之前,我需要在我的虚拟机中进行测试

标签: ubuntu kubernetes minikube


【解决方案1】:

Virtual Box 不支持嵌套虚拟化中的 VT-X/AMD-v。请在 virtualbox.org 上查看此打开的 ticket/feature request

这里还有一些关于 SO 讨论 this topic 的问题和答案。

可能的解决方案:

  1. 如前所述:使用不同的虚拟机管理程序,它在嵌套虚拟化(如 Xen、KVM 或 VMware)中支持 VT-X/AMD-v。
  2. 在主机操作系统上安装 Minikube,而不是在虚拟机中。
  3. 使用 Docker 和“无”驱动程序选项直接运行 Minikube,如 Tad Guskis answer 中所述。

【讨论】:

  • 我可以在 aws ubuntu ec2 实例上运行 minikube 吗? ubuntu@ip-172-31-22-20:~$ uname -a Linux ip-172-31-22-20 3.13.0-137-generic #186-Ubuntu SMP Mon Dec 4 19:09:19 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
  • 请提出一个单独的问题,或者在您的情况下直接参考 aws 支持。
  • 如果您更喜欢使用 VirtualBox,您仍然可以通过在 VirtualBox 中安装 Docker 并按照 @k13i 解决方案运行 minikube start --vm-driver=none 来做到这一点。
【解决方案2】:

使用 Docker 和不需要嵌套虚拟化的“无”驱动程序选项直接在 VM 上运行 Minikube。

设置无驱动选项:

[root@minikube ~]# minikube config set vm-driver none

按照您的 VM 操作系统版本的说明安装 Docker-ce。

最后运行 minikube start:

[root@minikube ~]# systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
[root@minikube ~]# systemctl start docker
[root@minikube ~]# minikube start
Starting local Kubernetes v1.10.0 cluster...
Starting VM...
Getting VM IP address...
Moving files into cluster...
Downloading kubeadm v1.10.0
Downloading kubelet v1.10.0
Finished Downloading kubelet v1.10.0
Finished Downloading kubeadm v1.10.0
Setting up certs...
Connecting to cluster...
Setting up kubeconfig...
Starting cluster components...
Kubectl is now configured to use the cluster.
===================
WARNING: IT IS RECOMMENDED NOT TO RUN THE NONE DRIVER ON PERSONAL WORKSTATIONS
        The 'none' driver will run an insecure kubernetes apiserver as root that may leave the host vulnerable to CSRF attacks

When using the none driver, the kubectl config and credentials generated will be root owned and will appear in the root home directory.
You will need to move the files to the appropriate location and then set the correct permissions.  An example of this is below:

        sudo mv /root/.kube $HOME/.kube # this will write over any previous configuration
        sudo chown -R $USER $HOME/.kube
        sudo chgrp -R $USER $HOME/.kube

        sudo mv /root/.minikube $HOME/.minikube # this will write over any previous configuration
        sudo chown -R $USER $HOME/.minikube
        sudo chgrp -R $USER $HOME/.minikube

This can also be done automatically by setting the env var CHANGE_MINIKUBE_NONE_USER=true
Loading cached images from config file.

【讨论】:

    【解决方案3】:

    尝试在没有嵌套虚拟化的情况下运行 minikube(应该安装 docker):

    minikube start --vm-driver=none
    

    来自 Kubernetes documentation

    Minikube 还支持运行 Kubernetes 组件在主机上,而不是在 VM 中。使用此驱动程序 需要 Docker 和 linux 环境,但不需要管理程序。

    【讨论】:

      【解决方案4】:

      “在主机操作系统上安装 Minikube,而不是在虚拟机中。”

      这不完全正确,实际上你可以在virtualbox或vmware等之上的Linux VM中安装minikube,无需驱动选项,它使用localkube直接处理VM主机docker中的kubernetes。

      您可以在 Linux VM 中使用这个小脚本在几分钟内启动 minikube。

      https://github.com/robertluwang/docker-hands-on-guide/blob/master/minikube-none-installation.md

      【讨论】:

        【解决方案5】:

        检查是否为 VM 正确启用(在 VM 内运行):

        egrep -i '^flags.*(svm|vmx)' /proc/cpuinfo
        

        在虚拟机内核中:

        dmesg | egrep 'DMAR|IOMMU'
        

        VirtualBox 仅适用 32 位嵌套客户机,所以还要检查(它不支持 嵌套客户机,但 适用 32 -位):

        uname -m
        

        【讨论】:

        • [49.563077] vboxpci: IOMMU 未找到(未注册)
        • 您运行的是 32 位还是 64 位客户机? 64 位嵌套客户机将无法在 VirtualBox 中运行。
        • 我安装了VM ware并在VM内部安装了Virtualbox。并在外部 VM 中启用了 VT-X/AMD-v。它工作正常。
        【解决方案6】:

        我安装了 VM ware 并在 VM 中安装了 Virtualbox。并在外部 VM 中启用了 VT-X/AMD-v。它工作正常。

        【讨论】:

          【解决方案7】:

          在 virtualbox .vmx 文件中设置以下属性。

          登录 esx 框并为您的 vm 找到 *.vmx 文件。

          例如:

          echo 'vhv.enable = "TRUE"' >> /vmfs/volumes/54183927-04f91918-a72a-6805ca147c55/ubun204_mk/ubun204_mk.vmx 
          

          然后运行 minikube 启动

          祝你好运!

          【讨论】:

            猜你喜欢
            • 2022-09-29
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-08-13
            • 2021-01-23
            • 2018-07-06
            • 2017-12-18
            • 2019-11-27
            相关资源
            最近更新 更多