本日も、サクッと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で行きます)
Photon OSのインストール
TKGのノードVM用イメージが、当然必要ですよね?まずは、My VMwareから以下をダウンロード。
- Photon v3 Kubernetes v1.19.3 OVA(←バージョンは、その時によって異なる)
Nested環境の方に入れていきます。「OVFテンプレートのデプロイ」
ダウンロードしたファイルを指定します。
2では「Discovered virtual machine」を指定、3では「nested-cluster01」を指定、5でEULAに同意と指定しました。6では、vsanDatastoreを指定して、「Management Storage policy - Thin」を指定してみます。
ネットワークは、「DSwitch 1-vMotion」を選択してみました。
しばらくすると、アップロードが完了します。引き続き、「テンプレートに変換」
テンプレートになったため、「ホストおよびクラスタ」のリソースからは見えなくなります。代わりに、「仮想マシンおよびテンプレート」メニューで、テンプレートが確認できます。
#Managementクラスタのデプロイ
いよいよデプロイします!ここで2つの選択肢があるのですが、「tkg init --ui」を実行すると、Webベースのインストーラが実行でき、「tkg init」だと、CLIベースで導入を行えます。GUIベースの方が、何を選択しているか把握しやすいので、初回はGUIベースがオススメです。
# 踏み台で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を選択。
1では、vCenterのSSO接続情報を入力して「CONNECT」
vSphere 7 環境なので、警告が出る。構わず、「DEPLOY TKG MANAGEMENT CLUSTER」を選択。
ここで、踏み台のSSHの公開鍵が必要となるので、別端末を立ち上げて踏み台に入り、鍵を作成
ssh-keygen -t rsa -b 4096
# Enterを3回ほど押す
cat ~/.ssh/id_rsa.pub
ブラウザに戻り、DCを選択して、鍵の文字列をペーストして、「NEXT」
2はManagement Clusterの設定。今回は、「Development」で「medium」インスタンス、workerも「medium」で作成してみます。ControlPlane Endpointは、DHCP範囲外、かつ、DHCP rangeと同じsubnetである必要があるので、「192.168.5.51」と指定。
3は、Optionalなので入れなくて良さそう。「NEXT」
4では、Resourcesを選択式で指定するため、一度vCenterに移動し、リソースを作っていく。
まずは、「VM FOLDER」用に、「tkg-dev」という仮想マシンフォルダを作った。
続いて、「tkg-dev」というリソースプールを作成。
再びTKGの画面に戻り、「Specify the Resources」横の更新ボタンを押すと、選択出来るようになる。(・・はずだったが、セッションが切れたのか読み込みが失敗したので、ブラウザをリロードしてStep1から入力し直した)
5はCNI設定。「DSwitch-VM Network」を選択。
6、OS Image。事前にアップロードした場所を指定。
7、エクスペリエンス向上プログラム。どちらを選んでも良い。「NEXT」
「REVIEW CONFIGURATION」を押すと、確認画面が出る。また、CLIで投入する場合のコマンドも表示される。問題なければ、「DEPLOY MANAGEMENT CLUSTER」!
(なお、firefoxのせいなのかは不明だが、この画面の次に進まないトラブルが発生。Chromeにして、いくつかの選択肢も変えたら、先に進んだ。どれが効いたのかは不明。単にセッションが切れたのかも。)
このように、何らかの処理をやってる画面がしばらく続く・・・
20分ほどして、このような画面が出たら、インストール成功です!
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
うん、想定通り出来てますね!
リソース魚拓
###Management Cluster
ControlPlaneは、そこそこ使用してますね。CPU:0.5GHz、Mem:1GB、ストレージ:11GB
Workerはまだ何も動いてなさそう。CPU:0.2GHz、Mem:0.5GB、ストレージ12GB
踏み台は、CPUとMemほぼ0。すげぇ。ストレージは色々とインストールしたので、16GB消費。
###Nested環境全体
ついにNUC1台分のメモリを消費!CPUは大したことない。ストレージも64GB程度
###物理NUC全体
まだ余力は残している感じですね。。
やっと投稿ペースがカレンダーに追いついた!それではまた明日。