it-swarm.dev

Come collegare SSH al contenitore mobile nel cluster di Kubernetes?

Sono abbastanza nuovo sulla piattaforma Google Cloud e Docker e ho configurato un cluster di nodi, creato un Dockerfile che copia un repository e esegue un Clojure REPL su una porta pubblica. Posso collegarmi dal mio IDE e giocare con il mio codice, fantastico!

Quel REPL dovrebbe comunque essere scavalcato attraverso SSH, ma qui è dove inizia il mio problema. Non riesco a trovare un posto adatto per SSH in per apportare modifiche al repository che Docker esegue il REPL su:

  • L'IP esposto espone solo il servizio REPL (correggi il termine kubernetes?) E non mi consente di accedere a SSH. 
  • Nemmeno l'endpoint del cluster master mi dà un errore di chiave pubblica anche se ho seguito la parte Adding or removing SSH keys for all of the instances in your projecthere .

Vorrei modificare i file sorgente tramite SSH, ma avrei bisogno di accedere al repository del codice docker. Non so come procedere.

Capisco che questo non è esattamente un modo tipico di distribuire le applicazioni, quindi non sono nemmeno sicuro che sia possibile far funzionare più nodi con una base di codice docker modificata (i nodi condividono la JVM in qualche modo?).

Concretamente, la mia domanda è: come posso inserire SSH nel contenitore docker per accedere al codebase?

27
bbs

Non riesco a trovare un posto adatto a SSH per apportare modifiche al repository che Docker esegue il REPL su

Quando si crea un cluster, si esegue il provisioning di un numero di VM nodo nel progetto google cloud. Se guardi a https://console.cloud.google.com/compute/instances dovresti vederli e ognuno di essi avrà un indirizzo IP esterno che potrai inserire in ssh. Quindi creare un tunnel ssh su un nodo VM che inoltra una porta locale all'indirizzo IP del pod. 

Si noti che se si eseguono più repliche dell'app per clojure, è necessario connettersi a ciascuna replica separatamente per aggiornare l'app. 

3
Robert Bailey

Il formato del comando per Kubernetes 1.5.0:

kubectl exec -it <POD NAME> -c <CONTAINER NAME> bash
50

Elenca istanze:

gcloud compute instances list

SSH in istanza:

gcloud compute ssh <instance_name> --zone=<instance_zone>

Nell'istanza, elencare i processi in esecuzione e i relativi ID contenitore:

Sudo docker ps -a

Allegare a un contenitore:

Sudo docker exec -it <container_id> bash  
18
Yoshua Wuyts

Il modo migliore per collegarsi al contenitore tramite il comando exec.

Allega al contenitore mobile della finestra mobile

esegui finestra mobile -titolo YOUR_CONTAINER_ID

Allegare al contenitore in esecuzione di Kubernetes.

kubectl exec -it YOUR_CONTAINER/POD_NAME bash

Collega a Kubernetes il contenitore in esecuzione in un determinato spazio dei nomi.

kubectl exec -it YOUR_CONTAINER/POD_NAME -n TUO_NOME_PASSO
13
Nitin

Se il pod si trova nello spazio dei nomi corrente, ottieni l'elenco dei pod:

kubectl get pods

Scegli un pod. Esegui una sessione bash su di esso:

kubectl exec -it [POD_NAME] -- /bin/bash

In alternativa, trova il pod desiderato in un diverso spazio dei nomi:

kubectl get pods --all-namespaces

Scegli un pod ed esegui una sessione bash su di esso:

kubectl exec -it [POD_NAME] --namespace [NAMESPACE] -- /bin/bash
1
John McGehee