Ich bin relativ neu für die Google Cloud-Plattform und Docker und habe ein Cluster von Knoten eingerichtet, eine Docker-Datei erstellt, die ein Repo kopiert und ein Clojure REPL auf einem öffentlichen Port ausführt. Ich kann von meiner IDE aus eine Verbindung herstellen und mit meinem Code herumspielen, super!
Das REPL sollte jedoch wahrscheinlich durch SSH getunnelt werden, aber hier beginnt mein Problem. Ich kann keinen geeigneten Ort für SSH in finden, um Änderungen am Repo vorzunehmen, an dem Docker das REPL ausführt:
Adding or removing SSH keys for all of the instances in your project
-Teil hier gefolgt bin.Ich möchte die Quelldateien über SSH bearbeiten, aber ich müsste auf das Docker-Code-Repo zugreifen. Ich weiß nicht, wie ich vorgehen soll.
Ich verstehe, dass dies nicht gerade ein typischer Weg ist, um Anwendungen bereitzustellen, daher bin ich nicht einmal sicher, ob mehrere Knoten mit einer modifizierten Docker-Codebase arbeiten können (teilen die Knoten die JVM irgendwie?).
Konkret meine Frage ist, wie kann ich mit SSH in den Docker-Container gelangen, um auf die Codebase zuzugreifen?
Ich kann keinen geeigneten Ort für SSH finden, um Änderungen an dem Repo vorzunehmen, auf dem Docker die REPL ausführt
Wenn Sie einen Cluster erstellen, stellen Sie eine Anzahl von Knoten-VMs in Ihrem Google-Cloud-Projekt bereit. Wenn Sie auf https://console.cloud.google.com/compute/instances schauen, sollten Sie sie sehen und jeder wird eine externe IP-Adresse haben, in die Sie ssh eingeben können. Erstellen Sie dann einen SSH-Tunnel mit einem Knoten VM, der einen lokalen Port an die IP-Adresse des Pods weiterleitet.
Wenn Sie mehrere Repliken Ihrer Clojure-App ausführen, müssen Sie für jedes Update separat eine Verbindung herstellen, um die App zu aktualisieren.
Das Befehlsformat für Kubernetes 1.5.0:
kubectl exec -it <POD NAME> -c <CONTAINER NAME> bash
Instanzen auflisten:
gcloud compute instances list
SSH in Instanz:
gcloud compute ssh <instance_name> --zone=<instance_zone>
Listen Sie in der Instanz die laufenden Prozesse und ihre Container-IDs auf:
Sudo docker ps -a
An einen Container anhängen:
Sudo docker exec -it <container_id> bash
Die beste Methode zum Anhängen an den Container über den Befehl exec.
Am Docker laufenden Container anbringen
docker exec -it YOUR_CONTAINER_ID bash
An Kubernetes laufenden Container anschließen.
kubectl exec -it YOUR_CONTAINER/POD_NAME-Bash
Verbindung zu Kubernetes, die Container in einem bestimmten Namespace ausführen.
kubectl exec -it YOUR_CONTAINER/POD_NAME -n YOUR_NAMESPACE-Bash
Wenn sich der Pod in Ihrem aktuellen Namespace befindet, rufen Sie die Liste der Pods ab:
kubectl get pods
Wähle eine Schote. Führen Sie eine Bash-Session aus:
kubectl exec -it [POD_NAME] -- /bin/bash
Alternativ können Sie den gewünschten Pod in einem anderen Namespace suchen:
kubectl get pods --all-namespaces
Wähle einen Pod und führe eine Bash-Session darauf aus:
kubectl exec -it [POD_NAME] --namespace [NAMESPACE] -- /bin/bash