SSH を使用したクラスタノードへの接続

このページでは、GKE On-Prem クラスタノードに SSH 接続する方法を説明します。

始める前に

以降の手順を行う前に、ユーザー クラスタと管理クラスタの kubeconfig ファイルの場所を確認しておく必要があります。デフォルトでは、これらのファイルは、管理者クラスタとユーザー クラスタを作成したディレクトリに保存されます。kubeconfig の詳細については、GKE ドキュメントの kubectl 用のクラスタ アクセスの構成をご覧ください。

クラスタノードの IP アドレスを取得する

ユーザー クラスタノードの IP アドレスを取得します。

kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] get nodes --output wide

ここで、[USER_CLUSTER_KUBECONFIG] はユーザー クラスタの kubeconfig ファイルのパスです。

管理クラスタノードの IP アドレスを取得します。

kubectl --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] get nodes --output wide

ここで、[ADMIN_CLUSTER_KUBECONFIG] は管理クラスタの kubeconfig ファイルのパスです。

どちらのコマンドでも、INTERNAL-IP フィールドをメモします。これらはノードの IP アドレスです。

SSH を使用したユーザー クラスタ ノードへの接続

ユーザー クラスタの SSH 認証鍵を取得します。

kubectl --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] get secrets -n [USER_CLUSTER_NAME] ssh-keys \
-o jsonpath='{.data.ssh\.key}' | base64 -d > \
~/.ssh/[USER_CLUSTER_NAME].key && chmod 600 ~/.ssh/[USER_CLUSTER_NAME].key

ここで

  • [ADMIN_CLUSTER_KUBECONFIG] は、管理クラスタの kubeconfig ファイルのパスです。

  • [USER_CLUSTER_NAME] は、ユーザー クラスタの名前です。

上記のコマンドによって、次の手順が行われます。

  • 管理クラスタから、[USER_CLUSTER_NAME] Namespace で ssh-keys という名前の Secret の ssh.key フィールドを取得します。

  • 鍵を Base64 でデコードします。

  • デコードされた鍵をファイル ~/.ssh/[USER_CLUSTER_NAME].key に保存します。

  • 鍵ファイルに適切なアクセス権を設定します。

鍵を使用してユーザー クラスタノードに SSH 接続します。

ssh -i ~/.ssh/[USER_CLUSTER_NAME].key ubuntu@[NODE_IP]

ここで、[NODE_IP]以前に収集したユーザー クラスタ内のノードの内部 IP アドレスです。

SSH を使用した管理クラスタノードへの接続

管理クラスタの SSH 認証鍵を取得します。

kubectl --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] get secrets -n kube-system sshkeys \
-o jsonpath='{.data.vsphere_tmp}' | base64 -d > \
~/.ssh/admin-cluster.key && chmod 600 ~/.ssh/admin-cluster.key

ここで、[ADMIN_CLUSTER_KUBECONFIG] は管理クラスタの kubeconfig ファイルのパスです。

上記のコマンドによって、次の手順が行われます。

  • 管理クラスタから、kube-system Namespace で sshkeys という名前の Secret の vsphere_tmp フィールドを取得します。

  • Base64 で vsphere_tmp フィールドをデコードします。これが鍵となります。

  • デコードされた鍵をファイル ~/.ssh/admin-cluster.key に保存します。

  • 鍵ファイルに適切なアクセス権を設定します。

鍵を使用して管理クラスタノードに SSH 接続します。

ssh -i ~/.ssh/admin-cluster.key ubuntu@[NODE_IP]

ここで、[NODE_IP]以前に収集した管理クラスタ内のノードの内部 IP アドレスです。