vm.gowatana.jp

NEOにほんごVMware(仮)

スーパーバイザー名前空間を分けて同名 vSphere Pod を起動してみる。

通常の 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 でも確認できます。

f:id:gowatana:20201123202835p:plain

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 が起動できたことが確認できます。

f:id:gowatana:20201123202924p:plain

vSphere の リソース プール / フォルダと VM の関係

vSphere Pod の実体は VM です。もともと vSphere では、vCenter 配下に同名の VM を作成することが可能です。

普通の VM(vSphere Pod ではない VM)は、従来からフォルダ内で同名の VM を作成できませんでした。しかし別のフォルダであれば、同名の VM が作成できます。

f:id:gowatana:20201123203012p:plain

一方で、リソース プール内では同名の VM が作成可能でした。

f:id:gowatana:20201123203045p:plain

スーパーバイザー名前空間とリソース プール / フォルダの関係

※ここからは、vCenter 7.0 U1 で同様の名前空間 / vSphere Pod 構成の環境を作成したスクリーンショットです。

スーパーバイザー名前空間は、vSphere リソース プールとフォルダの仕組みを利用しているようです。名前空間を作成すると同名のリソース プールとフォルダが作成されます。

「ホストおよびクラスタ」インベントリでは、Namespaces というリソース プールの配下にスーパーバイザー名前空間が作成されていますが・・・

f:id:gowatana:20201125020909p:plain

「仮想マシンおよびテンプレート」インベントリでは、Namespaces というフォルダの配下にスーパーバイザー名前空間が作成されているように見えます。

f:id:gowatana:20201125021708p:plain

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 を起動してみる話でした。