4장. 영구 스토리지 구성
4.1. AWS Elastic Block Store를 사용하는 영구저장장치
OpenShift Container Platform은 AWS EBS(Elastic Block Store volume)를 지원합니다. Amazon EC2를 사용하여 영구 스토리지로 OpenShift Container Platform 클러스터를 프로비저닝할 수 있습니다. Kubernetes 및 AWS에 대해 어느 정도 익숙한 것으로 가정합니다.
Kubernetes 영구 볼륨 프레임워크를 사용하면 관리자는 영구 스토리지로 클러스터를 프로비저닝하고 사용자가 기본 인프라에 대한 지식이 없어도 해당 리소스를 요청할 수 있습니다. AWS Elastic Block Store 볼륨은 동적으로 프로비저닝할 수 있습니다. 영구 볼륨은 단일 프로젝트 또는 네임스페이스에 바인딩되지 않으며, OpenShift Container Platform 클러스터에서 공유할 수 있습니다. 영구 볼륨 클레임은 프로젝트 또는 네임스페이스에 고유하며 사용자가 요청할 수 있습니다. KMS 키를 정의하여 AWS에서 container-persistent 볼륨을 암호화할 수 있습니다.
OpenShift Container Platform은 기본적으로 in-tree (비 CSI) 플러그인을 사용하여 AWS EBS 스토리지를 프로비저닝합니다.
향후 OpenShift Container Platform 버전에서는 기존 in-tree 플러그인을 사용하여 프로비저닝된 볼륨이 동등한 CSI 드라이버로 마이그레이션할 계획입니다. CSI 자동 마이그레이션이 원활해야 합니다. 마이그레이션은 영구 볼륨, 영구 볼륨 클레임 및 스토리지 클래스와 같은 기존 API 오브젝트를 사용하는 방법을 변경하지 않습니다. 마이그레이션에 대한 자세한 내용은 CSI 자동 마이그레이션 을 참조하십시오.
전체 마이그레이션 후 in-tree 플러그인은 향후 OpenShift Container Platform 버전에서 제거됩니다.
인프라의 스토리지의 고가용성은 기본 스토리지 공급자가 담당합니다.
OpenShift Container Platform의 경우 AWS EBS in-tree에서 CSI(Container Storage Interface) 드라이버로 자동 마이그레이션은 TP(기술 프리뷰) 기능으로 사용할 수 있습니다. 마이그레이션이 활성화되면 기존 in-tree 드라이버를 사용하여 프로비저닝된 볼륨이 AWS EBS CSI 드라이버를 사용하도록 자동으로 마이그레이션됩니다. 자세한 내용은 CSI 자동 마이그레이션 기능을 참조하십시오.
4.1.1. EBS 스토리지 클래스 생성
스토리지 클래스는 스토리지 수준 및 사용량을 구분하고 조정하는 데 사용됩니다. 스토리지 클래스를 정의하면 사용자는 동적으로 프로비저닝된 영구 볼륨을 얻을 수 있습니다.
4.1.2. 영구 볼륨 클레임 생성
사전 요구 사항
OpenShift Container Platform에서 볼륨으로 마운트하기 전에 기본 인프라에 스토리지가 있어야 합니다.
절차
-
OpenShift Container Platform 콘솔에서 스토리지
영구 볼륨 클레임을 클릭합니다. - 영구 볼륨 클레임 생성 개요에서 영구 볼륨 클레임 생성을 클릭합니다.
표시되는 페이지에 원하는 옵션을 정의합니다.
- 드롭다운 메뉴에서 이전에 생성한 스토리지 클래스를 선택합니다.
- 스토리지 클레임의 고유한 이름을 입력합니다.
- 액세스 모드를 선택합니다. 이렇게 하면 생성된 스토리지 클레임에 대한 읽기 및 쓰기 액세스가 결정됩니다.
- 스토리지 클레임의 크기를 정의합니다.
- 만들기를 클릭하여 영구 볼륨 클레임을 생성하고 영구 볼륨을 생성합니다.
4.1.3. 볼륨 형식
OpenShift Container Platform이 볼륨을 마운트하고 컨테이너에 전달하기 전에 영구 볼륨 정의에 fsType
매개변수에 의해 지정된 파일 시스템이 포함되어 있는지 확인합니다. 장치가 파일 시스템으로 포맷되지 않으면 장치의 모든 데이터가 삭제되고 장치는 지정된 파일 시스템에서 자동으로 포맷됩니다.
이를 통해 OpenShift Container Platform이 처음 사용하기 전에 포맷되기 때문에 형식화되지 않은 AWS 볼륨을 영구 볼륨으로 사용할 수 있습니다.
4.1.4. 노드의 최대 EBS 볼륨 수
기본적으로 OpenShift Container Platform은 노드 1개에 연결된 최대 39개의 EBS 볼륨을 지원합니다. 이 제한은 AWS 볼륨 제한과 일치합니다. 볼륨 제한은 인스턴스 유형에 따라 다릅니다.
클러스터 관리자는 in-tree 또는 CSI(Container Storage Interface) 볼륨과 해당 스토리지 클래스를 사용할 수 있지만, 두 볼륨을 동시에 사용하지 않아야 합니다. 연결된 최대 EBS 볼륨 수는 in-tree 및 CSI 볼륨에 대해 별도로 계산됩니다.
4.1.5. KMS 키를 사용하여 AWS에서 컨테이너 영구 볼륨 암호화
AWS에서 container-persistent 볼륨을 암호화하기 위한 KMS 키를 정의하는 것은 AWS에 배포할 때 명시적 규정 준수 및 보안 지침이 있는 경우 유용합니다.
사전 요구 사항
- 기본 인프라에는 스토리지가 포함되어야 합니다.
- AWS에서 고객 KMS 키를 생성해야 합니다.
절차
스토리지 클래스를 생성합니다.
$ cat << EOF | oc create -f - apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: <storage-class-name> 1 parameters: fsType: ext4 2 encrypted: "true" kmsKeyId: keyvalue 3 provisioner: ebs.csi.aws.com reclaimPolicy: Delete volumeBindingMode: WaitForFirstConsumer EOF
- 1
- 스토리지 클래스의 이름을 지정합니다.
- 2
- 프로비저닝된 볼륨에서 생성된 파일 시스템입니다.
- 3
- container-persistent 볼륨을 암호화할 때 사용할 키의 전체 Amazon Resource Name(ARN)을 지정합니다. 키를 제공하지 않지만
암호화된
필드가true
로 설정된 경우 기본 KMS 키가 사용됩니다. AWS 문서의 키 ID 및 키 ARN 찾기를 참조하십시오.
KMS 키를 지정하는 스토리지 클래스를 사용하여 PVC(영구 볼륨 클레임)를 생성합니다.
$ cat << EOF | oc create -f - apiVersion: v1 kind: PersistentVolumeClaim metadata: name: mypvc spec: accessModes: - ReadWriteOnce volumeMode: Filesystem storageClassName: <storage-class-name> resources: requests: storage: 1Gi EOF
PVC를 사용하도록 워크로드 컨테이너를 생성합니다.
$ cat << EOF | oc create -f - kind: Pod metadata: name: mypod spec: containers: - name: httpd image: quay.io/centos7/httpd-24-centos7 ports: - containerPort: 80 volumeMounts: - mountPath: /mnt/storage name: data volumes: - name: data persistentVolumeClaim: claimName: mypvc EOF
4.1.6. 추가 리소스
- in-tree 볼륨 플러그인에서 사용할 수 없는 볼륨 스냅샷과 같은 추가 스토리지 옵션에 액세스하는 방법에 대한 정보는 AWS Elastic Block Store CSI Driver Operator 에서 참조하십시오.