본문 바로가기
따배클

[따배클] 2. EKS에서 EFS를 공유 스토리지로 사용하는 웹서버 띄우기

by Engineer-Lee 2022. 11. 14.
반응형

 EFS란 AWS에서 쓰이는 NFS이다.

 

1.

 eksctl 명령을 실행해서 Amazon EKS 클러스터를 생성
  $ eksctl create cluster \
    --name k8s-demo \
    --region ap-northeast-2 \
    --with-oidc \
    --ssh-access \
    --ssh-public-key public-ec2-keypair \
    --nodes 3 \
    --node-type t3.medium \
    --node-volume-size=20 \
    --managed

 

 

2.

EFS 생성

보안 그룹에는 ClusterShareNodeSecurityGroup과 remoteAccess를 추가한다.

 

 

2. 

노드와 연결 테스트

노드 1에 먼저 접속한다.

 

sudo -i로 루트 사용자로 변경한 뒤

mkdir /web-data 로 디렉토리를 만들고

mount -t nfs4 [efs ID] .efs.ap-northeast-2.amazonaws.com:/ /web-data 로 efs를 마운트한다.

mount | tail -l 로 마운트가 잘 됐는지 확인한다.

 

 

3.

EFS Dynamic Provisioner 배포

 

bastion host에 접속해서 아래 링크의 yaml 파일을 작성한다.

https://github.com/237summit/Kubernetes-on-AWS/tree/main/03_volume/aws-efs-provisioner

 

그리고 configmap.yaml파일의 name, file.system.id 등을 수정한다.

 

이와 마찬가지로 storage-class.yaml 파일과 efs-provisioner-deploy.yaml 파일도 수정한다.

 

kubectl apply -f storage-class.yaml -f rabc.yaml -f efs-provisioner-deploy.yaml -f configmap.yaml 명령어로 4개의 파일을 실행시킨다.

 

kubectl get strageclasses.storage.k8s.io kubectl get pods 로 동작 확인을 할 수 있다.

프로비저너가 실행중

 

 

4.

PVC 생성

 

kubectl apply -f web-pvc.yaml 로 pvc를 생성하고 pvc의 디렉토리로 들어간다.

 

그리고 간단한 html 파일을 만들어서 웹페이지가 동작하도록 한다.

 

 

5.

EFS 사용하는 웹서비스 배포

 

kubectl apply -f web-deployment.yaml로 웹서비스 배포를 위한 pod를 동작시킨다.

이 컨테이너들은 efs를 통해 동일한 볼륨을 마운트하고 있다.

 

kubectl apply -f web-svc.yaml로 외부에서 동작 중인 웹서비스에 접근할 수 있도록 한다.

 

 

6.

전체 삭제하기

 

1) kubectl delete -f . 를 통해 service, persistent volume, deploy, provisioner 까지 삭제한다.

또한 kubectl delete pv pvc-[pvc 이름] 를 통해 할당된 pv도 삭제한다.

 

2) 노드에 접속해서 efs 마운트를 해제한다.

 

3) aws 콘솔에 들어가서 efs 연결을 해제 후 삭제한다.

 

4) ./stop.sh 를 통해 eks 클러스터를 삭제한다. 

반응형