TCE で 手軽に k8s 環境を手に入れよう ~その2~

はじめに

ディーネットのよろず請負の深見です。

引き続き、前回のお話の続きになります。

VMware Tanzu Community Edition (TCE) 環境構築の仕上げを進めていきましょう。

予告の通り、

  • Management Cluster の作成

  • WorkloadCluster の作成

と進めていきます。

Management Cluster の作成

前回、構築しました Bootstrap マシンより、tanzu CLI を実行して Management Cluster を作成します。

Web UI の起動 ~ 設定入力(YAML ファイルの作成)

TCE(TKG)の Web UI で Management Cluster の設定ファイル(YAML ファイル)を作成しておき、実際のクラスタ作成は Web UI からではなく CLI にて実施します。

① Web UI の起動

Bootstrap マシンで、tanzu management-cluster create を実行して、Web UI を起動
Bootstrap マシンの外にある Web ブラウザからアクセスするため、「--bind」オプションを指定

$ tanzu management-cluster create --ui --bind=0.0.0.0:8080 --browser=none


Downloading TKG compatibility file from 'projects.registry.vmware.com/tce/compatibility/v0.10.0/tkg-compatibility'
Downloading the TKG Bill of Materials (BOM) file from 'projects.registry.vmware.com/tce/tkg-bom:v1.4.0'
Downloading the TKr Bill of Materials (BOM) file from 'projects.registry.vmware.com/tkg/tkr-bom:v1.21.2_vmware.1-tkg.1'

Validating the pre-requisites...
Serving kickstart UI at http://[::]:8080


② Web ブラウザから、Bootstrap マシンの 8080 番ポートにアクセス

Web ブラウザにて以下の URL にアクセスします。

http://172.16.20.210:8080

③ Management Cluster をデプロイする先を選択 (Deploy the management cluster)

ここでは、「VMware vSphere」を選択します。

※vSphere 以外にもデプロイ先には、Docker / AWS EC2 / Azure を選択することが可能です。

 機会があれば、AWS EC2 へのデプロイを試せればと思います。

TCE-Lab-201

④ vCenter Server 情報を入力 (IaaS Provider)

vCenter Server の FQDN もしくは IP アドレス、ログイン情報を入力し、[CONNECT]をクリック

TCE-Lab-203

そのまま、[CONTINUE]をクリック

TCE-Lab-204

Bootstrap 環境を構築した際に準備した SSH の公開鍵情報を SSH PUBLIC KEY に張り込み、[NEXT] をクリックします。

TCE-Lab-205

⑤ Management Cluster の設定値を入力します。
ここでは、[Development] を選択して作成をします.

TCE-Lab-206

・INSTANCE TYPE: Management Cluster の Control Plane VM のスペック
   → 今回は medium (cpu: 2, RAM: 8GB, Disk: 40GB)
・MANAGEMENT CLUSER NAME: Kubernetes クラスタの名前:tce-manage-03
・CONTROL PLANE ENDPOINT PROVIDER: NSX ALB か kube-vip を選択(kube-vip)
・WORKER NODE INSTANCE TYPE: Management Cluster のWorker Node VM のスペック
   → 今回は medium (cpu: 2, RAM: 8GB, Disk: 40GB)
・CONTROL PLANE ENDPOINT: kubectl などから Management Cluster に接続するアドレスを入力。
 kube-vip を選択した場合は Kubernetes ノードの DHCP ネットワークで DHCP 範囲外の IP アドレスを指定する。
   (172.16.20.111)

⑥ ロードバランサの設定(VMware NSX Advanced Load Balancer)

NSX ALB の設定はスキップして [NEXT] をクリックします。
※NSX ALB は利用せず、後で別途 LB の設定をします。

TCE-Lab-207

⑦ Metadata

Metadata のパラメータ入力もスキップして [NEXT] をクリックします。

TCE-Lab-209

⑧ リソースの設定(Resources)

リソースの指定は、kubernetes ノードの VM をデプロイする場所(下記)を選択して、[NEXT]をクリック

TCE-Lab-209

 ・VM FOLDER: Management Cluster の VM を作成するフォルダ。
   →「/VPMS-TCE-DC00/vm/02-Lab/lab-k8s/k8s_lab-tkg-01/vm_tce-mgmt」
 ・DATASTORE
   →「/VPMS-TCE-DC00/datastore/Datastore」
 ・CLUSTER, HOSTS, AND RESOURCE POOLS: 今回はリソース プールを選択。
   →「VPMS-TEST-01」

⑨ ネットワーク設定(Kubernetes Network)

ネットワークの設定を入力します。NETWORK NAME で、DHCP ネットワークのポートグループを選択して、「NEXT」をクリック

TCE-Lab-210

 ・NETWORK NAME: /VPMS-TCE-DC00/network/DSwitch/DSwitch-VM Network-ephemeral

 ・CLUSTER SERVICE CIDR: 100.64.0.0/13 (デフォルト)
 ・CLUSTER POD CIDR: 100.96.0.0/11

 ・Proxy Settings (デフォルト:無効)

※ネットワーク設定は、準備した vSphere 環境に合わせて設定をしてください。

 上記は、当方での一例となります。

⑩ Identity Management

Identity Management は、今回は無効にしておきます。
※「Enable Identity Management Settings」を無効

TCE-Lab-211

⑪ OS イメージの指定(OS Image)

OS イメージを選択して、 [NEXT] を選択
※TCE の OVA ファイルをVM テンプレートに変換しておくと、選択可能になっているはずです。

OS IMAGE: /VPMS-TCE-DC00/vm/02-Lab/lab-k8s/k8s_work/photon-3-kube-v1.21.2+vmware.1

TCE-Lab-212

⑫「REVIEW CONFIGURATION」をクリックし、設定確認画面に進みます。

TCE-Lab-213

設定しな内容が表示されます。

TCE-Lab-214

TCE-Lab-215

TCE-Lab-216

TCE-Lab-217

「DEPLOY MANAGEMENT CLUSTER」をクリックすると、クラスタ作成が開始されます。
しかし、今回は CLI からクラスタを作成してみます。

画面の下方にある「CLI Command Equivalent」には、「DEPLOY MANAGEMENT CLUSTER」をクリックした場合と同様のクラスタ作成をする tanzu CLI コマンドラインが表示されています。
※[COPY CLI COMMAND] でコマンドラインをコピーしておきます。

※コピーした内容

tanzu management-cluster create tce-manage-03  --file /home/denet/.config/tanzu/tkg/clusterconfigs/82vqraxl3m.yaml -v 6

CLI で後続作業を実施するので、Web UI を起動した「tanzu management-cluster create --ui ~」コマンドは、Ctrl + C などで停止しておきます。

ここまでで、Management Cluster 作成の YAML ファイルが出来あがりました。

YAML ファイルの編集

① Management Cluster の YAML ファイルを、わかりやすくクラスタ名にあわせてコピーしておきます。

$ cd
$ pwd
$ cp -p .config/tanzu/tkg/clusterconfigs/82vqraxl3m.yaml .config/tanzu/tkg/clusterconfigs/tce-manage-03.yml
$ ls -l .config/tanzu/tkg/clusterconfigs/tce-manage-03.yml
$ ls -l .config/tanzu/tkg/clusterconfigs/

denet@lab-tce-boot-03 [ ~ ]$ cd
denet@lab-tce-boot-03 [ ~ ]$ pwd
/home/denet
denet@lab-tce-boot-03 [ ~ ]$
denet@lab-tce-boot-03 [ ~ ]$ cp -p .config/tanzu/tkg/clusterconfigs/82vqraxl3m.yaml .config/tanzu/tkg/clusterconfigs/tce-manage-03.yml
denet@lab-tce-boot-03 [ ~ ]$
denet@lab-tce-boot-03 [ ~ ]$ ls -l .config/tanzu/tkg/clusterconfigs/tce-manage-03.yml
-rw------- 1 denet users 2690 Jan 21 17:44 .config/tanzu/tkg/clusterconfigs/tce-manage-03.yml
denet@lab-tce-boot-03 [ ~ ]$
denet@lab-tce-boot-03 [ ~ ]$ ls -l .config/tanzu/tkg/clusterconfigs/
total 8
-rw------- 1 denet users 2690 Jan 21 17:44 82vqraxl3m.yaml
-rw------- 1 denet users 2690 Jan 21 17:44 tce-manage-03.yml


vSphere 7 の環境で、スーパーバイザー クラスタを利用しない TKG クラスタを作成するか確認するメッセージをスキップする設定(DEPLOY_TKG_ON_VSPHERE7: true)を追記しておきます。

ただし、この設定がない場合でも、下記のような応答にこたえることで、Management Cluster は作成できます。


Do you want to configure vSphere with Tanzu? [y/N]:
Would you like to deploy a non-integrated Tanzu Kubernetes Grid management cluster on vSphere 7.0? [y/N]:


② YAML ファイルの末尾に、DEPLOY_TKG_ON_VSPHERE7 を追記

$ echo 'DEPLOY_TKG_ON_VSPHERE7: true' >> .config/tanzu/tkg/clusterconfigs/tce-manage-03.yml

$ diff .config/tanzu/tkg/clusterconfigs/82vqraxl3m.yaml .config/tanzu/tkg/clusterconfigs/tce-manage-03.yml


denet@lab-tce-boot-03 [ ~ ]$ echo 'DEPLOY_TKG_ON_VSPHERE7: true' >> .config/tanzu/tkg/clusterconfigs/tce-manage-03.yml
denet@lab-tce-boot-03 [ ~ ]$ diff .config/tanzu/tkg/clusterconfigs/82vqraxl3m.yaml .config/tanzu/tkg/clusterconfigs/tce-manage-03.yml
64a65

DEPLOY_TKG_ON_VSPHERE7: true


YAML ファイル の編集はこれで終了です。

Management Cluster の作成

tanzu CLI で、Management Cluster を作成します。

$ tanzu management-cluster create tce-manage-03 --file /home/denet/.config/tanzu/tkg/clusterconfigs/tce-manage-03.yml -v 6

※しばらく待つと、以下のように Docker コンテナとして Bootstrap Cluster が作成されます。
 環境によりそこそこの時間がかかる場合があります。

denet@lab-tce-boot-03 [ ~ ]$ tanzu management-cluster create tce-manage-03  --file /home/denet/.config/tanzu/tkg/clusterconfigs/tce-manage-03.yml -v 6
compatibility file (/home/denet/.config/tanzu/tkg/compatibility/tkg-compatibility.yaml) already exists, skipping download
BOM files inside /home/denet/.config/tanzu/tkg/bom already exists, skipping download
CEIP Opt-in status: false

Validating the pre-requisites...

vSphere 7.0 Environment Detected.

You have connected to a vSphere 7.0 environment which does not have vSphere with Tanzu enabled. vSphere with Tanzu includes
an integrated Tanzu Kubernetes Grid Service which turns a vSphere cluster into a platform for running Kubernetes workloads in dedicated
resource pools. Configuring Tanzu Kubernetes Grid Service is done through vSphere HTML5 client.

Tanzu Kubernetes Grid Service is the preferred way to consume Tanzu Kubernetes Grid in vSphere 7.0 environments. Alternatively you may
deploy a non-integrated Tanzu Kubernetes Grid instance on vSphere 7.0.
Deploying TKG management cluster on vSphere 7.0 ...
Identity Provider not configured. Some authentication features won't work.
WARNING: key is not a string: %!s(int=1)WARNING: key is not a string: %!s(int=1)Checking if VSPHERE_CONTROL_PLANE_ENDPOINT 172.16.20.111 is already in use

Setting up management cluster...
Validating configuration...
Using infrastructure provider vsphere:v0.7.10
Generating cluster configuration...
WARNING: key is not a string: %!s(int=1)WARNING: key is not a string: %!s(int=1)Setting up bootstrapper...
Fetching configuration for kind node image...
kindConfig:
 &{{Cluster kind.x-k8s.io/v1alpha4}  [{  map[] [{/var/run/docker.sock /var/run/docker.sock false false }] [] [] []}] {ipv4 0  100.96.0.0/11 100.64.0.0/13 false } map[] map[] [apiVersion: kubeadm.k8s.io/v1beta2
kind: ClusterConfiguration
imageRepository: projects.registry.vmware.com/tkg
etcd:
  local:
    imageRepository: projects.registry.vmware.com/tkg
    imageTag: v3.4.13_vmware.15
dns:
  type: CoreDNS
  imageRepository: projects.registry.vmware.com/tkg
  imageTag: v1.8.0_vmware.5] [] [] []}
Creating kind cluster: tkg-kind-c7l782p2bjtce7smqg4g
Creating cluster "tkg-kind-c7l782p2bjtce7smqg4g" ...
Ensuring node image (projects.registry.vmware.com/tkg/kind/node:v1.21.2_vmware.1) ...
Pulling image: projects.registry.vmware.com/tkg/kind/node:v1.21.2_vmware.1 ...
Preparing nodes ...
Writing configuration ...
Starting control-plane ...
Installing CNI ...
Installing StorageClass ...
Waiting 2m0s for control-plane = Ready ...
Ready after 34s
Bootstrapper created. Kubeconfig: /home/denet/.kube-tkg/tmp/config_IjENG7IJ
Installing providers on bootstrapper...
Fetching providers
Installing cert-manager Version="v1.1.0"
Waiting for cert-manager to be available...
Installing Provider="cluster-api" Version="v0.3.23" TargetNamespace="capi-system"
Installing Provider="bootstrap-kubeadm" Version="v0.3.23" TargetNamespace="capi-kubeadm-bootstrap-system"
Installing Provider="control-plane-kubeadm" Version="v0.3.23" TargetNamespace="capi-kubeadm-control-plane-system"
Installing Provider="infrastructure-vsphere" Version="v0.7.10" TargetNamespace="capv-system"
installed  Component=="cluster-api"  Type=="CoreProvider"  Version=="v0.3.23"
installed  Component=="kubeadm"  Type=="BootstrapProvider"  Version=="v0.3.23"
installed  Component=="kubeadm"  Type=="ControlPlaneProvider"  Version=="v0.3.23"
installed  Component=="vsphere"  Type=="InfrastructureProvider"  Version=="v0.7.10"
Waiting for provider infrastructure-vsphere
Waiting for provider bootstrap-kubeadm
Waiting for provider control-plane-kubeadm
Waiting for provider cluster-api
Waiting for resource capi-kubeadm-control-plane-controller-manager of type *v1.Deployment to be up and running
pods are not yet running for deployment 'capi-kubeadm-control-plane-controller-manager' in namespace 'capi-kubeadm-control-plane-system', retrying

~ (途中、省略) ~

waiting for 'vsphere-csi' Package to be installed, retrying
waiting for 'vsphere-csi' Package to be installed, retrying
Successfully reconciled package: vsphere-csi
You can now access the management cluster tce-manage-03 by running 'kubectl config use-context tce-manage-03-admin@tce-manage-03'
Deleting kind cluster: tkg-kind-c7l782p2bjtce7smqg4g

Management cluster created!

You can now create your first workload cluster by running the following:

  tanzu cluster create [name] -f [file]

Some addons might be getting installed! Check their status by running the following:

  kubectl get apps -A

そして、Management Cluster が作成されます。

Management Cluster は、「tanzu management-cluster get」コマンドで確認できます。

$ tanzu management-cluster get

TCE-Lab-301

kubectl でも、Management Cluster が確認/操作できます。

$ kubectl get nodes -A


denet@lab-tce-boot-03 [ ~ ]$ kubectl get nodes -A
NAME STATUS ROLES AGE VERSION
tce-manage-03-control-plane-qnw8h Ready control-plane,master 13m v1.21.2+vmware.1
tce-manage-03-md-0-7496bbddc6-xj6k6 Ready 12m v1.21.2+vmware.1


Workload Cluster の作成

Bootstrap マシンで、tanzu CLI を実行して Workload Cluster を作成します。
Workload Cluster は Management Cluster を利用して作成されるので、Bootstrap Cluster は作成されません。

YAML ファイルの作成

Managemenet Cluster の作成に使用した YAML ファイルを流用します。

$ cp .config/tanzu/tkg/clusterconfigs/tce-manage-03.yml .config/tanzu/tkg/clusterconfigs/tce-wlc-03.yml
$ vi .config/tanzu/tkg/clusterconfigs/tce-wlc-03.yml

以下の 3 か所だけ設定変更します。

・CLUSTER_NAME: Kubernetes クラスタの名前。(tce-wlc-03)
・VSPHERE_CONTROL_PLANE_ENDPOINT: kubectl などから Workload Cluster に接続するアドレスを入力。
  kube-vip を選択した場合は、Kubernetes ノードの DHCP ネットワークで、DHCP 範囲外の IP アドレスを指定する。
   (172.16.20.112)
・VSPHERE_FOLDER: VM フォルダ。(わかりやすくするため、Management Cluster の VM とはフォルダを分けました)

$ diff .config/tanzu/tkg/clusterconfigs/tce-manage-03.yml .config/tanzu/tkg/clusterconfigs/tce-wlc-03.yml

15c15
< CLUSTER_NAME: tce-manage-03
---
> CLUSTER_NAME: tce-wlc-03
49c49
< VSPHERE_CONTROL_PLANE_ENDPOINT: 172.16.20.111
---
> VSPHERE_CONTROL_PLANE_ENDPOINT: 172.16.20.112
54c54
< VSPHERE_FOLDER: /VPMS-TCE-DC00/vm/02-Lab/lab-k8s/k8s_lab-tkg-01/vm_tce-mgmt
---
> VSPHERE_FOLDER: /VPMS-TCE-DC00/vm/02-Lab/lab-k8s/k8s_lab-tkg-01/vm_wlc-01

以上で Workload Cluster 用の YAML ファイルは完成です。

Workload Cluster の作成

tanzu CLI で、Workload Cluster を作成します。

Management Cluster とは異なり、「tanzu cluster create」コマンドを実行します。

$ tanzu cluster create -f .config/tanzu/tkg/clusterconfigs/tce-wlc-03.yml

Validating configuration...
Warning: Pinniped configuration not found. Skipping pinniped configuration in workload cluster. Please refer to the documentation to check if you can configure pinniped on workload cluster manually
Creating workload cluster 'tce-wlc-03'...
Waiting for cluster to be initialized...
[cluster control plane is still being initialized: WaitingForControlPlane, cluster infrastructure is still being provisioned: 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 'tce-wlc-03' created

Workload Cluster は、「tanzu cluster list」コマンドで確認

$ tanzu cluster list


denet@lab-tce-boot-03 [ ~ ]$ tanzu cluster list
NAME NAMESPACE STATUS CONTROLPLANE WORKERS KUBERNETES ROLES PLAN
tce-wlc-03 default running 1/1 1/1 v1.21.2+vmware.1 dev


$ tanzu cluster get tce-wlc-03
TCE-Lab-401

Kubernetes クラスタに接続するための kubeconfig は、「tanzu cluster kubeconfig get ~」コマンドで取得できます。
デフォルトでは、Workload Cluster のコンテキストが $HOME/.kube/config に保存されます。

$ tanzu cluster kubeconfig get tce-wlc-03 --admin


denet@lab-tce-boot-03 [ ~ ]$ tanzu cluster kubeconfig get tce-wlc-03 --admin
Credentials of cluster 'tce-wlc-03' have been saved
You can now access the cluster by running 'kubectl config use-context tce-wlc-03-admin@tce-wlc-03'


以下でアクセスが可能となる

$ kubectl config use-context tce-wlc-03-admin@tce-wlc-03


denet@lab-tce-boot-03 [ ~ ]$ kubectl get nodes --kubeconfig=tce-wlc-03-admin@tce-wlc-03
error: stat tce-wlc-03-admin@tce-wlc-03: no such file or directory
denet@lab-tce-boot-03 [ ~ ]$
denet@lab-tce-boot-03 [ ~ ]$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
tce-wlc-03-control-plane-4fwt2 Ready control-plane,master 11m v1.21.2+vmware.1
tce-wlc-03-md-0-69469f787f-bdpmz Ready 9m40s v1.21.2+vmware.1


これで、Workloads Cluster の構築が完了しました。

$ tanzu cluster get tce-wlc-03
TCE-Lab-402

作成したクラスタリスト確認

$ tanzu cluster list --include-management-cluster


denet@lab-tce-boot-03 [ ~ ]$ tanzu cluster list --include-management-cluster
NAME NAMESPACE STATUS CONTROLPLANE WORKERS KUBERNETES ROLES PLAN
tce-wlc-03 default running 1/1 1/1 v1.21.2+vmware.1 dev
tce-manage-03 tkg-system running 1/1 1/1 v1.21.2+vmware.1 management dev


Node と Pod のリストを確認

$ kubectl get node -owide
$ kubectl get pod -A
TCE-Lab-403

もうこれで、普通のKubernetesと同じ環境が完成しました。

kubectl コマンドで各種操作が可能です。

最後に

これで、Management Cluster と Workload Cluster が完成しました。

この 2 つで相当量となりましたので、今回はここまでとして続きは次回へと。

次回からは、構築しました TCE 環境について以下を進めます。

  • TEC の環境調整

  • kubernetes (kubectl) のプラグイン追加

  • LB 機能の追加 (MetalLB のインストール)

の予定をしています。

それでは、この辺で失礼します。

TCE-Lab-900

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA