vm.gowatana.jp

NEOにほんごVMware(仮)

vSphere のクラウド ネイティブ ストレージで vSAN を利用してみる。

個人的な vSAN Advent Calendar 8日目です。

 

今回は、vSphere のクラウド ネイティブ ストレージ(CNS)で、vSAN を利用してみます。

 

今回の内容です。

 

ドキュメントでは下記のあたりです。

 

今回の環境

今回は、vSphere with Tanzu のスーパーバイザー クラスタで、CNS を利用する Kubernetes リソースである Persistemt Volume Claim(PVC)を作成してみます。

 

このラボ環境は下記の「vSphere 7.0 + NSX-T」の手順で構築しました。

 

「lab-ns-02」というスーパーバイザー名前空間を作成して、2つの「仮想マシン ストレージ ポリシー」を登録しています。

f:id:gowatana:20201208232131p:plain

 

kubectl では、この名前空間に対応するコンテキストでコマンドを実行します。

$ kubectl config use-context lab-ns-02
Switched to context "lab-ns-02".
$ kubectl config current-context
lab-ns-02

 

データストアと、仮想マシン ストレージ ポリシー

今回は ESXi ホスト全台の共有データストアとして、vSAN データストアと、NFS データストアの両方を用意してあります。

登録した仮想マシン ストレージ ポリシーは、下記の2つです。

 

vm-storage-policy-wcp

「タグ ベースの配置ルールを有効化」で、データストアを選択するポリシーです。

このポリシーは、下記の投稿にある手順で作成してあり、タグによって NFS データストア「Datastore-NFS-231」を選択します。

f:id:gowatana:20201208232705p:plain

 

vSAN Default Storage Policy

これは、vSAN がデフォルトで利用するポリシーです。特にデータストへのタグ設定をしなくても、vSAN のデータストア(vsanDatastore)が選択できるポリシーです。

f:id:gowatana:20201208233412p:plain

 

名前空間にポリシーを登録すると、スーパーバイザー クラスタの Kubernetes では、ポリシー名をもとに Storage Class が自動的に用意されます。このあと Persistemt Volume Claim を作成する際に、データストアを指定するために、これらのポリシーを指定します。

$ kubectl get storageclasses
NAME                          PROVISIONER              RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
vm-storage-policy-wcp         csi.vsphere.vmware.com   Delete          Immediate           true                   13d
vsan-default-storage-policy   csi.vsphere.vmware.com   Delete          Immediate           true                   11m

 

PVC のマニフェスト

下記のような 2つのマニフェスト ファイルを用意しました。それぞれ、名前と Storage Class のみ(5行目と9行目のみ)が異なります。

 

NFS データストア(のポリシー)を指定したマニフェスト ファイル

gist.github.com

 

vSAN データストア(のポリシー)を指定したマニフェスト ファイル

gist.github.com

 

PVC の作成

それでは、PVC を作成します。

NFS を利用する PVC を作成します

$ kubectl apply -f adv20201208-pvc-nfs.yml
persistentvolumeclaim/demo-pvc-nfs created

 

vSAN を利用する PVC を作成します

$ kubectl apply -f adv20201208-pvc-vsan.yml
persistentvolumeclaim/demo-pvc-vsan created

 

vSphere Client でも、コンテナ ボリュームが作成されるタスクが確認できます。

f:id:gowatana:20201208235110p:plain

 

PVC が作成されました。

$ kubectl get pvc
NAME            STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS                  AGE
demo-pvc-nfs    Bound    pvc-7f4d1205-bcc6-4f49-8488-3045afce0412   1Gi        RWO            vm-storage-policy-wcp         3m26s
demo-pvc-vsan   Bound    pvc-6160c164-1ac9-4332-965c-b307dfc6bfa5   1Gi        RWO            vsan-default-storage-policy   3m15s

 

vSphere Client でも、クラスタの「監視」→「クラウド ネイティブ ストレージ」→「コンテナ ボリューム」から、ボリュームが作成され、それぞれのデータストア上にあることが確認できます。

f:id:gowatana:20201209000154p:plain

 

コンテナ ボリューム(NFS)の様子

NFS データストア上の PVC にあたるコンテナ ボリュームの情報を確認してみます。

 

「詳細」ボタン →「Kubernetes オブジェクト」タブを見ると、作成されたボリューム名(pvc-7f~12)、名前空間(lab-ns-02)、PVC の名前(demo-pvc-nfs)、ラベル(PVC は、demo: adv20201208)などがわかります。

今回は Pod に割り当てていないので、「Pod」は空欄になっています。

f:id:gowatana:20201209000845p:plain

 

「基本」タブに切り替えると、vSphere 視点での情報がわかります。たとえば、割り当てられた仮想マシン ストレージ ポリシーや、データストアが表示されています。

ボリュームが Pod に割り当てられると、その Pod が稼働している vSphere  Pod または コンテナ ホストにあたる「仮想マシン」も表示されるようになります。

f:id:gowatana:20201209001138p:plain

 

コンテナ ボリューム(vSAN)の様子

vSAN データストア上の PVC にあたるコンテナ ボリュームの情報を確認してみます。

 

NFS データストアの場合と同様、「基本」タブと「Kubernetes オブジェクト」タブに情報が表示されます。

「Kubernetes オブジェクト」タブの様子です。

f:id:gowatana:20201209001803p:plain

 

「基本」タブです。

f:id:gowatana:20201209001844p:plain

 

さらに vSAN の場合には「物理的な配置」タブがあり、vSAN コンポーネントの物理ディスク配置が確認できます。

f:id:gowatana:20201209002001p:plain

 

このように、vSphere のクラウド ネイティブ ストレージ機能では、仮想マシン ストレージ ポリシーを利用することで、vSAN でも、NFS でも、(FC や iSCSI の VMFS でも)種類を問わずデータストアを利用できるようになっています。

 

以上、クラウド ネイティブ ストレージで vSAN を利用してみる話でした。

つづく。