-
EFS를 pv, pvc로 k8s 환경에서 사용하기 ( NFS )Computer Science/k8s 2023. 8. 15. 02:12
1. EFS 생성 및 구성
1.1 DNS 호스트 이름 활성화
1.2 NFS 사용가능 여부 확인
1.3 EFS 생성
2. k8s 환경에 pv, pvc 구성
1. EFS 생성 및 구성
1.1 DNS 호스트 이름 활성화
우선 EFS 를 생성하기 전에 내가 사용할 vpc에서 DNS 호스트 이름이 활성화 되었는지 확인한다.
만약 활성화되어 있지 않다면 해당 "VPC 설정 편집" 을 통해서 활성화 해준다.
1.2 NFS 사용가능 여부 확인
https://docs.aws.amazon.com/ko_kr/efs/latest/ug/mounting-fs-old.html
내 worker node 와 control plane노드에 NFS 서비스가 동작하는지 확인한다.
아래의 목록은 NFS를 기본적으로 지원한다.
- Amazon Linux 2
- Amazon Linux 2017.09 또는 최신 버전
- Red Hat Enterprise Linux ( CentOS 같은 계열 시스템 포함 ) 버전 7 이상
- Ubuntu 16.04 LTS 이상
- SLES 12 Sp2 이상
혹시 모른다면 아래의 명령어로 확인을 해보자.
rpm -qa | grep nfs
없다면 설치를 진행한다.
Amazon Linux AMI 또는 Read Hat Linux AMI를 사용중인 경우
sudo yum -y install nfs-utils
Ubuntu Amazon EC2 AMI를 사용하는 경우
sudo apt-get -y install nfs-common
그런뒤 내 worker node와 control plane노드에서 접근이 가능하도록 NFS 포트 ( 2049 ) 를 TCP 프로토콜로 열어준다.
1.3 EFS 생성
이제 EFS를 내가 설정했던 VPC 영역에 생성한다.
생성후에는 pv,pvc 설정에 DNS 이름 ( fs-****.efs.지역.amazonaws.com ) 이 사용되니 알고있자.
2. k8s 환경에 pv, pvc 구성
https://aws.amazon.com/ko/blogs/tech/persistent-storage-for-kubernetes/
pv 구성 파일이다.
#pv.yaml --- apiVersion: v1 kind: PersistentVolume metadata: name: efs-pv spec: capacity: storage: 5Gi volumeMode: Filesystem accessModes: - ReadWriteOnce storageClassName: "" persistentVolumeReclaimPolicy: Retain mountOptions: - hard - nfsvers=4.1 nfs: path: / #efs DNS 이름 server: fs-*******.efs.ap-*****.amazonaws.com
pvc 구성 파일이다.
#pvc.yaml --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: efs-claim namespace: <pvc 사용할 namespace> spec: accessModes: - ReadWriteOnce storageClassName: "" resources: requests: storage: 5Gi
pod에서 사용할 때 예시.
apiVersion: apps/v1 kind: Deployment metadata: name: {{ .Release.Name }} namespace: {{ .Values.Namespace }} spec: replicas: 1 selector: matchLabels: db: {{ .Release.Name }} template: metadata: labels: db: {{ .Release.Name }} spec: containers: - name: image: {{ .Values.image.repository }}:{{ .Values.image.tag }} imagePullPolicy: {{ .Values.image.pullPolicy }} volumeMounts: - name: mongodb-data mountPath: "/data/db" volumes: - name: mongodb-data persistentVolumeClaim: claimName: efs-claim restartPolicy: Always
'Computer Science > k8s' 카테고리의 다른 글
[k8s] TailScale subnet router 적용하기 (0) 2023.08.24 GitHub Action, ECR 과 ArgoCD를 이용하여 CI/CD 구축하기 ( k8s ) (0) 2023.08.15 kubeadm을 통한 kubernetes(1.27) EC2에 설치하기 (0) 2023.07.31 k8s 설치 방식 종류 (0) 2023.07.28 k8s Secret 적용 및 Containers 에서 사용하기 (0) 2023.06.30