[번역] vSphere 7.0, Cloud Native Storage, CSI and vVols support

출처 : https://cormachogan.com/2020/04/20/vsphere-7-0-cloud-native-storage-csi-and-vvols-support/

vVol-logo.png

vSphere 7.0을 출시하면서 CNS(Cloud Native Storage) 오퍼링에 대한 향상된 기능도 발표하였다. 현재 vSphere 7.0에서 제공하는 새로운 기능 중 하나는 업데이트된 버전의 vSphere Container Storage Interface(CSI) 드라이버를 통해 PV(Persistent Vols)를 백업하도록 가상 볼륨(vVols)을 프로비저닝하는 기능이다. 이 게시물에서는 PV를 동적으로 프로비저닝할 때 쿠버네티스 매니페스트 파일을 통해 vVols 사용과 관련된 단계를 살펴보겠다. 또한 vVol 백업 PV를 쉽게 식별할 수 있도록 vSphere 7.0의 CNS UI에 대한 몇 가지 향상된 기능도 보여 주겠다.

1단계 – 간단한 vVols 정책 구축

가장 먼저 해야 할 일은 vSphere에서 Kubernetes StorageClass 매니페스트에서 참조할 수 있는 스토리지 정책을 구축하는 것이다. CSI 드라이버가 vSphere 7.0이므로 단순한 vVol 정책만 지원할 수 있다는 점에 유의하십시오. 아래 내 스토리지 정책에서는 배치 규칙만 배치하고, 이 정책을 사용하는 모든 스토리지 요청이 Pure Storage 어레이에 배치되도록 요청한다. 이 어레이는 vVol 지원. 현재 vSphere 7.0 CSI 드라이버를 사용하는 vVol 스냅샷, 복제 또는 기타 고급 기능에 대한 스토리지 정책이 지원되지 않는다는 점에 유의하십시오. 아래에 나와 있는 간단한 정책 구성을 사용해야 한다.

0-Simple-vVol-policy.png

또한 Pure Storage FlashArray의 vVol 데이터스토어가 이미 내 바닐라 쿠버네티스 클러스터가 실행 중인 ESXi 호스트에 제공되는 것에 주의한다.

2단계 – 스토리지 클래스 및 PVC 매니페스트 생성

다음은 vVols를 사용하기 위한 간단한 매니페스트(YAML 파일)이다. 바닐라 쿠베르네츠 배포는 CSI 드라이버의 마지막 버전과 함께 구축되었으므로 이 드라이버는 vSAN-FS에서 RWX 영구 볼륨을 수행할 수 있고 vVols를 지원하며 암호화 지원 및 볼륨 확장 지원 등의 다른 기능을 가지고 있으며 곧 작성하게 될 것임을 참고한다. 이 드라이버는 아직 공개되지 않았지만, 곧 다운로드가 가능할 것이다.

이것은 내 StorageClass 매니페스트다. 주요 관심사는 vSphere CSI 드라이버인 Provisioner와 vSphere에 구축된 스토리지 정책과 일치하는 스토리지 정책 이름 매개 변수입니다. 물론 이 정책 "VVol-Simple"에는 내 순수 스토리지(vVol) FlashArray에 대한 배치 규칙이 있다.

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: vvol-sc
provisioner: csi.vsphere.vmware.com
parameters:
  storagepolicyname: "VVol-Simple"

이것은 아주 간단한 PVC 선언이다. 영구 볼륨을 동적으로 생성하기 위한 StorageClass(vvvol-sc)를 참조한다. 이 PVC는 스토리지Class의 스토리지 정책을 사용하여 7GB 볼륨 생성을 요청하며, 이는 기본적으로 정책 요구 사항을 충족할 수 있는 유일한 스토리지이므로 Pure Storage(vVol) FlashArray VVol 데이터스토어에 PV를 생성하라는 요청을 의미한다.

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: vvol-pvc
spec:
  storageClassName: vvol-sc
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 7G

3단계 – 매니페스트 적용 및 어레이 관찰

시작하려면 vVol 데이터스토어에 컨텐츠가 없음:

1-Empty-VVol-datastore.png

마찬가지로 Pure Storage(vVol) 어레이에도 vVol이 없다.

2-Empty-VVol-array.png

이러한 매니페스트를 적용하면 vVol 데이터스토어에서 다음과 같은 이벤트가 발생함:

  1. vVol 데이터스토어에 새 fcd 디렉토리가 생성된다. 이 디렉터리에는 데이터스토어에 생성된 모든 First Class Disks가 포함되어 있다. Kubernetes 영구 볼륨은 vSphere 스토리지의 First Class Disks(Improved Virtual Disks 또는 IVD라고도 함)에 의해 백업된다. 이러한 FCD는 일반적인 VMDK처럼 보이지만 FCD와의 차이점은 VM의 컨텍스트 밖에서 직접 작업할 수 있다는 것이다. FCD에 대한 자세한 내용은 여기를 참조하십시오. FCD 디렉토리는 FCD와 각각의 사이드카가 사는 곳이다. 사이드카에는 FCD 메타데이터가 포함되어 있다.
  2. vVol 데이터스토어에 새 카탈로그 디렉터리가 생성된다. 이 카탈로그에는 데이터스토어의 FCD를 추적하는 메타데이터가 포함되어 있다. FCD가 데이터스토어에서 프로비저닝될 때 데이터스토어당 하나의 카탈로그가 생성되는 것을 볼 수 있다.

FCD에 대해 이야기할 때, 우리는 실제로 vSphere 스토리지에서 생성된 특수한 VMDK(가상 머신 디스크)를 Cubernetes Persistent Volume을 백업하는 것에 대해서만 언급한다는 것을 기억하자.

이제 vVol 데이터스토어에서 이 두 폴더를 모두 볼 수 있다.

3-Create-PV-Catalog-and-FCD-folders.png

fcd 디렉토리에 드릴로 삽입하면 퍼스트 클래스 디스크(.vmdk)로 표시되는 영구 볼륨이 .vmfd "sidecar" 메타데이터 파일과 함께 표시됩니다.

4-Create-PV-FCD-folder.png

이제 동일한 StorageClass를 사용하여 다른 PVC 매니페스트 파일을 통해 새로운 영구 볼륨을 생성하여 어떤 일이 발생하는지 관찰할 수 있다. 여기 두 번째 매니페스트가 있는데, 이전과 동일한 스토리지 클래스를 참조하지만 볼륨 크기가 다른 요청을 참조한다.

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: vvol-pvc-2
spec:
  storageClassName: vvol-sc
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 1G

그리고 이 매니페스트를 적용하면 두 번째 FCD/VMDK 및 .vmfd "side-car"가 데이터스토어의 fcd 디렉토리에 나타나는 것을 볼 수 있다.

6-Second-PV-FCD-Folder.png

이제 Pure Storage FlashArray를 살펴본다면 새로 생성된 가상 볼륨과 일부 볼륨 그룹을 볼 수 있다. 카탈로그 디렉터리와 fcd 디렉터리에 대해 생성된 볼륨 그룹이 있다. fcd 디렉토리를 드릴로 뚫으면 현재 5 볼륨이 있다. fcd 디렉토리를 나타내는 1 x Config vVol이 있다. 그러면 4개의 vVols, Data 2개, 기타 2개가 있다. Data vVols는 FCD/VMDK이고 기타 vVols는 앞에서 데이터스토어에서 보았던 .vmfd "sidcar" 파일이다. Data vVols의 크기는 PVC 매니페스트에서 수행한 요청과 일치한다.

7-Second-PV-VVol-array-VG.png

4단계 – vSphere UI에서 CNS(Cloud Native Storage) 관찰

K8을 vSphere 위에서 실행하면 가장 큰 장점 중 하나는 CNS를 통해 얻을 수 있는 통찰력이다. 어레이 보기와 데이터스토어 콘텐츠 보기를 계속 전환해야 하는 대신 vSphere 스토리지를 사용하는 영구 볼륨과 관련된 모든 정보를 한 곳에 저장한다. PV에 vVols를 사용하는 것도 다르지 않다. 다음은 vSphere UI의 두 가지 간단한 PV를 보여 주는 컨테이너 볼륨 보기다.

8-CNS-with-vVols.png

PV 이름이 블록 유형(파일과는 반대로)임을 알 수 있으며 VVolDatastore에 있으며 준수 스토리지 정책인 VVol-Simple을 사용하고 있음을 알 수 있다.

Details(세부 정보) 아이콘을 클릭하면 여기에 표시된 것처럼 쿠버네티스 객체에 대한 자세한 정보를 볼 수 있다. 여기서 매니페스트에 나타난 영구 볼륨 클레임의 이름을 볼 수 있다.

9-Objects-view.png

Basic 보기를 클릭하면 Health Status와 같은 정보가 더 많아진다. vSphere UI에서 직접 제공하는 유용한 정보가 있다.

10-Basics-view.png

쿠버네티스와 vVols 둘 다에서 작업하는 데 관심이 있는 분들을 위해 vSphere 7.0을 사용하면 바로 이 작업을 수행할 수 있다. 이번 릴리스에서는 스토리지 정책을 매우 단순하게 유지한다.