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.1dev 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 の作成はこちらをどうぞ。