vSphere with Tanzu のスーパーバイザ クラスタに作成した Tanzu Kubernetes クラスタ(TKC)仮想マシンに、踏み台(Jumpbox)として用意した Linux 仮想マシンから SSH で接続してみます。
ドキュメントでは、下記のあたりです。
今回の内容です。
今回の環境
接続先 TKC に関係する情報です。
- vSphere 8.0 GA(vCenter Server 8.0 GA)
- スーパーバイザ制御プレーンの IP アドレス: 192.168.131.130
- vSphere 名前空間: test-ns-21
- TKC の名前: tkc-01
今回は、踏み台 仮想マシン(Jumpbox VM)として Linux(Photon OS 4.0)の仮想マシンを用意してあります。
root@jumpbox-vm-01 [ ~ ]# cat /etc/photon-release VMware Photon OS 4.0 PHOTON_BUILD_NUMBER=2f5aad892
Jumpbox VM には、unzip を tdnf(もしくは yum)でインストールしておきます。
# tdnf install -y unzip
1. 踏み台 仮想マシン(Jumpbox VM)の準備
用意しておいた Photon OS の Jumpbox VM に、vNIC 追加と、kubectl インストールを実施しておきます。
1-1. vNIC 2 の追加
NSX ネットワークを利用する TKC の仮想マシンは、外部のネットワークから直接アクセスしにくいネットワークに配置されます。そこで Jumpbox VM には、下記のように vNIC 2 を追加しておきます。
- vNIC 1(eth0): Jumpbox VM に SSH 接続する vNIC。外部から接続できるポートグループを割り当てて、IP アドレスを設定しておく。
- vNIC 2(eth1): Jumpbox VM → TKC 仮想マシンの SSH 接続で使用する vNIC。TKC 仮想マシンと同じポートグループ に接続しておく。
NSX を利用しているスーパーバイザ クラスタでは、TKC を作成するたびにオーバーレイ ネットワークが作成されます。そのため、この Jumpbox VM から SSH する TKC を変更する場合は、都度 vNIC 2 のポートグループと、ゲスト OS での IP アドレス設定を変更する必要があります。
一方で、Jumpbox VM から直接ネットワーク接続性がある(vDS ネットワークを利用するスーパーバイザ クラスタの場合などの) TKC 仮想マシンであれば、Jumpbox VM には vNIC 1 のみで十分です。
1-2. kubectl と vSphere Plug-in のインストール
今回は、Jumpbox VM から TKC 仮想マシンの情報を確認します。そこで、スーパーバイザ制御プレーン(192.168.131.130)から、kubectl と vSphere Plug-in をダウンロードします。
# curl -k -O https://192.168.131.130/wcp/plugin/linux-amd64/vsphere-plugin.zip
ZIP ファイルを展開します。
# unzip vsphere-plugin.zip Archive: vsphere-plugin.zip creating: bin/ inflating: bin/kubectl-vsphere inflating: bin/kubectl
kubectl が展開された bin ディレクトリに PATH を通します。
# export PATH=$(pwd)/bin:$PATH # echo 'export PATH=$(pwd)/bin:$PATH' >> .bash_profile # kubectl version --client --short Client Version: v1.23.5+vmware.wcp.2
2. TKC 仮想マシンの SSH 接続情報の確認
kubectl で スーパーバイザ制御プレーンに接続して、TKC 仮想マシンの IP アドレスと SSH パスワードを確認します。
2-1. スーパーバイザ制御プレーンへの接続
スーパーバイザ制御プレーンに接続して、コンテキストを TKC を作成した vSphere 名前空間と同名のものに切り替えます。
スーパーバイザ制御プレーン(192.168.131.130)に login します。
# kubectl vsphere login --insecure-skip-tls-verify --server=192.168.131.130
login が成功すると、TKC を作成してある vSphere 名前空間と同名のコンテキストが作成されます。作成されたコンテキスト(test-ns-21)に切り替えます。
# kubectl config use-context test-ns-21
作成されている TKC(tkc-01)が確認できます。
# kubectl get tkc NAME CONTROL PLANE WORKER TKR NAME AGE READY TKR COMPATIBLE UPDATES AVAILABLE tkc-01 1 1 v1.22.9---vmware.1-tkg.1.cc71bc8 37h True True [v1.23.8+vmware.2-tkg.2-zshippable]
2-2. 接続先 TKC 仮想マシンの IP アドレスの確認
TKC 仮想マシンの IP アドレスは、VirtualMachine リソースで確認できます。
# kubectl get vspheremachine NAME ZONE PROVIDERID IPADDR tkc-01-control-plane-9pv4j-n2zxq vzone-04 vsphere://420c6e40-4397-199f-4507-abfb491d1f0c 10.245.0.34 tkc-01-worker-infra-758dl-tk6dr vsphere://420c68bf-7a46-3c96-e5bc-43f1b6ddad16 10.245.0.35
下記のように仮想マシン名(tkc-01-control-plane-9pv4j-n2zxq)と JSON Path を指定すると、IP アドレスのみを取得できます。
# kubectl get vspheremachine tkc-01-control-plane-9pv4j-n2zxq -o jsonpath={.status.vmIp} 10.245.0.34
2-3. 接続先 TKC 仮想マシンの SSH パスワードの確認
TKC 仮想マシンのパスワードは、TKC を作成した名前空間に、下記のような名前の Secret リソースに記載されています。
- <TKC 名>-ssh-password
実際には、下記のように「ssh-passwordkey」作成されています。
# kubectl get secrets tkc-01-ssh-password NAME TYPE DATA AGE tkc-01-ssh-password Opaque 1 37h # kubectl get secrets tkc-01-ssh-password -o yaml apiVersion: v1 data: ssh-passwordkey: SGxka3JiVjJkakJzT0dtcUNNZTFHSnVvekdLdCsyTzREMWZTWVJ0bE9nND0= kind: Secret metadata: creationTimestamp: "2023-04-05T10:02:55Z" name: tkc-01-ssh-password namespace: test-ns-21 ownerReferences: - apiVersion: run.tanzu.vmware.com/v1alpha3 kind: TanzuKubernetesCluster name: tkc-01 uid: 19264213-c254-4fda-be22-d2d24f66c016 resourceVersion: "98313" selfLink: /api/v1/namespaces/test-ns-21/secrets/tkc-01-ssh-password uid: f774f5e8-a325-4220-8ddc-78e198cc5387 type: Opaque
ssh-passwordkey の文字列は、base64 でエンコードされています。
# kubectl get secrets tkc-01-ssh-password -o jsonpath={.data.ssh-passwordkey} | more SGxka3JiVjJkakJzT0dtcUNNZTFHSnVvekdLdCsyTzREMWZTWVJ0bE9nND0=
これを下記のようにデコード(base64 -d)することで、TKC の OS ユーザ(vmware-system-user)のパスワードがわかります。
# kubectl get secrets tkc-01-ssh-password -o jsonpath={.data.ssh-passwordkey} | base64 -d | more HldkrbV2djBsOGmqCMe1GJuozGKt+2O4D1fSYRtlOg4=
3. TKC 仮想マシンへの SSH 接続
それでは、Jumpbox VM から、SSH 接続してみます。
3-1. vNIC 2 への IP アドレス設定
前の手順で確認した TKC の制御プレーン 仮想マシンの IP アドレスは、10.245.0.32/28 ネットワークの「10.245.0.34」でした。
そこで、Jumpbox VM の vNIC 2(eth1)に、TKC 仮想マシンと同じネットワークの未使用 IP アドレス(今回は 10.245.0.39/28)を設定します。
# ip addr add dev eth1 10.245.0.39/28 # ip addr show dev eth1 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000 link/ether 00:50:56:8c:51:0f brd ff:ff:ff:ff:ff:ff altname eno2 altname enp19s0 altname ens224 inet 10.245.0.39/28 scope global eth1 valid_lft forever preferred_lft forever inet6 fe80::250:56ff:fe8c:510f/64 scope link valid_lft forever preferred_lft forever
3-2. TKC 仮想マシンへの SSH 接続
TKC 仮想マシンには、vmware-system-user ユーザで SSH 接続します。
パスワード文字列が長すぎるため、キーボードでの入力だとおそらくタイムアウトするので、コピー & ペーストなどで入力するとよいと思います
# ssh vmware-system-user@10.245.0.34 The authenticity of host '10.245.0.34 (10.245.0.34)' can't be established. ED25519 key fingerprint is SHA256:yWhssz45wmiNZWJztCBgNL7sS1z7FoIS42TWuR2A2K8. This key is not known by any other names Are you sure you want to continue connecting (yes/no/[fingerprint])? yes ★初回は yes を入力 Warning: Permanently added '10.245.0.34' (ED25519) to the list of known hosts. Welcome to Photon 3.0 (\m) - Kernel \r (\l) vmware-system-user@10.245.0.34's password: ★SSH パスワードを入力 Last login: Fri Apr 7 00:04:07 2023 from 10.245.0.39 00:05:08 up 1 day, 13:44, 0 users, load average: 0.30, 0.25, 0.27 33 Security notice(s) Run 'tdnf updateinfo info' to see the details. vmware-system-user@tkc-01-pgh7s-5sbng [ ~ ]$
TKC 仮想マシンの内部からでも、Kubernetes クラスタの状態を確認できたりします。
vmware-system-user@tkc-01-pgh7s-5sbng [ ~ ]$ sudo su - root@tkc-01-pgh7s-5sbng [ ~ ]# kubectl --kubeconfig=/etc/kubernetes/admin.conf get nodes NAME STATUS ROLES AGE VERSION tkc-01-pgh7s-5sbng Ready control-plane,master 37h v1.22.9+vmware.1 tkc-01-worker-d4mn9-78f9f675bc-p4pwp Ready37h v1.22.9+vmware.1
ちなみに、TKC を再作成する場合は SSH 公開キーが変更されるため、SSH 接続時にエラーになったりします。これは、都度 $HOME/.ssh/known_hosts ファイルから古いキーを削除するか、SSH で「-o StrictHostKeyChecking=no」オプションを指定することで回避できます。
# ssh -o StrictHostKeyChecking=no vmware-system-user@10.245.0.34 Warning: Permanently added '10.245.0.34' (ED25519) to the list of known hosts. Welcome to Photon 3.0 (\m) - Kernel \r (\l) vmware-system-user@10.245.0.34's password:
以上、踏み台 仮想マシンから TKC 仮想マシンに SSH 接続してみる話でした。
vSphere Pod から SSH 接続する様子はこちら。