SSH を使用してクラスタノードに接続する

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

クラスタノードの 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 ファイルのパスです。

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

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

kubectl --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] get secrets -n [USER_CLUSTER_NAME] ssh-keys -o yaml \
| grep ssh.key: | awk '{ print $NF }' | 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 yaml \
| grep vsphere_tmp: | awk '{ print $NF }' | 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 アドレスです。