vm.gowatana.jp

NEOにほんごVMware(仮)

vSphere with Tanzu ラボ環境構築。Part-15: Tanzu Kubernetes クラスタへの接続 / Pod 起動編

前回は、vSphere with Tanzu のラボ環境で、Tanzu Kubernetes クラスタを作成しました。

 

前回はこちら。

 

一連の投稿のまとめはこちら。

 

今回の内容です。

 

今回は、作成した Tanzu Kubernetes クラスタに接続して、Pod を起動してみます。 

Tanzu Kubernetes クラスタは作成ずみです。

f:id:gowatana:20201116084052p:plain

 

なお、前回の手順で作成していますが、再作成しているのでノードの名前が異なります。

 

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   Ready       12h   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 ファイルの内容は、次のようになっています。

gist.github.com

 

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」の画面には表示されません。

f:id:gowatana:20201116084118p:plain

これは、Pod が VM(この環境では、「tkg-cluster-01-workers-~」)の内部で起動されているためです。

 

vSphere Pod は、Pod が特殊な VM として作成されるので vSphere Client での視認性がよかったのですが、Tanzu Kubernetes クラスタでは、よくある「Docker をインストールした VM」と同様、Pod がコンテナホストになる VM の内部で起動されます。そのため特に「vSphere ならではの見やすさ」はありません。

そこで、リソースの確認には Octant などのKubernetes 可視化ツールがあると便利です。 

github.com

 

つづく。