このページでは、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 アドレスです。