Image showing 3 solutions simples pour exécuter minikube dans une VM Ubuntu vm_VT-X/AMD-v

3 solutions simples pour exécuter minikube dans une VM Ubuntu vm_VT-X/AMD-v

affiliate best offer

Comment exécuter minikube dans une machine virtuelle Ubuntu vm_VT-X/AMD-v

En tant que développeur, j’aime avoir un environnement reproductible. Mes clients fournissent souvent les spécifications techniques de leur environnement et j’aime les reproduire localement pour être au plus proche de leur environnement.

Pour pouvoir installer minikube sur une machine virtuelle, exécutant virtualbox, vous devez utiliser le bon pilote (aucun).

Dans ce tutoriel, je vais vous montrer comment installer et configurer minikube sur la machine virtuelle. Le système d’exploitation sera Ubuntu.

TL;DR

Pour installer minikube sur une machine virtuelle exécutant virtualbox, suivez ces étapes :

  1. Installez minikube comme vous le feriez normalement. Consultez mon tutoriel ici

  2. Configurez minikube pour qu’il n’utilise aucun pilote. Le pilote none ne nécessite aucune virtualisation imbriquée.
  3. Installez docker-ce en suivant les instructions de votre système d’exploitation. (le mien est ubuntu)
  4. Activez docker et démarrez-le
  5. Démarrez minikube

Le problème auquel je faisais face

J’étais en train d’installer minikube dans une machine virtuelle virtualbox exécutant le système d’exploitation Ubuntu. J’ai activé VT-X/AMD-v pour la machine virtuelle.

Mais j’obtiens l’erreur suivante lorsque j’essaie de démarrer mon minikube.

# minikube start

Vous obtenez cette sortie :

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]:

Ce qui se passe?

VirtualBox ne prend pas en charge VT-X/AMD-v dans la virtualisation imbriquée. Vous pouvez en savoir plus ici [^2]

Il existe donc peu d’approches pour résoudre ce problème :

  1. Exécutez directement minilube sur ma machine, pas de VM virtualbox.
  2. Utilisez un hyperviseur différent prenant en charge VT-X/AMD-v dans la virtualisation imbriquée (comme Xen, KVM ou VMware).
  3. Exécutez Minikube directement à l’aide de Docker et de l’option de pilote “none”

Les solutions

Il y a peu de solutions que je pourrais mettre en œuvre.

Installer directement minikube sur ma machine

Il existe des binaires compilés pour Windows, MacOs et Linux, donc j’aurais pu installer directement minikube sur mon hôte.

Avantages

  • Facile à installer

Les inconvénients

  • Aimé à mon ordinateur
  • Besoin de réinstaller et de configurer si je change d’ordinateur ou si j’ai besoin de réinstaller le système d’exploitation.
  • Je ne peux pas disposer d’un environnement de test comparable avant de déployer ma solution dans l’environnement du client.

Exécutez minikube avec le pilote none

La documentation de kubernetes indique :

Minikube prend également en charge une option –vm-driver=none qui exécute les composants Kubernetes sur l’hôte et non sur une VM. L’utilisation de ce pilote nécessite Docker et un environnement Linux, mais pas un hyperviseur [^1].

  1. Installez docker sur la machine virtuelle VirtualBox
  2. Configurez minikube pour utiliser le pilote none.
minikube config set vm-driver none
  1. Activer Docker sur la machine virtuelle
systemctl enable docker

Vous obtiendrez cette sortie.

Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
  1. Exécutez le menu fixe
systemctl start docker
  1. Démarrer minikube
minikube start

Vous obtiendrez cette sortie.

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.

Utiliser un autre hyperviseur

VirtualBox est un hyperviseur que vous installez sur votre machine pour héberger les machines virtuelles. Comme il ne supporte pas VT-X/AMD-v en virtualisation imbriquée, vous pouvez utiliser les alternatives :

-Xen -KVM -VMware

  • etc.

Conclusion

Vous pouvez installer minikube dans une VM. Mais pour le faire fonctionner, vous devez faire quelques ajustements. Mais il est possible de le réaliser.

L’exécuter à l’intérieur d’une VM vous permet d’automatiser votre workflow de développement. Vous pouvez même penser à des outils comme vagrant pour provisionner automatiquement votre machine virtuelle afin que vous disposiez d’un environnement reproductible.

Références

Début de la virtualisation

[^1]https://stackoverflow.com/a/52635546/5730444

[^2]https://www.virtualbox.org/ticket/4032

Full Bright

Full Bright

A professional and sympathic business man.

Contact

Contact Us

To order one of our services, navigate to the order service page

Address

10 rue de Penthièvre,
75008 Paris

Email Us

hello at bright-softwares dot com

Open Hours

Monday - Friday
9:00AM - 05:00PM