vSphere with kubernetes 基本機能の確認

検証自体は少し前になりますが、**<font color="red">vSphere 7.0 GAの環境で</font>**、コンテナ基盤のプラットフォームとして登場した、**<font color="red">vSphere with Kubernetesの基本機能</font>**を検証したので、まとめてみました。

検証環境は次の通りです。

* VMware ESXi  7.0.0.15843807　　7.0 GA
* VMware vCenter Server  7.0.0.15952599　　7.0 GA
* VMware NSX-T Data Center  3.0.0.0.0.15946739　　3.0.0


# vSphere with Kubernetesとは
vSphere クラスタにてPod作成等のKubernetes ワークロードを実行する事が出来る。vSphere with Kubernetesのコンポーネントは以下の通り。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/251519/527cff61-9b9b-91bf-eeda-c1cee47b529d.png)

*  スーパーバイザークラスタ： vSphere with Kubernetesを有効化したクラスタ（ESXi、NSX-T）
*  制御プレーン仮想マシン： スーパーバイザークラスタに3台展開され、Podを作成する
*  vSphere Pod:  vSphere with Kubernetesで作成されるPod
*  Spherelet： ホストのKubetnetes用の追加プロセス 
*  CRX： vSphere Podの実行環境


# vSphere with Kubernetes の環境構築

* [スーパーバイザクラスタのシステム要件](https://docs.vmware.com/jp/VMware-vSphere/7.0/vmware-vsphere-with-tanzu/GUID-B1388E77-2EEC-41E2-8681-5AE549D50C77.html "スーパーバイザクラスタのシステム要件")

* ワークロード管理の有効化
上記システム要件を満たしたクラスタを使用して、vSphere Clientホーム より[ワークロード管理] を選択し、[有効化」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/251519/c371d50c-afeb-4f43-26de-a880f4328c1f.png)


* Kubernetes を有効化するクラスタを選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/251519/d03f4fb4-fafd-cb72-7eb1-2b954ab4efbe.png)


* 制御プレーン仮想マシンのサイズを選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/251519/736be1f0-36da-d05c-90d2-087c08f55911.png)


* 管理ネットワークの設定
 - ネットワーク：VMkernel アダプタが管理トラフィック用に構成されているネットワークを選択
 - 開始IPアドレス：制御プレーン仮想マシン用に、連続するアドレス（4つ必要）の開始アドレスを指定
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/251519/eefab4d7-1911-943e-6ea7-659080a546c8.png)


* ワークロードネットワークの設定
 - vSphere Distributed Switch:スーパーバイザークラスタのオーバーレイ ネットワーク用
 - ポッド CIDR：vSphere Native Pod の IP アドレス範囲、/21を指定（デフォルト値を利用可能）
 - サービス CIDR：Kubernetes サービスの IP アドレス範囲（デフォルト値を利用可能）
 - 入力/出力方向 CIDR	：Kubernetes サービスの入力/出力方向 IP アドレス範囲、/27で外部からアクセス可能なアドレスを指定（Podのデプロイに外部アクセスが必要）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/251519/336ace96-f6bf-2b05-9fc6-b2008db7aa48.png)



* ワークロード管理の有効化 :  確認
 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/251519/2cff5930-5a38-a44a-601c-d20e97c4422b.png)

# 名前空間の作成
クラスタでのvSphere with Kubernetesの有効化を確認し、名前空間を作成
名前空間に、CPU、メモリ、ストレージ及び権限を割り当てる事で、開発者によるPodへのアクセスが可能となる
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/251519/dcfb88c8-baf8-f135-1de9-c764b305345a.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/251519/7c2f29a7-ef95-1120-3a2e-3c7e73a0737f.png)

# Podの作成と確認
CLIにて、スーパーバイザクラスタへのログインを実施

```
kubectl vsphere login --server=https://<制御プレーンノードのIPアドレス> --vsphere-username <your user account name>
```

* 名前空間にPodをデプロイし、確認

```Docker
# Podのデプロイ
E:\vsphere-plugin\bin> kubectl apply -f E:\vsphere-plugin\bin\application.yaml --namespace=namespace1
pod/nginx created

# Podの確認
E:\vsphere-plugin\bin> kubectl get pods --namespace=namespace1
NAME    READY   STATUS    RESTARTS   AGE
nginx   0/1     Pending   0          12s

E:\vsphere-plugin\bin>kubectl get pods --namespace=namespace1
NAME    READY   STATUS    RESTARTS   AGE
nginx   1/1     Running   0          79s
```
* Podへのアクセス

```
E:\vsphere-plugin\bin> kubectl exec -it nginx /bin/bash --namespace=namespace1
root@nginx:/# ls
bin   docker-entrypoint.d   home   media  proc  sbin  tmp
boot  docker-entrypoint.sh  lib    mnt    root  srv   usr
dev   etc                   lib64  opt    run   sys   var
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/251519/f03f1c9f-e266-3acd-4938-787fd1bea400.png)