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 클러스터를 삭제한다.
'따배클' 카테고리의 다른 글
[따배클] AWS (Amazon Web Service) EKS를 이용하여 Kubernetes를 구축해보자! - 1, 2 (0) | 2022.11.14 |
---|