J'ai une image dans mon référentiel docker. J'essaie de créer un POD à partir de celui-ci, mais K8S donne l'erreur suivante.
Échec de l'extraction de l'image "cloudanswer: latest": rpc error: code = Unknown desc = Get https://registry-1.docker.io/v2/ : net / http: requête annulée en attente de connexion (Client.Timeout dépassé en attente d'en-têtes)
Il semble que K8S se connecte à https://registry-1.docker.io/v2/ au lieu de prendre à partir du référentiel Docker local.
Comment faire en sorte que K8S prenne une image pour le référentiel Docker local?
3 Réponses :
imagePullPolicy doit être défini sur IfNotPresent pour extraire des images du référentiel Docker local
Kubernetes prend en charge un type spécial de secret que vous pouvez créer et qui sera utilisé pour récupérer des images pour vos pods. Plus de détails ici
Si vous utilisez un nœud unique dans votre cluster, assurez-vous que cette image Docker est disponible sur ce nœud. Vous pouvez vérifier via
docker pull <dns-name-of-machine>:5000/ubuntu
Définissez également imagePullPolicy sur Never , sinon Kubernetes essaiera de télécharger l'image.
, vous pouvez utiliser le docker image de registre . Utilisez un registre local:
docker push <dns-name-of-machine>:5000/ubuntu
Maintenant, balisez correctement votre image:
docker tag ubuntu <dns-name-of-machine>:5000/ubuntu
nom DNS de la machine exécutant le conteneur de registre doit être accessible par tous les nœuds du réseau
Poussez maintenant votre image vers le registre local:
docker run -d -p 5000:5000 --restart=always --name registry registry:2
Vous devriez pouvoir extraire il retourne:
docker image ls
Maintenant, changez votre fichier yaml pour utiliser le registre local.
que voulez-vous dire dépôt local de docker? si vous avez un registre privé, vous devez spécifier le nom complet de l'image (avec le registre)
Pouvez-vous exécuter la connexion Docker?