1
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

NUCで始めるVMware Tanzu - TKGの導入(Managementクラスタ)

本日も、サクッとTKGの導入を進めていきましょう。

現在の構成でTKGを利用する際の注意事項

General Requirements に、事細かくvSphere環境にデプロイする条件が書かれているのですが、今回の構成で一番困るのが、「Management Clusters Unnecessary on vSphere 7」のところです。要するに、「vSphere 7 だったら vSphere with Tanzu 使えよ!」と、言っていますw
詳細は別途、vSphere with Tanzu の説明回を設けたいと思ってますが、Supervisor Cluster という Management Cluster の上位互換のようなものがあり、TKGからそちらに接続して使う方法が紹介されてます。。ただ一応、vSphere with Tanzu 利用前であれば、非推奨だがデプロイ可能です。TKGを学ぶことが目的なので、今回はこのまま突き進みます。

他の主な注意点は、以下の通りです。

  • 最低2台のホスト(ESXi)で構成されたvSphere Clusterが必要
  • Control plane用のLBには、kube-vip が使われているが、Service用のLBは用意してないので、MetalLBなどのソリューションを自前で用意する必要がある。(これ、結構重要!どこかで別途、取り扱いたいと思う。)
  • vCenterのSSOアカウントでTKGのパーミッションを管理している。tkg用のアカウントを作って、適切なパーミッションを付与しましょう。(今回は検証目的なので、adminで行きます:sweat_smile:

Photon OSのインストール

TKGのノードVM用イメージが、当然必要ですよね?まずは、My VMwareから以下をダウンロード。

  • Photon v3 Kubernetes v1.19.3 OVA(←バージョンは、その時によって異なる)

Nested環境の方に入れていきます。「OVFテンプレートのデプロイ」
スクリーンショット 2020-12-13 17 50 48
ダウンロードしたファイルを指定します。
スクリーンショット 2020-12-13 17 55 48
2では「Discovered virtual machine」を指定、3では「nested-cluster01」を指定、5でEULAに同意と指定しました。6では、vsanDatastoreを指定して、「Management Storage policy - Thin」を指定してみます。
スクリーンショット 2020-12-13 18 04 30
ネットワークは、「DSwitch 1-vMotion」を選択してみました。
スクリーンショット 2020-12-13 18 17 08
しばらくすると、アップロードが完了します。引き続き、「テンプレートに変換」
スクリーンショット 2020-12-13 18 25 51
テンプレートになったため、「ホストおよびクラスタ」のリソースからは見えなくなります。代わりに、「仮想マシンおよびテンプレート」メニューで、テンプレートが確認できます。
スクリーンショット 2020-12-13 18 27 22

Managementクラスタのデプロイ

いよいよデプロイします!ここで2つの選択肢があるのですが、「tkg init --ui」を実行すると、Webベースのインストーラが実行でき、「tkg init」だと、CLIベースで導入を行えます。GUIベースの方が、何を選択しているか把握しやすいので、初回はGUIベースがオススメです。

ローカルPC
# 踏み台でUIを起動するため、ローカルPCのブラウザから閲覧できるよう、8080ポートをSSHポートフォワードしてあげる
% ssh -L 8080:localhost:8080 ubuntu@192.168.5.41
# ログイン成功。ここからは踏み台での操作
$ tkg init --ui
# (省略)
unable to open browser: exec: "xdg-open": executable file not found in $PATH
# エラーを調べると、このubuntuには、xdg-utilが足りないようだった。
$ sudo apt-get update
$ sudo apt install xdg-utils -y
# エラーがないことを確認
$ tkg init --ui
Logs of the command execution can also be found at: /tmp/tkg-20201213T131852552834915.log

Validating the pre-requisites...
Serving kickstart UI at http://127.0.0.1:8080
unable to open browser: exit status 3

踏み台上でブラウザの起動に失敗してexitしているが、特に問題なし。
ローカルPCのブラウザで、localhost:8080 にアクセスするとインストーラが起動。vSphereを選択。
スクリーンショット 2020-12-13 22 35 55
1では、vCenterのSSO接続情報を入力して「CONNECT」
スクリーンショット 2020-12-13 22 38 52
vSphere 7 環境なので、警告が出る。構わず、「DEPLOY TKG MANAGEMENT CLUSTER」を選択。
スクリーンショット 2020-12-13 22 41 01
ここで、踏み台のSSHの公開鍵が必要となるので、別端末を立ち上げて踏み台に入り、鍵を作成

踏み台
ssh-keygen -t rsa -b 4096
# Enterを3回ほど押す
cat ~/.ssh/id_rsa.pub

ブラウザに戻り、DCを選択して、鍵の文字列をペーストして、「NEXT」
スクリーンショット 2020-12-13 23 10 58
2はManagement Clusterの設定。今回は、「Development」で「medium」インスタンス、workerも「medium」で作成してみます。ControlPlane Endpointは、DHCP範囲外、かつ、DHCP rangeと同じsubnetである必要があるので、「192.168.5.51」と指定。
スクリーンショット 2020-12-13 23 19 03
3は、Optionalなので入れなくて良さそう。「NEXT」
スクリーンショット 2020-12-13 23 25 47
4では、Resourcesを選択式で指定するため、一度vCenterに移動し、リソースを作っていく。
まずは、「VM FOLDER」用に、「tkg-dev」という仮想マシンフォルダを作った。
スクリーンショット 2020-12-13 23 32 13
スクリーンショット 2020-12-13 23 43 12
続いて、「tkg-dev」というリソースプールを作成。
スクリーンショット 2020-12-13 23 33 07
スクリーンショット 2020-12-13 23 34 19
スクリーンショット 2020-12-13 23 47 09
再びTKGの画面に戻り、「Specify the Resources」横の更新ボタンを押すと、選択出来るようになる。(・・はずだったが、セッションが切れたのか読み込みが失敗したので、ブラウザをリロードしてStep1から入力し直した:sweat_smile:
スクリーンショット 2020-12-13 23 52 04
5はCNI設定。「DSwitch-VM Network」を選択。
スクリーンショット 2020-12-14 0 03 01
6、OS Image。事前にアップロードした場所を指定。
スクリーンショット 2020-12-14 0 04 44
7、エクスペリエンス向上プログラム。どちらを選んでも良い。「NEXT」
スクリーンショット 2020-12-14 0 06 15
「REVIEW CONFIGURATION」を押すと、確認画面が出る。また、CLIで投入する場合のコマンドも表示される。問題なければ、「DEPLOY MANAGEMENT CLUSTER」!
(なお、firefoxのせいなのかは不明だが、この画面の次に進まないトラブルが発生。Chromeにして、いくつかの選択肢も変えたら、先に進んだ。どれが効いたのかは不明。単にセッションが切れたのかも。)
スクリーンショット 2020-12-14 0 12 18
このように、何らかの処理をやってる画面がしばらく続く・・・
スクリーンショット 2020-12-14 1 19 21
20分ほどして、このような画面が出たら、インストール成功です!
スクリーンショット 2020-12-14 1 31 27
tkgコマンドでも確認してみましょう。

踏み台
# Management Cluster一覧の表示
$ tkg get mc
 MANAGEMENT-CLUSTER-NAME            CONTEXT-NAME                                                           STATUS
 tkg-mgmt-vsphere-20201213161849 *  tkg-mgmt-vsphere-20201213161849-admin@tkg-mgmt-vsphere-20201213161849  Success

# ControlPlaneやWorkerの稼働台数サマリも見たい場合はこちら
$ tkg get cluster --include-management-cluster
 NAME                             NAMESPACE   STATUS   CONTROLPLANE  WORKERS  KUBERNETES        ROLES
 tkg-mgmt-vsphere-20201213161849  tkg-system  running  1/1           1/1      v1.19.3+vmware.1  management

# ノード情報
$ kubectl get nodes -o wide
NAME                                                   STATUS   ROLES    AGE   VERSION            INTERNAL-IP     EXTERNAL-IP     OS-IMAGE                 KERNEL-VERSION   CONTAINER-RUNTIME
tkg-mgmt-vsphere-20201213161849-control-plane-xzfzg    Ready    master   30m   v1.19.3+vmware.1   192.168.5.116   192.168.5.116   VMware Photon OS/Linux   4.19.150-1.ph3   containerd://1.4.1
tkg-mgmt-vsphere-20201213161849-md-0-b7d7549df-hm8wt   Ready    <none>   27m   v1.19.3+vmware.1   192.168.5.117   192.168.5.117   VMware Photon OS/Linux   4.19.150-1.ph3   containerd://1.4.1

# Pod一覧。最初からCSIやCNI(antrea)などがインストールされているのが特徴
ubuntu@nested-bastion01:~$ kubectl get pod -A
NAMESPACE                           NAME                                                                          READY   STATUS    RESTARTS   AGE
capi-kubeadm-bootstrap-system       capi-kubeadm-bootstrap-controller-manager-7bb5cbfc69-mddcd                    2/2     Running   0          27m
capi-kubeadm-control-plane-system   capi-kubeadm-control-plane-controller-manager-749b7b5dc5-k8lwh                2/2     Running   0          27m
capi-system                         capi-controller-manager-86f86fb9df-7tfp6                                      2/2     Running   0          27m
capi-webhook-system                 capi-controller-manager-6847947f74-fzd5z                                      2/2     Running   0          27m
capi-webhook-system                 capi-kubeadm-bootstrap-controller-manager-656645ccc4-cdgsm                    2/2     Running   0          27m
capi-webhook-system                 capi-kubeadm-control-plane-controller-manager-6cf9799f4c-sqgdq                2/2     Running   0          27m
capi-webhook-system                 capv-controller-manager-66bd87d667-q2mjz                                      2/2     Running   0          27m
capv-system                         capv-controller-manager-6cd6b9c454-lgdr4                                      2/2     Running   0          27m
cert-manager                        cert-manager-556f68587d-lzdfj                                                 1/1     Running   0          31m
cert-manager                        cert-manager-cainjector-5bc85c4c69-ffdtl                                      1/1     Running   0          31m
cert-manager                        cert-manager-webhook-7bd69dfcf8-v6tqx                                         1/1     Running   0          31m
kube-system                         antrea-agent-2cmv7                                                            2/2     Running   0          32m
kube-system                         antrea-agent-q2wmf                                                            2/2     Running   0          29m
kube-system                         antrea-controller-5d594c5cc7-zxlm8                                            1/1     Running   0          32m
kube-system                         coredns-5d6f7c958-cwqv4                                                       1/1     Running   0          32m
kube-system                         coredns-5d6f7c958-pxlr9                                                       1/1     Running   0          32m
kube-system                         etcd-tkg-mgmt-vsphere-20201213161849-control-plane-xzfzg                      1/1     Running   0          32m
kube-system                         kube-apiserver-tkg-mgmt-vsphere-20201213161849-control-plane-xzfzg            1/1     Running   0          32m
kube-system                         kube-controller-manager-tkg-mgmt-vsphere-20201213161849-control-plane-xzfzg   1/1     Running   0          32m
kube-system                         kube-proxy-qnsff                                                              1/1     Running   0          32m
kube-system                         kube-proxy-st5gf                                                              1/1     Running   0          29m
kube-system                         kube-scheduler-tkg-mgmt-vsphere-20201213161849-control-plane-xzfzg            1/1     Running   0          32m
kube-system                         kube-vip-tkg-mgmt-vsphere-20201213161849-control-plane-xzfzg                  1/1     Running   0          32m
kube-system                         vsphere-cloud-controller-manager-xh7tk                                        1/1     Running   0          32m
kube-system                         vsphere-csi-controller-5b6f54ccc5-266k8                                       5/5     Running   0          32m
kube-system                         vsphere-csi-node-6fhvs                                                        3/3     Running   0          32m
kube-system                         vsphere-csi-node-jrlfj                                                        3/3     Running   0          29m

うん、想定通り出来てますね!:grin:

リソース魚拓

Management Cluster

ControlPlaneは、そこそこ使用してますね。CPU:0.5GHz、Mem:1GB、ストレージ:11GB
スクリーンショット 2020-12-14 2 06 35
Workerはまだ何も動いてなさそう。CPU:0.2GHz、Mem:0.5GB、ストレージ12GB
スクリーンショット 2020-12-14 2 09 40
踏み台は、CPUとMemほぼ0。すげぇ。ストレージは色々とインストールしたので、16GB消費。
スクリーンショット 2020-12-14 2 11 12

Nested環境全体

ついにNUC1台分のメモリを消費!CPUは大したことない。ストレージも64GB程度
スクリーンショット 2020-12-14 2 16 31

物理NUC全体

まだ余力は残している感じですね。。
スクリーンショット 2020-12-14 2 19 30

やっと投稿ペースがカレンダーに追いついた!それではまた明日。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
1
Help us understand the problem. What are the problem?