検証自体は少し前になりますが、vSphere 7.0 GAの環境で、コンテナ基盤のプラットフォームとして登場した、**vSphere with Kubernetesの基本機能**を検証したので、まとめてみました。
検証環境は次の通りです。
- 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のコンポーネントは以下の通り。
- スーパーバイザークラスタ: vSphere with Kubernetesを有効化したクラスタ(ESXi、NSX-T)
- 制御プレーン仮想マシン: スーパーバイザークラスタに3台展開され、Podを作成する
- vSphere Pod: vSphere with Kubernetesで作成されるPod
- Spherelet: ホストのKubetnetes用の追加プロセス
- CRX: vSphere Podの実行環境
vSphere with Kubernetes の環境構築
- ワークロードネットワークの設定
- vSphere Distributed Switch:スーパーバイザークラスタのオーバーレイ ネットワーク用
- ポッド CIDR:vSphere Native Pod の IP アドレス範囲、/21を指定(デフォルト値を利用可能)
- サービス CIDR:Kubernetes サービスの IP アドレス範囲(デフォルト値を利用可能)
- 入力/出力方向 CIDR :Kubernetes サービスの入力/出力方向 IP アドレス範囲、/27で外部からアクセス可能なアドレスを指定(Podのデプロイに外部アクセスが必要)
名前空間の作成
クラスタでのvSphere with Kubernetesの有効化を確認し、名前空間を作成
名前空間に、CPU、メモリ、ストレージ及び権限を割り当てる事で、開発者によるPodへのアクセスが可能となる
Podの作成と確認
CLIにて、スーパーバイザクラスタへのログインを実施
kubectl vsphere login --server=https://<制御プレーンノードのIPアドレス> --vsphere-username <your user account name>
- 名前空間にPodをデプロイし、確認
# 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