vm.gowatana.jp

NEOにほんごVMware(仮)

はじめての Tanzu Kubernetes Grid。Part-05:Workload Cluster の作成

VMware Tanzu Kubernetes Grid(TKG)で、vSphere 環境に Kubernetes クラスタを作成してみます。今回は、Workload Cluster を作成します。

 

前回はこちら。

 

ドキュメントでは下記のあたりです。

 

今回の内容です。

 

4. Workload Cluster の作成

Bootstrap マシンの tanzu CLI で、Workload Cluster を作成します。

 

4-1. YAML ファイルの作成

Workload Cluster の YAML ファイルは、Management Cluster のファイルから作成します。

demo-01 [ ~ ]$ cp tkg16mc01.yml tkg16wc01.yml
demo-01 [ ~ ]$ vi tkg16wc01.yml

 

編集差分は、下記のようになります。

demo-01 [ ~ ]$ diff tkg16mc01.yml tkg16wc01.yml
21c21
< CLUSTER_NAME: tkg16mc01
---
> CLUSTER_NAME: tkg16wc01
55c55
< VSPHERE_CONTROL_PLANE_ENDPOINT: 192.168.11.201
---
> VSPHERE_CONTROL_PLANE_ENDPOINT: 192.168.11.202
61c61
< VSPHERE_FOLDER: /infra-dc-01/vm/05-Lab-k8s/k8s_lab-tkg-02_demo-01/vm_tkg16mc01
---
> VSPHERE_FOLDER: /infra-dc-01/vm/05-Lab-k8s/k8s_lab-tkg-02_demo-01/vm_tkg16wc01

 

4-2. Workload Cluster の作成

Workload Cluster は、tanzu cluster create コマンドで作成します。

demo-01 [ ~ ]$ tanzu cluster create -f ./tkg16wc01.yml

 

しばらく待つと、下記のように Workload Cluster が作成されます。

demo-01 [ ~ ]$ tanzu cluster create -f ./tkg16wc01.yml
Validating configuration...
Warning: Pinniped configuration not found; Authentication via Pinniped will not be set up in this cluster. If you wish to set up Pinniped after the cluster is created, please refer to the documentation.
creating workload cluster 'tkg16wc01'...
waiting for cluster to be initialized...
cluster control plane is still being initialized: WaitingForControlPlane
cluster control plane is still being initialized: ScalingUp
cluster control plane is still being initialized: WaitingForKubeadmInit
waiting for cluster nodes to be available...
waiting for addons installation...
waiting for packages to be up and running...

Workload cluster 'tkg16wc01' created

demo-01 [ ~ ]$

 

Workload Cluster が作成され、STATUS が running になっています。

demo-01 [ ~ ]$ tanzu cluster list
  NAME       NAMESPACE  STATUS   CONTROLPLANE  WORKERS  KUBERNETES         ROLES   PLAN  TKR
  tkg16wc01  default    running  1/1           1/1      v1.23.10+vmware.1    dev   v1.23.10---vmware.1-tkg.1

 

Control Plane 仮想マシンには、VSPHERE_CONTROL_PLANE_ENDPOINT で指定した VIP アドレスが設定されています。

 

4-3. Workload Cluster への接続

Workload Cluster の kubeconfig は「tanzu cluster kubeconfig get」で取得します。

demo-01 [ ~ ]$ tanzu cluster kubeconfig get tkg16wc01 --admin
Credentials of cluster 'tkg16wc01' have been saved
You can now access the cluster by running 'kubectl config use-context tkg16wc01-admin@tkg16wc01'

 

Workload Cluster のコンテキストが作成されました。

demo-01 [ ~ ]$ kubectl config get-contexts
CURRENT   NAME                        CLUSTER     AUTHINFO          NAMESPACE
*         tkg16mc01-admin@tkg16mc01   tkg16mc01   tkg16mc01-admin
          tkg16wc01-admin@tkg16wc01   tkg16wc01   tkg16wc01-admin

 

コンテキストを Workload Cluster に切り替えて、Kubernetes クラスタのノードを確認します。

demo-01 [ ~ ]$ kubectl config use-context tkg16wc01-admin@tkg16wc01
Switched to context "tkg16wc01-admin@tkg16wc01".
demo-01 [ ~ ]$ kubectl get nodes
NAME                              STATUS   ROLES                  AGE   VERSION
tkg16wc01-control-plane-9kw7q     Ready    control-plane,master   58m   v1.23.10+vmware.1
tkg16wc01-md-0-55b9fbdcdb-47ml2   Ready    <none>                 50m   v1.23.10+vmware.1

 

4-4. Pod の起動確認

今回は、チュートリアル で利用している gcr.io/google-samples/node-hello:1.0 コンテナ イメージを利用して Pod を起動してみます。

Pod を起動します。

demo-01 [ ~ ]$ kubectl run hello --image=gcr.io/google-samples/node-hello:1.0
pod/hello created

 

少し待つと、Pod の STATUS が Running になります。

demo-01 [ ~ ]$ kubectl get pods
NAME    READY   STATUS              RESTARTS   AGE
hello   0/1     ContainerCreating   0          7s
demo-01 [ ~ ]$ kubectl get pods
NAME    READY   STATUS    RESTARTS   AGE
hello   1/1     Running   0          90s

 

Pod を削除しておきます。

demo-01 [ ~ ]$ kubectl delete pod hello
pod "hello" deleted
demo-01 [ ~ ]$ kubectl get pods
No resources found in default namespace.

 

今回は NSX ALB を利用していないので、Kubernetes 外部から Pod に接続するには MetalLB などを追加インストールします。

 

参考: 作成された Kubernetes クラスタの様子

kubctl を利用して、Management Cluster と Workload Cluster で起動された Pod を見ておきます。

Kubernetes クラスタに接続するための kubeconfig ファイルは、それぞれ下記のように取得できます。

  • Management Cluster の kubeconfig
    • Management Cluster 作成時に、自動的に $HOME/.kube-tkg/config と $HOME/.kube/config に保存される。
    • 「tanzu mc kubeconfig get」でも $HOME/.kube/config に保存でき、「--export-file」で保存ファイルを変更できる。
  • Workload Cluster の kubeconfig
    • 「tanzu cluster kubeconfig get」を実行すると $HOME/.kube/config に保存される。これも「--export-file」で保存ファイルを変更できる。

kubectl での Kubernetes クラスタへの接続では、$HOME/.kube/config ファイルが参照されます。

一方で、tanzu management-cluster(tanzu mc) コマンドでの Management Cluster へのアクセスでは、kubectl config use-context で $HOME/.kube/config のコンテキストを切り替えても、Management Cluster はひきつづき $HOME/.kube-tkg/config で参照できます。ちなみに、Management Cluster を複数作成した場合は、接続先を「tanzu login」コマンドで切り替えられます。

 

Management Cluster の様子

コンテキストを Management Cluster のものに切り替えておきます。

demo-01 [ ~ ]$ kubectl config use-context tkg16mc01-admin@tkg16mc01
Switched to context "tkg16mc01-admin@tkg16mc01".

Management Cluster のパッケージを確認します。

demo-01 [ ~ ]$ tanzu package installed list -A

  NAME                           PACKAGE-NAME                              PACKAGE-VERSION        STATUS               NAMESPACE
  antrea                         antrea.tanzu.vmware.com                   1.5.3+tkg.2-advanced   Reconcile succeeded  tkg-system
  metrics-server                 metrics-server.tanzu.vmware.com           0.6.1+vmware.1-tkg.1   Reconcile succeeded  tkg-system
  secretgen-controller           secretgen-controller.tanzu.vmware.com     0.9.1+vmware.1-tkg.1   Reconcile succeeded  tkg-system
  tanzu-addons-manager           addons-manager.tanzu.vmware.com           1.6.0+vmware.1-tkg.3   Reconcile succeeded  tkg-system
  tanzu-core-management-plugins  core-management-plugins.tanzu.vmware.com  0.25.4+vmware.1        Reconcile succeeded  tkg-system
  tanzu-featuregates             featuregates.tanzu.vmware.com             0.25.4+vmware.1        Reconcile succeeded  tkg-system
  vsphere-cpi                    vsphere-cpi.tanzu.vmware.com              1.23.1+vmware.1-tkg.1  Reconcile succeeded  tkg-system
  vsphere-csi                    vsphere-csi.tanzu.vmware.com              2.5.2+vmware.1-tkg.3   Reconcile succeeded  tkg-system

 

パッケージは kubectl get apps でも確認できます。事前にコンテキストは切り替えてありますが、--kubeconfig と --context で指定することもできます。

demo-01 [ ~ ]$ kubectl --kubeconfig=$HOME/.kube/config --context=tkg16mc01-admin@tkg16mc01 get apps -A
NAMESPACE    NAME                            DESCRIPTION           SINCE-DEPLOY   AGE
default      tkg16wc01-kapp-controller       Reconcile succeeded   92s            132m
tkg-system   antrea                          Reconcile succeeded   88s            9h
tkg-system   metrics-server                  Reconcile succeeded   119s           9h
tkg-system   secretgen-controller            Reconcile succeeded   52s            9h
tkg-system   tanzu-addons-manager            Reconcile succeeded   97s            9h
tkg-system   tanzu-core-management-plugins   Reconcile succeeded   2m36s          9h
tkg-system   tanzu-featuregates              Reconcile succeeded   3m59s          9h
tkg-system   vsphere-cpi                     Reconcile succeeded   99s            9h
tkg-system   vsphere-csi                     Reconcile succeeded   4m29s          9h

 

Management Cluster の Pod の様子です。

demo-01 [ ~ ]$ kubectl --kubeconfig=$HOME/.kube/config --context=tkg16mc01-admin@tkg16mc01 get nodes
NAME                             STATUS   ROLES                  AGE   VERSION
tkg16mc01-control-plane-fffsj    Ready    control-plane,master   9h    v1.23.10+vmware.1
tkg16mc01-md-0-847b96b84-fh6lq   Ready    <none>                 9h    v1.23.10+vmware.1
demo-01 [ ~ ]$
demo-01 [ ~ ]$ kubectl --kubeconfig=$HOME/.kube/config --context=tkg16mc01-admin@tkg16mc01 get pod -A
NAMESPACE                           NAME                                                             READY   STATUS    RESTARTS        AGE
capi-kubeadm-bootstrap-system       capi-kubeadm-bootstrap-controller-manager-6768f79785-5gcns       1/1     Running   0               9h
capi-kubeadm-control-plane-system   capi-kubeadm-control-plane-controller-manager-6cc5f68848-clrhr   1/1     Running   0               9h
capi-system                         capi-controller-manager-59c98f9df8-l74v7                         1/1     Running   0               9h
capv-system                         capv-controller-manager-6f49cdc77d-jxdjn                         1/1     Running   0               9h
cert-manager                        cert-manager-5fb8d489c-hr5rd                                     1/1     Running   0               9h
cert-manager                        cert-manager-cainjector-85fc4ffc4b-vtv48                         1/1     Running   0               9h
cert-manager                        cert-manager-webhook-6f7ffd445f-xf6z9                            1/1     Running   0               9h
kube-system                         antrea-agent-fgldn                                               2/2     Running   0               9h
kube-system                         antrea-agent-zp6xx                                               2/2     Running   0               9h
kube-system                         antrea-controller-58df69c55b-8jvgb                               1/1     Running   0               9h
kube-system                         coredns-7f4b78dcb5-q8jv2                                         1/1     Running   0               9h
kube-system                         coredns-7f4b78dcb5-z2tdp                                         1/1     Running   0               9h
kube-system                         etcd-tkg16mc01-control-plane-fffsj                               1/1     Running   0               9h
kube-system                         kube-apiserver-tkg16mc01-control-plane-fffsj                     1/1     Running   0               9h
kube-system                         kube-controller-manager-tkg16mc01-control-plane-fffsj            1/1     Running   1 (9h ago)      9h
kube-system                         kube-proxy-f2pxw                                                 1/1     Running   0               9h
kube-system                         kube-proxy-fhkqd                                                 1/1     Running   0               9h
kube-system                         kube-scheduler-tkg16mc01-control-plane-fffsj                     1/1     Running   1 (9h ago)      9h
kube-system                         kube-vip-tkg16mc01-control-plane-fffsj                           1/1     Running   0               9h
kube-system                         metrics-server-5bb99558c8-25l5b                                  1/1     Running   0               9h
kube-system                         vsphere-cloud-controller-manager-ksdgw                           1/1     Running   0               9h
kube-system                         vsphere-csi-controller-5ffb5698f8-29psc                          7/7     Running   5 (3h16m ago)   9h
kube-system                         vsphere-csi-node-m5972                                           3/3     Running   3 (9h ago)      9h
kube-system                         vsphere-csi-node-wqjqr                                           3/3     Running   2 (9h ago)      9h
tanzu-system                        secretgen-controller-69877fb4c6-8qlzh                            1/1     Running   0               9h
tkg-system                          kapp-controller-577c46c86d-hq9ck                                 2/2     Running   0               9h
tkg-system                          tanzu-addons-controller-manager-bc9bf8ffc-dx8mr                  1/1     Running   0               9h
tkg-system                          tanzu-capabilities-controller-manager-695db6d755-7w6t4           1/1     Running   0               9h
tkg-system                          tanzu-featuregates-controller-manager-677689b95b-hggb9           1/1     Running   0               9h
tkr-system                          tkr-controller-manager-84f9d4469b-hpk5p                          1/1     Running   0               9h

 

Workload Cluster の様子

コンテキストを Worload Cluster のものに切り替えます。

demo-01 [ ~ ]$ kubectl config use-context tkg16wc01-admin@tkg16wc01
Switched to context "tkg16wc01-admin@tkg16wc01".

 

Worload Cluster にインストールされているパッケージです。

demo-01 [ ~ ]$ tanzu package installed list -A

  NAME                  PACKAGE-NAME                           PACKAGE-VERSION        STATUS               NAMESPACE
  antrea                antrea.tanzu.vmware.com                1.5.3+tkg.2-advanced   Reconcile succeeded  tkg-system
  metrics-server        metrics-server.tanzu.vmware.com        0.6.1+vmware.1-tkg.1   Reconcile succeeded  tkg-system
  secretgen-controller  secretgen-controller.tanzu.vmware.com  0.9.1+vmware.1-tkg.1   Reconcile succeeded  tkg-system
  vsphere-cpi           vsphere-cpi.tanzu.vmware.com           1.23.1+vmware.1-tkg.1  Reconcile succeeded  tkg-system
  vsphere-csi           vsphere-csi.tanzu.vmware.com           2.5.2+vmware.1-tkg.3   Reconcile succeeded  tkg-system

 

kubectl get apps で確認した様子です。

demo-01 [ ~ ]$ kubectl --kubeconfig=$HOME/.kube/config --context=tkg16wc01-admin@tkg16wc01 get apps -A
NAMESPACE    NAME                   DESCRIPTION           SINCE-DEPLOY   AGE
tkg-system   antrea                 Reconcile succeeded   81s            125m
tkg-system   metrics-server         Reconcile succeeded   3m44s          125m
tkg-system   secretgen-controller   Reconcile succeeded   106s           125m
tkg-system   vsphere-cpi            Reconcile succeeded   3m49s          125m
tkg-system   vsphere-csi            Reconcile succeeded   119s           125m

 

Workload Cluster の Pod の様子です。

demo-01 [ ~ ]$ kubectl --kubeconfig=$HOME/.kube/config --context=tkg16wc01-admin@tkg16wc01 get nodes
NAME                              STATUS   ROLES                  AGE    VERSION
tkg16wc01-control-plane-9kw7q     Ready    control-plane,master   130m   v1.23.10+vmware.1
tkg16wc01-md-0-55b9fbdcdb-47ml2   Ready    <none>                 122m   v1.23.10+vmware.1
demo-01 [ ~ ]$
demo-01 [ ~ ]$ kubectl --kubeconfig=$HOME/.kube/config --context=tkg16wc01-admin@tkg16wc01 get pods -A
NAMESPACE      NAME                                                     READY   STATUS    RESTARTS       AGE
kube-system    antrea-agent-d5tqg                                       2/2     Running   9 (101m ago)   122m
kube-system    antrea-agent-gjjjh                                       2/2     Running   2 (98m ago)    122m
kube-system    antrea-controller-85d8bb6f8d-qqwv6                       1/1     Running   0              122m
kube-system    coredns-7f4b78dcb5-qmd4p                                 1/1     Running   0              130m
kube-system    coredns-7f4b78dcb5-zk8pk                                 1/1     Running   0              130m
kube-system    etcd-tkg16wc01-control-plane-9kw7q                       1/1     Running   1 (99m ago)    130m
kube-system    kube-apiserver-tkg16wc01-control-plane-9kw7q             1/1     Running   1 (98m ago)    130m
kube-system    kube-controller-manager-tkg16wc01-control-plane-9kw7q    1/1     Running   2 (120m ago)   130m
kube-system    kube-proxy-92jbn                                         1/1     Running   0              130m
kube-system    kube-proxy-rwnr2                                         1/1     Running   0              122m
kube-system    kube-scheduler-tkg16wc01-control-plane-9kw7q             1/1     Running   2 (120m ago)   130m
kube-system    kube-vip-tkg16wc01-control-plane-9kw7q                   1/1     Running   2 (120m ago)   130m
kube-system    metrics-server-86f8c6b69b-72qcg                          1/1     Running   0              122m
kube-system    vsphere-cloud-controller-manager-qcrjk                   1/1     Running   3 (98m ago)    122m
kube-system    vsphere-csi-controller-649d59dcdb-6sgzw                  7/7     Running   0              122m
kube-system    vsphere-csi-node-c9cgv                                   3/3     Running   3 (97m ago)    122m
kube-system    vsphere-csi-node-sdlnf                                   3/3     Running   9 (99m ago)    122m
tanzu-system   secretgen-controller-7d6b4d6458-2zj4z                    1/1     Running   0              122m
tkg-system     kapp-controller-858cc588d4-t8q9h                         2/2     Running   0              130m
tkg-system     tanzu-capabilities-controller-manager-695db6d755-9xjfz   1/1     Running   0              130m

 

以上、TKG の環境構築でした。

クラスタの削除と、CLI での Management Cluster の作成はこちらをどうぞ。