5
votes

équivalent de "minikube ssh" avec le nœud Kubernetes docker-for-desktop

J'utilise Docker pour Mac mais je ne l'utilise actuellement que pour son cluster Kubernetes. Le nœud unique du cluster Kubernetes est nommé docker-for-desktop .

Je suis actuellement en train de suivre un didacticiel Kubernetes sur les volumes persistants ( https://kubernetes.io/docs/tasks/configure-pod-container/configure-persistent-volume-storage/ ) et dans ce cadre, je mets en place un volume persistant hostPath . Il semble que la façon dont cela fonctionne est, vous créez un chemin sur le nœud Kubernetes lui-même et vous pouvez l'utiliser comme volume persistant à des fins de développement et de test.

Pour ce faire, le tutoriel vous demande de SSH dans votre nœud Kubernetes lui-même et de créer un chemin qui peut ensuite être transformé en volume persistant. Le seul problème est que je ne sais pas comment SSH directement dans le nœud Kubernetes lui-même (pas un conteneur). L'équivalent pour minikube serait simplement minikube ssh . Je peux kubectl décrire le nœud, mais je n’obtiens qu’une adresse IP interne, pas une adresse externe. Je ne sais donc pas comment y remédier dans une commande ssh .

Des idées?


2 commentaires

Je pense que vous pouvez trouver la réponse ici .


Copie possible de Comment accéder à la VM créée par HyperKit de docker? < / a>


3 Réponses :


-1
votes

Update:

Si le nœud était créé par docker-machine en utilisant VirtualBox, serait similaire à minikube, avec la commande:

docker-machine ssh default

Si vous utilisez le pilote HyperKit par défaut pour MAC, il n'y a pas de VM comme VirtualBox, mais vous devriez pouvoir ouvrir le shell avec commande suivante:

screen ~ / Library / Containers / com.docker.docker / Data / vms / 0 / tty

Original:

Si vous avez un accès direct au nœud et au certificat, c'est aussi simple qu'une commande comme celle-ci:

ssh -i certificatename docker@10.0.0.1

ou p>

ssh -i certificatename 10.0.0.1

jetez un œil à ce post.

Si vous exécutez Kubernetes dans un fournisseur de cloud, vous devez utiliser les outils du fournisseur pour le faire.

Un exemple est le Google Cloud que vous utiliseriez:

gcloud compute ssh - zone

Azure et Aws ont également des options similaires, vous pouvez également utiliser leur portail pour cela.

Une autre alternative, consiste à utiliser un conteneur bastian \ helper dans le cluster pour se connecter aux nœuds sans configurer les autorisations réseau, il fonctionne sur le cloud ou sur les clusters locaux.

Quelque chose comme:

kubectl run -it --rm aks -ssh --image = debian

Cela exécutera un conteneur avec bash, puis vous devrez installer le client ssh apt-get update && apt-get install openssh-client - y copiez le certificat client dans le conteneur et ssh dans le nœud comme ssh -i id_rsa azureuser@10.240.0.4 .

Il y a un bel exemple dans le Documents AKS


2 commentaires

La question ne concerne-t-elle pas spécifiquement Docker pour Mac? Votre réponse semble résoudre le problème d'une installation plus générique sur le Cloud


Corrigez @PierreB., Le problème est que Docker pour Mac ne semble pas exposer un nom DNS ou quelque chose comme ça. Cette réponse n'aborde pas ce point.



2
votes

Le commentaire dans le PO devrait obtenir du crédit pour cela, mais je vais ajouter à nouveau pour que je trouve cela plus facile dans quelques mois:

docker run -it --rm --privileged --pid=host justincormack/nsenter1

De https://github.com/justincormack/nsenter1/blob/master/README.md

... ceci est utile lorsque vous exécutez une distribution Linux légère et optimisée pour les conteneurs telle que LinuxKit ... vous démontrez avec Docker pour Mac, par exemple, vos conteneurs ne s'exécutent pas directement sur votre hôte, mais sont s'exécutant à la place dans une machine virtuelle Linux OS minimale spécialement conçue pour exécuter des conteneurs, c'est-à-dire LinuxKit. Mais étant un environnement léger, LinuxKit n'exécute pas sshd, alors comment accéder à un shell afin de pouvoir exécuter nsenter pour inspecter les espaces de noms pour le processus exécuté en tant que pid 1?


0 commentaires

0
votes

Je cherchais une réponse lors de l'exécution de k8 sur Docker Desktop, puis j'ai essayé docker ps et à ma grande surprise, les conteneurs de mon pod étaient là.

Donc, je ssh comme vous serait avec n'importe quel conteneur Docker

$ docker exec -it 0b83055dac1b /bin/bash


0 commentaires