21

Jestem całkiem nowy na platformie Google Cloud i Docker, a także skonfigurowałem klaster węzłów, zrobiłem plik Dockerfile, który kopiuje repozytorium i uruchamia REPL Clojure na publicznym porcie. Mogę połączyć się z nim z mojego IDE i bawić się z moim kodem, niesamowite!Jak SSH do kontenera dokera w klastrze kubernetes?

Że jednak REPL powinien prawdopodobnie tunelować przez SSH, ale tutaj zaczyna się mój problem. nie mogę znaleźć odpowiednie miejsce do ssh do dokonywania zmian w repo że Docker uruchamia rEPL na:

  • Odsłonięta IP tylko naraża obsługę rEPL (? Poprawne kubernetes terminu) i nie pozwala mnie do SSH w.
  • Ani punkt końcowy master klastra, daje mi błąd klucza publicznego, mimo że podążałem za Adding or removing SSH keys for all of the instances in your project część here.

Chciałbym edytować pliki źródłowe przez SSH, ale potrzebowałbym uzyskać dostęp do repozytorium kodu doków. Nie wiem, jak postępować.

Rozumiem, że to nie jest typowy sposób wdrażania aplikacji, więc nie jestem nawet pewien, czy istnieje możliwość pracy wielu węzłów ze zmodyfikowaną bazą kodu doków (czy węzły udostępniają JVM w jakiś sposób?).

Moje pytanie brzmi: w jaki sposób mogę wykonać SSH w kontenerze dokowania, aby uzyskać dostęp do bazy kodów?

Odpowiedz

1

nie mogę znaleźć odpowiednie miejsce do ssh do dokonywania zmian w repo że Docker uruchamia rEPL na

podczas tworzenia klastra, to przepis szereg węzłów wirtualnych maszyn w swojej Google Cloud Project. Jeśli spojrzysz na https://console.cloud.google.com/compute/instances powinieneś je zobaczyć, a każdy z nich będzie posiadał zewnętrzny adres IP, do którego będziesz mógł się zalogować. Następnie utwórz tunel SSH do maszyny wirtualnej węzła, która przekazuje lokalny port do adresu IP pod.

Należy pamiętać, że jeśli uruchamiasz wiele replik aplikacji clojure, musisz połączyć się z każdą z replik oddzielnie, aby zaktualizować aplikację.

1

Możesz użyć narzędzia kubectl do dołączenia lub uruchomienia uruchomionych kontenerów w klastrze K8s.

11

Najlepszy sposób na dołączenie do kontenera za pomocą polecenia exec.

Dołączyć do dokowanym systemem pojemnik

docker exec -it YOUR_CONTAINER_ID bash

Dołączyć do Kubernetes systemem pojemniku.

kubectl exec -it YOUR_CONTAINER/POD_NAME bash
14

przypadki Lista:

gcloud compute instances list 

SSH na przykład:

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

Na przykład, lista procesów eksploatacji i ich identyfikatory opakowaniu:

sudo docker ps -a 

Dołączyć do kontener:

sudo docker exec -it <container_id> bash 
+0

Dzięki! Mam 'gcr.io/cloudql-docker/gce-proxy', który nie daje się uruchomić i próbuję zdiagnozować. Użyłem 'docker run -it sh', ale muszę zobaczyć z moimi wierzchowcami. Jakieś pojęcie o tym, jak wolumeny określają "uruchamianie dokerów", wyglądają jak sekrety w węźle? – kross

32

Format polecenia dla Kubernetes 1.5.0:

kubectl exec -it <POD NAME> -c <CONTAINER NAME> bash 
+0

Działa świetnie. Może być konieczne dodanie -n , jeśli pojawi się komunikat "Błąd z serwera (NotFound): nie znaleziono" blabla "strąków" – rdeboo