個人的な 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つの「仮想マシン ストレージ ポリシー」を登録しています。
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」を選択します。
vSAN Default Storage Policy
これは、vSAN がデフォルトで利用するポリシーです。特にデータストへのタグ設定をしなくても、vSAN のデータストア(vsanDatastore)が選択できるポリシーです。
名前空間にポリシーを登録すると、スーパーバイザー クラスタの 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 データストア(のポリシー)を指定したマニフェスト ファイル
vSAN データストア(のポリシー)を指定したマニフェスト ファイル
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 でも、コンテナ ボリュームが作成されるタスクが確認できます。
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 でも、クラスタの「監視」→「クラウド ネイティブ ストレージ」→「コンテナ ボリューム」から、ボリュームが作成され、それぞれのデータストア上にあることが確認できます。
コンテナ ボリューム(NFS)の様子
NFS データストア上の PVC にあたるコンテナ ボリュームの情報を確認してみます。
「詳細」ボタン →「Kubernetes オブジェクト」タブを見ると、作成されたボリューム名(pvc-7f~12)、名前空間(lab-ns-02)、PVC の名前(demo-pvc-nfs)、ラベル(PVC は、demo: adv20201208)などがわかります。
今回は Pod に割り当てていないので、「Pod」は空欄になっています。
「基本」タブに切り替えると、vSphere 視点での情報がわかります。たとえば、割り当てられた仮想マシン ストレージ ポリシーや、データストアが表示されています。
ボリュームが Pod に割り当てられると、その Pod が稼働している vSphere Pod または コンテナ ホストにあたる「仮想マシン」も表示されるようになります。
コンテナ ボリューム(vSAN)の様子
vSAN データストア上の PVC にあたるコンテナ ボリュームの情報を確認してみます。
NFS データストアの場合と同様、「基本」タブと「Kubernetes オブジェクト」タブに情報が表示されます。
「Kubernetes オブジェクト」タブの様子です。
「基本」タブです。
さらに vSAN の場合には「物理的な配置」タブがあり、vSAN コンポーネントの物理ディスク配置が確認できます。
このように、vSphere のクラウド ネイティブ ストレージ機能では、仮想マシン ストレージ ポリシーを利用することで、vSAN でも、NFS でも、(FC や iSCSI の VMFS でも)種類を問わずデータストアを利用できるようになっています。
以上、クラウド ネイティブ ストレージで vSAN を利用してみる話でした。
つづく。