개요
Anthos clusters on AWS로 가져올 AWS Elastic Block Store(EBS) 볼륨이 이미 있는 경우 PersistentVolume(PV) 객체를 만들어 특정 PersistentVolumeClaim(PVC)에 대해 예약할 수 있습니다.
이 페이지에서는 데이터가 채워진 기존 EBS 볼륨을 사용하여 PV를 만드는 방법과 Pod에서 PV를 사용하는 방법을 설명합니다.
시작하기 전에
anthos-aws
디렉터리에서anthos-gke
를 사용하여 컨텍스트를 사용자 클러스터로 전환합니다.cd anthos-aws env HTTPS_PROXY=http://localhost:8118 \ anthos-gke aws clusters get-credentials CLUSTER_NAME
CLUSTER_NAME을 사용자 클러스터 이름으로 바꿉니다.
기존 EBS 볼륨의 PersistentVolume 만들기
새 PV를 지정하여 기존 EBS 볼륨을 가져올 수 있습니다.
다음 YAML을
existing-volume.yaml
이라는 파일에 복사하고 다음과 같이 값을 바꿔 구성을 완료합니다.- volume-capacity: 볼륨 크기입니다. 예를 들면
30Gi
입니다. Kubernetes의 볼륨 용량 지정 방법에 대한 자세한 내용은 메모리 의미를 참조하세요. storage-class-name: 볼륨을 프로비저닝하는 StorageClass의 이름입니다. 예를 들어 기본
standard-rwo
를 사용할 수 있습니다.ebs-id: EBS 볼륨 ID입니다. 예를 들면
vol-05786ec9ec9526b67
입니다.fs-type: 볼륨의 파일 시스템입니다. 예를 들면
ext4
입니다.zone: EBS 볼륨을 호스팅하는 AWS 가용성 영역입니다. 예를 들면
us-east-1c
입니다.
apiVersion: v1 kind: PersistentVolume metadata: name: volume-name annotations: pv.kubernetes.io/provisioned-by: ebs.csi.aws.com spec: capacity: storage: volume-capacity accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain storageClassName: storage-class-name claimRef: name: my-pvc namespace: default csi: driver: ebs.csi.aws.com volumeHandle: ebs-volume-id fsType: file-system-type nodeAffinity: required: nodeSelectorTerms: - matchExpressions: - key: topology.ebs.csi.aws.com/zone operator: In values: - zone
- volume-capacity: 볼륨 크기입니다. 예를 들면
YAML을 클러스터에 적용
kubectl apply -f existing-volume.yaml
PV 만들기 확인
kubectl describe pv volume-name
이 명령어의 출력에는 PV 상태가 포함됩니다.
PersistentVolumeClaim 및 Pod에서 볼륨 사용
볼륨을 가져온 후에는 PVC와 PVC를 연결하는 Pod를 만들 수 있습니다.
아래의 YAML은 PVC를 만들어 Nginx 웹 서버를 실행하는 Pod에 연결합니다. 이를 nginx.yaml
이라는 파일에 복사하고 다음과 같이 값을 바꿔 구성을 완료합니다.
- storage-class: 이전에 만든 PersistentVolume의 StorageClass 이름입니다. 예를 들면
standard-rwo
입니다. - volume-name: 이전에 만든 볼륨의 이름입니다.
- volume-capacity: 볼륨 크기입니다. 예를 들면
30Gi
입니다.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-pvc
spec:
storageClassName: storage-class-name
volumeName: volume-name
accessModes:
- ReadWriteOnce
resources:
requests:
storage: volume-capacity
---
apiVersion: v1
kind: Pod
metadata:
name: web-server
spec:
containers:
- name: web-server
image: nginx
volumeMounts:
- mountPath: /var/lib/www/html
name: data
volumes:
- name: data
persistentVolumeClaim:
claimName: my-pvc
YAML을 클러스터에 적용
kubectl apply -f nginx.yaml
kubectl describe
로 Nginx 인스턴스 상태를 확인합니다. 출력에Running
STATUS
가 포함됩니다.kubectl describe pod web-server
암호화된 EBS 볼륨 사용
EBS 볼륨이 AWS Key Management Service(KMS)로 암호화되는 경우 Anthos clusters on AWS 제어 영역의 AWS IAM 역할에 KMS 키에 대한 액세스 권한을 부여해야 합니다.
AWS IAM 역할 이름을 받으려면 다음 단계를 수행하세요.
Anthos clusters on AWS 구성이 있는 디렉터리로 변경합니다. 이 디렉터리는 관리 서비스를 설치할 때 생성됩니다.
cd anthos-aws
anthos-gke
도구로 Anthos clusters on AWS 환경을 만들었는지 또는 AWS IAM 프로필을 수동으로 만들었는지 선택합니다.anthos-gke 도구
terraform output
명령어를 사용하고iamInstanceProfile
값을 검색합니다.terraform output | grep iamInstanceProfile
anthos- gke
도구로 Anthos clusters on AWS 환경을 만든 경우 출력은 다음과 같습니다.iamInstanceProfile: gke-CLUSTER_ID-controlplane iamInstanceProfile: gke-CLUSTER_ID-nodepool
여기서 CLUSTER_ID는 클러스터 ID입니다. 다음 단계를 위해
gke-CLUSTER_ID-controlplane
값을 복사합니다.수동으로 생성됨
다음 명령어를 사용하여
terraform output
출력을 검사합니다.terraform output | less
출력을 스크롤하여 AWSCluster 정의 뒤에 있는 iamInstanceProfile을 찾습니다.
kind: AWSCluster metadata: name: cluster-0 spec: ... controlPlane: ... iamInstanceProfile: INSTANCE_PROFILE_NAME
다음 단계를 위해
INSTANCE_PROFILE_NAME
값을 복사합니다.제어 영역에 EBS 볼륨 액세스 권한을 부여하려면 EBS 볼륨을 암호화하는 데 사용되는 AWS KMS 키에
gke-xxxxxx-controlplane
AWS IAM 프로필을 키 사용자로 추가합니다.
다음 단계
- Anthos clusters on AWS와 함께 추가 스토리지 드라이버를 사용합니다.