Установка Minikube в Ubuntu vm VT-X / AMD-v позволяет VM внутри другой VM

Я пытаюсь установить minikube в Ubuntu 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]:

Я нашел ссылка, согласно этому, мы не можем иметь виртуализацию внутри виртуализации. Это правда? Как я могу это исправить?

5 ответов


Virtual Box не поддерживает VT-X/AMD-v во вложенной виртуализации. Смотрите это open билет/запрос функции на virtualbox.org.

есть также еще несколько вопросов и ответов здесь на SO обсуждение этой темы.

возможные решения:

  1. как уже было сказано: используйте другой гипервизор это поддерживает VT-X / AMD - v во вложенной виртуализации (например, Xen, KVM или VMware).
  2. установите Minikube на хост-ОС, а не в виртуальной машине.

проверьте, правильно ли он включен для виртуальной машины (запуск внутри виртуальной машины):

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

и в ядре VM:

dmesg | egrep 'DMAR|IOMMU'

только VirtualBox работает С 32-битным вложенным гостем, поэтому также проверьте (это не поддержка вложенные гости, но работает С 32-бит):

uname -m

Я установил VM ware и установил Virtualbox внутри VM. И включен VT-X/AMD-v во внешней виртуальной машине. это прекрасно работает.


" установите Minikube на хост-ОС, а не в виртуальной машине."

Это не совсем правильно, на самом деле вы можете установить minikube в Linux VM поверх virtualbox или vmware и т. д. без опции драйвера, которая использует localkube напрямую иметь дело с kubernetes в VM host docker.

вы можете этот небольшой скрипт в Linux VM для запуска minikube в нескольких мин.

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


запустите Minikube непосредственно на виртуальной машине с помощью Docker и опции драйвера" нет", которая не требует вложенной виртуализации.

установите параметр драйвера none:

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

установите Docker-ce, следуя инструкциям для вашей версии ОС VM.

наконец запустите 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.