Déployer sur Kubernetes avec Docker Desktop
Docker Desktop inclut un serveur et client Kubernetes autonome, ainsi qu'une intégration CLI Docker, permettant le développement et test Kubernetes local directement sur votre machine.
Le serveur Kubernetes s'exécute comme un cluster à nœud unique ou multi-nœuds, dans des conteneur(s) Docker. Cette configuration légère vous aide à explorer les fonctionnalités Kubernetes, tester les charges de travail et travailler avec l'orchestration de conteneurs en parallèle avec d'autres fonctionnalités Docker.
Kubernetes sur Docker Desktop s'exécute aux côtés d'autres charges de travail, y compris les services Swarm et conteneurs autonomes.


Que se passe-t-il quand j'active Kubernetes dans Docker Desktop ?
Les actions suivantes sont déclenchées dans le backend et la VM Docker Desktop :
- Génération de certificats et configuration du cluster
- Téléchargement et installation des composants internes Kubernetes
- Démarrage du cluster
- Installation de contrôleurs supplémentaires pour le réseau et le stockage
Activer ou désactiver le serveur Kubernetes dans Docker Desktop n'affecte pas vos autres charges de travail.
Installer et activer Kubernetes
- Ouvrez le tableau de bord Docker Desktop et naviguez vers Paramètres.
- Sélectionnez l'onglet Kubernetes.
- Activez Activer Kubernetes.
- Choisissez votre méthode de provisionnement du cluster.
- Sélectionnez Appliquer et redémarrer pour sauvegarder les paramètres.
Ceci configure les images requises pour exécuter le serveur Kubernetes comme conteneurs, et installe l'outil en ligne de commande kubectl
sur votre système à /usr/local/bin/kubectl
(Mac) ou C:\Program Files\Docker\Docker\resources\bin\kubectl.exe
(Windows).
NoteDocker Desktop pour Linux n'inclut pas
kubectl
par défaut. Vous pouvez l'installer séparément en suivant le guide d'installation Kubernetes. Assurez-vous que le binairekubectl
est installé à/usr/local/bin/kubectl
.
Quand Kubernetes est activé, son statut s'affiche dans le pied de page du tableau de bord Docker Desktop et le menu Docker.
Vous pouvez vérifier quelle version de Kubernetes vous utilisez avec :
$ kubectl version
Méthode de provisionnement du cluster
Docker Desktop Kubernetes peut être provisionné avec les provisionneurs kubeadm
ou kind
.
kubeadm
est l'ancien provisionneur. Il supporte un cluster à nœud unique, vous ne pouvez pas sélectionner la version kubernetes, il est plus lent à provisionner que kind
, et il n'est pas supporté par l'
isolation de conteneur renforcée (ECI), ce qui signifie que si ECI est activé le cluster fonctionne mais n'est pas protégé par ECI.
kind
est le nouveau provisionneur, et il est disponible si vous êtes connecté et utilisez Docker Desktop version 4.38 ou ultérieure. Il supporte les clusters multi-nœuds (pour une configuration Kubernetes plus réaliste), vous pouvez choisir la version Kubernetes, il est plus rapide à provisionner que kubeadm
, et il est supporté par ECI (c'est-à-dire, quand ECI est activé, le cluster Kubernetes s'exécute dans des conteneurs Docker non privilégiés, le rendant ainsi plus sécurisé). Notez cependant que kind
nécessite que Docker Desktop soit configuré pour utiliser le stockage d'images containerd (le stockage d'images par défaut dans Docker Desktop 4.34 et ultérieures).
Le tableau suivant résume cette comparaison.
Fonctionnalité | kubeadm |
kind |
---|---|---|
Disponibilité | Docker Desktop 4.0+ | Docker Desktop 4.38+ (nécessite une connexion) |
Support de cluster multi-nœuds | Non | Oui |
Sélecteur de version Kubernetes | Non | Oui |
Vitesse de provisionnement | ~1 min | ~30 secondes |
Supporté par ECI | Non | Oui |
Fonctionne avec le stockage d'images containerd | Oui | Oui |
Fonctionne avec le stockage d'images Docker | Oui | Non |
Utiliser la commande kubectl
L'intégration Kubernetes installe automatiquement la CLI Kubernetes
à /usr/local/bin/kubectl
sur Mac et à C:\Program Files\Docker\Docker\Resources\bin\kubectl.exe
sur Windows. Cet emplacement peut ne pas être dans la variable PATH
de votre shell, vous devrez donc peut-être taper le chemin complet de la commande ou l'ajouter au PATH
.
Si vous avez déjà installé kubectl
et qu'il pointe vers un autre environnement, tel que minikube
ou un cluster Google Kubernetes Engine, assurez-vous de changer le contexte pour que kubectl
pointe vers docker-desktop
:
$ kubectl config get-contexts
$ kubectl config use-context docker-desktop
TipSi la commande
kubectl
config get-contexts retourne un résultat vide, essayez :
- D'exécuter la commande dans l'invite de commande ou PowerShell.
- De définir la variable d'environnement
KUBECONFIG
pour pointer vers votre fichier.kube/config
.
Vérifier l'installation
Pour confirmer que Kubernetes s'exécute, listez les nœuds disponibles :
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
docker-desktop Ready control-plane 3h v1.29.1
Si vous avez installé kubectl
en utilisant Homebrew, ou par une autre méthode, et rencontrez des conflits, supprimez /usr/local/bin/kubectl
.
Pour plus d'informations sur kubectl
, voir la documentation kubectl
.
Mettre à niveau votre cluster
Les clusters Kubernetes ne sont pas automatiquement mis à niveau avec les mises à jour Docker Desktop. Pour mettre à niveau le cluster, vous devez sélectionner manuellement Réinitialiser le cluster Kubernetes dans les paramètres.
Paramètres supplémentaires
Voir les conteneurs système
Par défaut, les conteneurs système Kubernetes sont masqués. Pour inspecter ces conteneurs, activez Afficher les conteneurs système (avancé).
Vous pouvez maintenant voir les conteneurs Kubernetes en cours d'exécution avec docker ps
ou dans le tableau de bord Docker Desktop.
Configurer un registre d'images personnalisé pour les images du plan de contrôle Kubernetes
Docker Desktop utilise des conteneurs pour exécuter le plan de contrôle Kubernetes. Par défaut, Docker Desktop tire les images de conteneur associées depuis Docker Hub. Les images tirées dépendent du mode de provisionnement du cluster.
Par exemple, en mode kind
il nécessite les images suivantes :
docker.io/kindest/node:<tag>
docker.io/envoyproxy/envoy:<tag>
docker.io/docker/desktop-cloud-provider-kind:<tag>
docker.io/docker/desktop-containerd-registry-mirror:<tag>
En mode kubeadm
il nécessite les images suivantes :
docker.io/registry.k8s.io/kube-controller-manager:<tag>
docker.io/registry.k8s.io/kube-apiserver:<tag>
docker.io/registry.k8s.io/kube-scheduler:<tag>
docker.io/registry.k8s.io/kube-proxy
docker.io/registry.k8s.io/etcd:<tag>
docker.io/registry.k8s.io/pause:<tag>
docker.io/registry.k8s.io/coredns/coredns:<tag>
docker.io/docker/desktop-storage-provisioner:<tag>
docker.io/docker/desktop-vpnkit-controller:<tag>
docker.io/docker/desktop-kubernetes:<tag>
Les tags d'image sont automatiquement sélectionnés par Docker Desktop basés sur plusieurs facteurs, incluant la version de Kubernetes utilisée. Les tags varient pour chaque image.
Pour accommoder les scénarios où l'accès à Docker Hub n'est pas autorisé, les administrateurs peuvent configurer Docker Desktop pour tirer les images listées ci-dessus depuis un registre différent (par ex., un miroir) en utilisant le paramètre KubernetesImagesRepository comme suit.
Un nom d'image peut être décomposé en composants [registry[:port]/][namespace/]repository[:tag]
.
Le paramètre KubernetesImagesRepository
permet aux utilisateurs de remplacer la portion [registry[:port]/][namespace]
du nom de l'image.
Par exemple, si Docker Desktop Kubernetes est configuré en mode kind
et KubernetesImagesRepository
est défini sur my-registry:5000/kind-images
, alors Docker Desktop tirera les images depuis :
my-registry:5000/kind-images/node:<tag>
my-registry:5000/kind-images/envoy:<tag>
my-registry:5000/kind-images/desktop-cloud-provider-kind:<tag>
my-registry:5000/kind-images/desktop-containerd-registry-mirror:<tag>
Ces images doivent être clonées/mises en miroir depuis leurs images respectives dans Docker Hub. Les tags doivent également correspondre à ce que Docker Desktop attend.
L'approche recommandée pour configurer ceci est la suivante :
-
Démarrer Docker Desktop.
-
Dans Paramètres > Kubernetes, activer le paramètre Afficher les conteneurs système.
-
Dans Paramètres > Kubernetes, démarrer Kubernetes en utilisant la méthode de provisionnement de cluster désirée :
kubeadm
oukind
. -
Attendre que Kubernetes démarre.
-
Utiliser
docker ps
pour voir les images de conteneur utilisées par Docker Desktop pour le plan de contrôle Kubernetes. -
Cloner ou mettre en miroir ces images (avec des tags correspondants) vers votre registre personnalisé.
-
Arrêter le cluster Kubernetes.
-
Configurer le paramètre
KubernetesImagesRepository
pour pointer vers votre registre personnalisé. -
Redémarrer Docker Desktop.
-
Vérifier que le cluster Kubernetes utilise les images du registre personnalisé en utilisant la commande
docker ps
.
NoteLe paramètre
KubernetesImagesRepository
s'applique seulement aux images du plan de contrôle utilisées par Docker Desktop pour configurer le cluster Kubernetes. Il n'a aucun effet sur les autres pods Kubernetes.
NoteLors de l'utilisation de
KubernetesImagesRepository
et quand l'isolation de conteneur renforcée (ECI) est activée, ajoutez les images suivantes à la liste d'images de montage de socket Docker ECI :
- [imagesRepository]/desktop-cloud-provider-kind:*
- [imagesRepository]/desktop-containerd-registry-mirror:*
Ces conteneurs montent le socket Docker, vous devez donc ajouter les images à la liste d'images ECI. Sinon, ECI bloquera le montage et Kubernetes ne démarrera pas.
Dépannage
- Si Kubernetes échoue à démarrer, assurez-vous que Docker Desktop s'exécute avec suffisamment de ressources allouées. Vérifiez Paramètres > Ressources.
- Si les commandes
kubectl
retournent des erreurs, confirmez que le contexte est défini surdocker-desktop
$ kubectl config use-context docker-desktop
- Si vous rencontrez des problèmes de cluster après une mise à jour, réinitialisez votre cluster Kubernetes. Réinitialiser un cluster Kubernetes peut aider à résoudre les problèmes en restaurant essentiellement le cluster à un état propre, et en supprimant les mauvaises configurations, données corrompues ou ressources bloquées qui peuvent causer des problèmes. Si le problème persiste encore, vous devrez peut-être nettoyer et purger les données, puis redémarrer Docker Desktop.
Désactiver et désinstaller Kubernetes
Pour désactiver Kubernetes dans Docker Desktop :
- Depuis le tableau de bord Docker Desktop, sélectionnez l'icône Paramètres.
- Sélectionnez l'onglet Kubernetes.
- Décochez la case Activer Kubernetes.
- Sélectionnez Appliquer et redémarrer pour sauvegarder les paramètres. Ceci arrête et supprime les conteneurs Kubernetes, et supprime également la commande
/usr/local/bin/kubectl
.