前回は、vSphere with Tanzu のラボ環境で、Tanzu Kubernetes クラスタを作成しました。
前回はこちら。
一連の投稿のまとめはこちら。
今回の内容です。
今回は、作成した Tanzu Kubernetes クラスタに接続して、Pod を起動してみます。
Tanzu Kubernetes クラスタは作成ずみです。
なお、前回の手順で作成していますが、再作成しているのでノードの名前が異なります。
Tanzu Kubernetes クラスタへの接続
kubectl で、Tanzu Kubernetes クラスタに接続します。vSphere むけの kubectl の準備については、下記の投稿のようにしています。
kubectl vsphere login では、スーパーバイザー クラスタに接続する場合のコマンドラインに、追加で下記のオプションを指定しています。
- --tanzu-kubernetes-cluster-namespace=lab-ns-02
→Tanzu Kubernetes クラスタを作成した、スーパーバイザー名前空間「lab-ns-02」を指定する。 - --tanzu-kubernetes-cluster-name=tkg-cluster-01
→ Tanzu Kubernetes クラスタの名前「tkg-cluster-01」を指定する。
Tanzu Kubernetes クラスタの名前は、スーパーバイザー名前空間ごとに一意になるので、「--tanzu-kubernetes-cluster-name」だけでなく、名前空間「--tanzu-kubernetes-cluster-namespace」も指定する必要があります。
$ kubectl vsphere login --insecure-skip-tls-verify --server=192.168.70.33 --tanzu-kubernetes-cluster-namespace=lab-ns-02 --tanzu-kubernetes-cluster-name=tkg-cluster-01 Username: administrator@vsphere.local ★ユーザー名を入力 Password: ★パスワード入力 Logged in successfully. You have access to the following contexts: 192.168.70.33 lab-ns-01 lab-ns-02 tkg-cluster-01 If the context you wish to use is not in this list, you may need to try logging in again later, or contact your cluster administrator. To change context, use `kubectl config use-context` $
Kubernetes クラスタを構成するノードの確認
context を明示的に指定して get nodes でノードの確認をしてみます。Tanzu Kubernetes クラスタでは、下記のように、デプロイされた VM によって、スーパーバイザー クラスタとは別の Kubernetes クラスタが構成されていることが分かります。
$ kubectl --context tkg-cluster-01 get nodes NAME STATUS ROLES AGE VERSION tkg-cluster-01-control-plane-5w6vn Ready master 13h v1.16.8+vmware.1 tkg-cluster-01-control-plane-p89lb Ready master 12h v1.16.8+vmware.1 tkg-cluster-01-control-plane-phd6l Ready master 12h v1.16.8+vmware.1 tkg-cluster-01-workers-l6qtc-586578bd88-5d7kh Ready12h v1.16.8+vmware.1 tkg-cluster-01-workers-l6qtc-586578bd88-czrpg Ready 12h v1.16.8+vmware.1 tkg-cluster-01-workers-l6qtc-586578bd88-vk6f8 Ready 12h v1.16.8+vmware.1
あらためて、Tanzu Kubernetes クラスタ(tkg-cluster-01)の外側の context(lab-ns-02 名前空間と同名)を指定して、Kubernetes ノードを確認しておきます。
こちらは、ESXi と Supervisor Control Plane VM で、Kubernetes のクラスタが構成されています。
$ kubectl --context lab-ns-02 get nodes
NAME STATUS ROLES AGE VERSION
422c6912a62eabbf0a45c417405308c9 Ready master 67d v1.17.4-2+a00aae1e6a4a69
422c9d9222c60e5328cdc12a543c099a Ready master 67d v1.17.4-2+a00aae1e6a4a69
422cfbc654627c47880a2ec7ae144424 Ready master 67d v1.17.4-2+a00aae1e6a4a69
lab-wcp-esxi-031.go-lab.jp Ready agent 67d v1.17.4-sph-091e39b
lab-wcp-esxi-032.go-lab.jp Ready agent 67d v1.17.4-sph-091e39b
lab-wcp-esxi-033.go-lab.jp Ready agent 67d v1.17.4-sph-091e39b
Tanzu Kubernetes クラスタでの Pod 起動
以前に vSphere Pod を起動した YAML ファイルで、tkg-cluster-01 上に Pod を起動してみます。
YAML ファイルの内容は、次のようになっています。
kubectl で操作する context を tkg-cluster-01 に切り替えます。
$ kubectl config use-context tkg-cluster-01 Switched to context "tkg-cluster-01".
それでは、Pod を起動します。
$ kubectl apply -f nginx-pod.yml pod/nginx-pod created
tkg-cluster-01 クラスタのノード(tkg-cluster-01-workers-~)で起動されました。
$ kubectl get pods -o wide NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES nginx-pod 1/1 Running 0 40s 192.0.175.2 tkg-cluster-01-workers-l6qtc-586578bd88-vk6f8 <none> <none>
一方、vSphere Client で確認すると、(vSphere Pod の場合ような)Pod の確認はできません。
vSphere Pod の場合には、インベントリや下記の赤枠のあたりで、起動された Pod が表示されていました。しかし、Tanzu Kubernetes クラスタの Pod(そして他の Kubernete リソースも)は、この「コア Kubernetes」の画面には表示されません。
これは、Pod が VM(この環境では、「tkg-cluster-01-workers-~」)の内部で起動されているためです。
vSphere Pod は、Pod が特殊な VM として作成されるので vSphere Client での視認性がよかったのですが、Tanzu Kubernetes クラスタでは、よくある「Docker をインストールした VM」と同様、Pod がコンテナホストになる VM の内部で起動されます。そのため特に「vSphere ならではの見やすさ」はありません。
そこで、リソースの確認には Octant などのKubernetes 可視化ツールがあると便利です。
つづく。