通常の Kubernetes では、名前空間(Namespace)を分ければ、同名の Pod を作成できます。今回は、ためしに vSphere with Kubernetes の 2つのスーパーバイザー名前空間でも、あえて同名の vSphere Pod を起動してみました。
ソフトウェア バージョンやホスト名などは異なりますが、下記のようにラボを用意しています。ちなみに今回は vCenter Server 7.0b と 7.0 U1 を利用しています。
vSphere with Tanzu ラボ環境構築。まとめ - vm.gowatana.jp
名前の重複する vSphere Pod の作成
それでは、vCenter 7.0b の環境に vSphere Pod を作成していきます。
1つめの Pod の作成
まずは、1つめのスーパーバイザー名前空間「lab-ns-01」(に対応するコンテキスト)を使用しています。
$ kubectl config get-contexts lab-ns-01
CURRENT NAME CLUSTER AUTHINFO NAMESPACE
* lab-ns-01 192.168.70.97 wcp:192.168.70.97:administrator@vsphere.local lab-ns-01
Pod を「pod-01」という名前で起動します。
$ kubectl run pod-01 --image=gowatana/centos7:httpd --generator=run-pod/v1 --context=lab-ns-01
pod/pod-01 created
$ kubectl get pods --context=lab-ns-01
NAME READY STATUS RESTARTS AGE
pod-01 1/1 Running 0 102s
vSphere Pod として起動された様子が、vSphere Client でも確認できます。
2つめの Pod (別の名前空間で、同じ Pod 名)の作成
2つめのスーパーバイザー名前空間は「lab-ns-02」です。
$ kubectl config get-contexts lab-ns-02
CURRENT NAME CLUSTER AUTHINFO NAMESPACE
lab-ns-02 192.168.70.97 wcp:192.168.70.97:administrator@vsphere.local lab-ns-02
この名前空間でも、Pod をあえて「pod-01」という名前で起動してみます。これも当然ながら起動できます。
$ kubectl run pod-01 --image=gowatana/centos7:httpd --generator=run-pod/v1 --context=lab-ns-02
pod/pod-01 created
$ kubectl get pods --context=lab-ns-02
NAME READY STATUS RESTARTS AGE
pod-01 1/1 Running 0 2m53s
vSphere Client でも、vSphere Pod が起動できたことが確認できます。
vSphere の リソース プール / フォルダと VM の関係
vSphere Pod の実体は VM です。もともと vSphere では、vCenter 配下に同名の VM を作成することが可能です。
普通の VM(vSphere Pod ではない VM)は、従来からフォルダ内で同名の VM を作成できませんでした。しかし別のフォルダであれば、同名の VM が作成できます。
一方で、リソース プール内では同名の VM が作成可能でした。
スーパーバイザー名前空間とリソース プール / フォルダの関係
※ここからは、vCenter 7.0 U1 で同様の名前空間 / vSphere Pod 構成の環境を作成したスクリーンショットです。
スーパーバイザー名前空間は、vSphere リソース プールとフォルダの仕組みを利用しているようです。名前空間を作成すると同名のリソース プールとフォルダが作成されます。
「ホストおよびクラスタ」インベントリでは、Namespaces というリソース プールの配下にスーパーバイザー名前空間が作成されていますが・・・
「仮想マシンおよびテンプレート」インベントリでは、Namespaces というフォルダの配下にスーパーバイザー名前空間が作成されているように見えます。
PowerCLI で確認してみると、それぞれがリソース プールとフォルダで実装されていることが分かります。
「Namespaces」リソース プールの配下には、名前空間と同名のリソース プールが作成されています。
PS C:\> Get-ResourcePool -Name Namespaces | Get-ResourcePool | Sort-Object Name | ft -AutoSize Name CpuSharesLevel CpuReservationMHz CpuLimitMHz MemSharesLevel MemReservationGB MemLimitGB ---- -------------- ----------------- ----------- -------------- ---------------- ---------- lab-ns-01 Normal 0 -1 Normal 0.000 -1.000 lab-ns-02 Normal 0 -1 Normal 0.000 -1.000
そして同様に「Namespaces」フォルダの配下にも、名前空間と同名の VM フォルダが作成されています。
PS C:\> Get-Folder -Name Namespaces | Get-Folder | Sort-Object Name |ft -AutoSize Name Type ---- ---- lab-ns-01 VM lab-ns-02 VM
作成した vSphere Pod とリソース プール / フォルダとの関係です。
PS C:\> Get-VM -Name pod-01 | select Name,GuestId,PowerState,Folder,ResourcePool | Sort-Object Folder | ft -AutoSize Name GuestId PowerState Folder ResourcePool ---- ------- ---------- ------ ------------ pod-01 crxPod1Guest PoweredOn lab-ns-01 lab-ns-01 pod-01 crxPod1Guest PoweredOn lab-ns-02 lab-ns-02
スーパーバイザー名前空間では、従来からの vSphere の仕組みをうまく利用していることが分かります。
以上、重複する名前の vSphere Pod を起動してみる話でした。