21

Google CloudプラットフォームとDockerの新機能でノードのクラスタをセットアップし、リポジトリをコピーしてパブリックポートでClojure REPLを実行するDockerfileを作成しました。私は自分のIDEからそれに接続し、素晴らしいコードで遊ぶことができます!kubernetesクラスタでSSHをドッキングする方法は?

しかし、REPLはおそらくSSH経由でトンネリングする必要がありますが、ここで問題が発生します。 に私はドッカーはREPLを実行レポに変更を加えるためのにSSHで接続するための適切な場所を見つけることができません:露出IPだけでREPLサービス(?正しいkubernetes用語)を公開し、許可されていません

  • 私はSSHに。
  • Adding or removing SSH keys for all of the instances in your projectの部分hereに従ったにもかかわらず、それは私に公開鍵のエラーを与えます。

SSH経由でソースファイルを編集したいと思いますが、私はドッカーコードリポジトリにアクセスする必要があります。私はどのように進むべきかわかりません。

これはアプリケーションをデプロイする典型的な方法ではないので、修正されたドッカーコードベースで複数のノードを動作させることさえできないことはわかっています(ノードは何とかJVMを共有しますか?

具体的に私の質問は、コードベースにアクセスするためのドッキング用のコンテナにSSHするのですか?

答えて

1

私はあなたに、あなたが提供するノードVMの数をクラスタを作成ドッカーが

上でREPLを実行レポへの変更を行うためにSSHで接続するための適切な場所を見つけることができませんあなたgoogleクラウドプロジェクト。 https://console.cloud.google.com/compute/instancesを見ると、それらが表示され、それぞれにsshに接続できる外部IPアドレスが割り当てられます。次に、ローカルポートをポッドIPアドレスに転送するノードVMへのsshトンネルを作成します。

clojureアプリの複数のレプリカを実行している場合、アプリを更新するには、別々に各レプリカに接続する必要があります。

1

kubectlツールを使用すると、K8sクラスタ内の実行中のコンテナに接続することができます。

11

execコマンドを使用してコンテナに接続する最善の方法。

はKubernetes実行中のコンテナに取り付け

docker exec -it YOUR_CONTAINER_ID bash

コンテナ

を実行しているドッキングウィンドウにアタッチ。

kubectl exec -it YOUR_CONTAINER/POD_NAME bash
14

リストインスタンス:インスタンスに

gcloud compute instances list 

SSH:インスタンスで

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

、実行中のプロセスとそのコンテナのIDリスト:

sudo docker ps -a 

にアタッチしますコンテナ:

sudo docker exec -it <container_id> bash 
+0

ありがとう!私は 'gcr.io/cloudsql-docker/gce-proxy'を手に入れて失敗を続け、診断しようとしています。私は 'docker run -it sh'を使用しましたが、私は自分のマウントで見る必要があります。 'docker run'のボリューム引数がノード上にあるときの秘密のようなものは何ですか? – kross

32

Kubernetes 1.5.0用のコマンド形式:

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

素晴らしい作品です。あなたが取得する場合を-n追加する必要があるかもしれません「サーバー(NOTFOUND)からのエラー:ポッド 『blabla』が見つかりません。」 – rdeboo

関連する問題