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

このページでは、GKE On-Prem クラスタノードへの Secure Shell(SSH)を確立する方法について説明します。

概要

ユーザー クラスタノードまたは管理クラスタノードに SSH 接続するには、クラスタのコントロール プレーンから SSH 認証鍵をダウンロードします。次に、鍵を使用してクラスタノードでシェルを起動します。

SSH 認証鍵をダウンロードしたら、SSH 認証鍵を Secret / 認証情報管理システム(HashiCorp Vault など)に保存することを検討してください。今後クラスタノードに SSH 接続して API サーバーが停止した場合は、保存された 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 ファイルのパスです。

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

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

  1. ユーザー クラスタの 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 に保存します。

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

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

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

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

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

  1. 管理クラスタの 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 に保存します。

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

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

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

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