Azure Stack Edge Pro GPU 디바이스에서 Kubernetes 스토리지 관리
적용 대상: Azure Stack Edge Pro - GPUAzure Stack Edge Pro 2Azure Stack Edge Pro RAzure Stack Edge Mini R
Azure Stack Edge Pro 디바이스에서 컴퓨팅 역할을 구성할 때 Kubernetes 클러스터가 만들어집니다. Kubernetes 클러스터가 만들어지면 컨테이너화된 애플리케이션을 Kubernetes 클러스터의 Pod에 배포할 수 있습니다. 스토리지를 Kubernetes 클러스터의 Pod에 제공하는 고유한 방법이 있습니다.
이 문서에서는 일반적으로 Kubernetes 클러스터에서, 특히 Azure Stack Edge Pro 디바이스의 컨텍스트에서 스토리지를 프로비전하는 방법을 설명합니다.
Kubernetes Pod에 대한 스토리지 요구 사항
Kubernetes Pod는 상태 비저장이지만 실행하는 애플리케이션은 일반적으로 상태 저장입니다. Pod는 수명이 짧고 다시 시작하거나, 장애 조치(failover)되거나 Kubernetes 노드 간에 이동하므로 Pod와 연결된 스토리지에 대해 다음 요구 사항을 충족해야 합니다.
스토리지는 다음을 충족해야 합니다.
- Pod 외부에 상주합니다.
- Pod 수명 주기와 독립적입니다.
- 모든 Kubernetes 노드에서 액세스할 수 있습니다.
Kubernetes에서 스토리지가 관리되는 방법을 이해하려면 다음 두 가지 API 리소스를 이해해야 합니다.
PV(PersistentVolume): Kubernetes 클러스터의 스토리지 부분입니다. Kubernetes 스토리지는
PersistentVolume
으로 정적으로 프로비전될 수 있습니다. 또한StorageClass
로 동적으로 프로비전할 수도 있습니다.PVC(PersistentVolumeClaim): 스토리지에 대한 사용자의 요청입니다. PVC는 PV 리소스를 사용합니다. PVC는 특정 크기 및 액세스 모드를 요청할 수 있습니다.
사용자에게 다양한 문제에 대한 다양한 속성이 있는
PersistentVolumes
가 필요하므로 클러스터 관리자는 크기 및 액세스 모드 외에도 더 다양한 방법으로 다양한PersistentVolumes
를 제공할 수 있어야 합니다. 이러한 요구 사항에는StorageClass
리소스가 필요합니다.
스토리지 프로비전은 정적이거나 동적일 수 있습니다. 다음 섹션에서는 각 프로비전 유형에 대해 설명합니다.
정적 프로비전
Kubernetes 클러스터 관리자는 스토리지를 정적으로 프로비저닝할 수 있습니다. 정적으로 프로비전하기 위해 SMB/NFS 파일 시스템 기반 스토리지 백 엔드를 사용하거나, 온-프레미스 환경에서 네트워크를 통해 로컬로 연결되는 iSCSI 디스크를 사용하거나, 클라우드에서 Azure Files 또는 Azure Disks를 사용할 수도 있습니다. 이 유형의 스토리지는 기본적으로 프로비전되지 않으며, 클러스터 관리자는 이 프로비전을 계획하고 관리해야 합니다.
다음은 Kubernetes에서 정적으로 프로비전된 스토리지가 사용되는 방법을 보여 주는 다이어그램입니다.
수행되는 단계는 다음과 같습니다.
스토리지 프로비전: 클러스터 관리자가 스토리지를 프로비전합니다. 이 예에서 클러스터 관리자는 이러한 공유에 해당하는 Kubernetes 클러스터에서 영구 볼륨 개체를 자동으로 만드는 하나 이상의 SMB 공유를 만듭니다.
스토리지 요청: 스토리지를 요청하는 PVC 배포를 제출합니다. 스토리지에 대한 이 요청은 PVC(PersistentVolumeClaim)입니다. PV 및 PVC의 크기와 액세스 모드가 일치하면 PVC가 PV에 바인딩됩니다. PVC와 PV는 일대일로 매핑됩니다.
컨테이너에 PVC 탑재: PVC가 PV에 바인딩되면 이 PVC를 컨테이너의 경로에 탑재할 수 있습니다. 컨테이너의 애플리케이션 로직이 이 경로에서 읽고 쓰는 경우 데이터가 SMB 스토리지에 기록됩니다.
동적 프로비전
다음은 Kubernetes에서 정적으로 프로비전된 스토리지가 사용되는 방법을 보여 주는 다이어그램입니다.
수행되는 단계는 다음과 같습니다.
스토리지 클래스 정의: 클러스터 관리자는 Kubernetes 클러스터 작동 환경에 따라 스토리지 클래스를 정의합니다. 또한 클러스터 관리자는 Kubernetes 클러스터에 배포된 또 다른 Pod 또는 애플리케이션인 구축 프로그램을 배포합니다. 구축 프로그램에는 공유를 동적으로 프로비전하기 위한 모든 세부 정보가 있습니다.
스토리지 요청: 스토리지 용량을 요청하는 애플리케이션을 제출합니다. 이 스토리지 클래스 참조를 사용하여 PVC가 만들어지면 구축 프로그램이 호출됩니다.
동적으로 스토리지 프로비전: 구축 프로그램에서 로컬 디스크 스토리지와 연결된 공유를 동적으로 만듭니다. 공유가 만들어지면 이 공유에 해당하는 PV 개체도 자동으로 만듭니다.
컨테이너에 PVC 탑재: PVC가 PV에 바인딩되면 정적 프로비전과 동일한 방식으로 PVC를 컨테이너의 경로에 탑재하고 공유에서 읽거나 쓸 수 있습니다.
Azure Stack Edge Pro에서 스토리지 프로비전
Azure Stack Edge Pro 디바이스에서는 디바이스의 스토리지 기능을 사용하여 정적으로 프로비전되는 PersistentVolumes
를 만듭니다. 공유를 프로비전하고 Edge 컴퓨팅과 공유 사용 옵션이 사용하도록 설정되는 경우 이 작업은 Kubernetes 클러스터에서 PV 리소스를 자동으로 만듭니다.
클라우드 계층화를 사용하기 위해 Edge 컴퓨팅과 공유 사용 옵션이 사용하도록 설정된 Edge 클라우드 공유를 만들 수 있습니다. 이 공유에 대한 PV가 자동으로 다시 만들어집니다. Edge 공유에 쓰는 모든 애플리케이션 데이터는 클라우드에 계층화됩니다.
SMB 및 NFS 공유를 모두 만들어 Azure Stack Edge Pro 디바이스에서 PV를 정적으로 프로비전할 수 있습니다. PV가 프로비전되면 이 스토리지를 요청하는 PVC를 제출합니다. 다음은 스토리지를 요청하고 프로비전한 공유를 사용하는 yaml
PVC 배포의 예제입니다.
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: pvc-smb-flexvol
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 10Gi
volumeName: <nfs-or-smb-share-name-here>
storageClassName: ""
volumeName
필드의 값을 가져오려면 SMB 또는 NFS 공유를 만든 후 선택할 때 Edge 컴퓨팅 모듈에 대한 로컬 탑재 지점을 선택합니다. 이 탑재 지점은 공유 이름과 동일합니다.
자세한 내용은 kubectl을 통해 Azure Stack Edge Pro에서 정적 프로비전을 통해 상태 저장 애플리케이션 배포를 참조하세요.
정적으로 프로비전된 동일한 스토리지에 액세스하기 위해 IoT의 스토리지 바인딩에 대한 해당 볼륨 탑재 옵션은 다음과 같습니다. /home/input
는 컨테이너 내에서 볼륨이 액세스할 수 있는 경로입니다.
{
"HostConfig": {
"Mounts": [
{
"Target": "/home/input",
"Source": "<nfs-or-smb-share-name-here>",
"Type": "volume"
},
{
"Target": "/home/output",
"Source": "<nfs-or-smb-share-name-here>",
"Type": "volume"
}]
}
}
또한 Azure Stack Edge Pro에는 Kubernetes 노드에 연결된 데이터 디스크 스토리지를 사용하는 ase-node-local
이라는 기본 제공 StorageClass
가 있습니다. 이 StorageClass
는 동적 프로비전을 지원합니다. Pod 애플리케이션에서 StorageClass
참조를 만들 수 있으며 PV가 자동으로 만들어집니다. 자세한 내용은 ase-node-local StorageClass
를 쿼리할 수 있는 Kubernetes 대시보드를 참조하세요.
자세한 내용은 kuebctl을 통해 Azure Stack Edge Pro에서 동적 프로비전을 통해 상태 저장 애플리케이션 배포를 참조하세요.
스토리지 유형 선택
배포하는 워크로드에 따라 스토리지 유형을 선택해야 할 수 있습니다.
볼륨이 배포되는 많은 노드에서 읽기-쓰기로 탑재되는
PersistentVolumes
에 대해ReadWriteMany
액세스 모드를 원하는 경우 정적 프로비전을 SMB/NFS 공유에 사용합니다.배포하는 애플리케이션(예: MongoDB, PostgreSQL, MySQL 또는 Prometheus와 같은 애플리케이션)에 POSIX 규정 준수 요구 사항이 있는 경우 기본 제공 StorageClass를 사용합니다. 액세스 모드가
ReadWriteOnce
이거나 볼륨이 단일 노드에서 읽기-쓰기로 탑재됩니다.
액세스 모드에 대한 자세한 내용은 Kubernetes 볼륨 액세스 모드를 참조하세요.
다음 단계
PersistentVolume
을 정적으로 프로비전하는 방법을 알아보려면 다음을 참조하세요.
StorageClass
를 동적으로 프로비전하는 방법을 알아보려면 다음을 참조하세요.