EKS를 이용하여 AWS에 쿠버네티스 클러스터를 구축하고 예제 애플리케이션을 배포하여 동작을 확인한다.
2.2.1 기본 리소스 구축
2.2.1.1 사용할 도구 설치
로컬 환경에 다음의 도구를 설치해야 한다.
- AWS CLI
- eksctl
- kubectl
- git
설치를 완료하고 다음 그림과 같이 도구의 버전을 확인한다.
2.2.1.2 소스 코드 다운로드
예제에 필요한 모든 자원은 깃을 통해 다운로드 받을 수 있다.
git clone <https://github.com/dybooksIT/k8s-aws-book.git>
2.2.1.3 기본 리소스 생성 방법
CloudFormation을 이용해 VPC 등의 기본 리소스를 생성한다.
우선 AWS 관리 콘솔 검색에서 CloudFormation을 검색한다.
그리고, 아래 사진 처럼 리전을 서울로 설정하고 스택 생성을 누른다.
아래 사진처럼 준비된 템플릿 → 템플릿 파일 업로드 → 파일 선택을 누르고, 로컬 환경에 있는 01_base_resources_cfn.yaml을 올린다.
💡 01_base_resources_cfn.yaml 은 위에서 깃을 통해 다운로드 받은 폴더 하위의 eks-env 내부에 있다.
다음을 누르고, 스택 이름을 ‘eks-work-base’로 지정한다. 다음을 누른다.
스택 옵션 구성이 보인다. 아무것도 건들지 말자. 다음을 누른다.
검토 부분이 보인다. 이 역시 아무것도 건들지 말자. 다음을 누른다.
스택 생성이 시작되면 아래와 같이 상태가 CREATE_IN_PROGRESS인 생태로 보인다.
잠시후에 새로고침 버튼을 누르면 작업들이 완료되는 모습을 볼 수 있다.
상단 검색 바를 통해 VPC를 검색한다.
아래 사진에서 리전별 리소스의 VPC를 클릭한다.
Name에 eks-work-VPC가 Available이라면 성공이다.
2.2.2 EKS 클러스터 구축
eksctl 명령어로 EKS 클러스터를 구축하는 방법이다.
2.2.2.1 기본 리소스 정보 수집
EKS 클러스터를 구축하기 위해서는 앞에서 생성한 기본 리소스 정보를 확인해야 한다.
이 정보는 CloudFormation 스택 상세 정보에서 확인할 수 있다.
CloudFormation을 검색한다.
이전에 생성한 eks-work-base을 클릭한다.
출력 탭을 통해 WorkerSubnets의 키와 그에 해당 하는 값(빨간색 부분)이 있다.
해당 정보를 복사해서 메모장에 저장해둔다.
2.2.2.2 eksctl 실행
아래 명령어를 통해 EKS 클러스터를 구축한다.
<WorkerSubnets 값>에서 꺽쇠를 없애고 위에서 메모장에 저장한 값을 넣는다.
eksctl create cluster \\ # eksctl 실행
--vpc-public-subnets <WorkerSubnets 값> \\ # 워커 노드용 서브넷
--name eks-work-cluster \\ # 클러스터 이름
--region ap-northeast-2 \\ # 리전(서울)
--version 1.22 \\ # eks 클러스터 버전
--nodegroup-name eks-work-nodegroup \\ # 노드 그룹 이름
--node-type t2.small \\ # 워커 노드 인스턴스 타입
--nodes 2 \\ # 워커 노드 수
--nodes-min 2 \\ # 워커 노드의 최소 노드 수
--nodes-max 5 # 워커 노드의 최대 노드 수
# 한 줄
eksctl create cluster --vpc-public-subnets <WorkerSubnets 값> --name eks-work-cluster --region ap-northeast-2 --version 1.22 --nodegroup-name eks-work-nodegroup --node-type t2.small --nodes 2 --nodes-min 2 --nodes-max 5
💡 만약 Error: checking AWS STS access – cannot get role ARN for current session가 뜬다면 https://ksb-dev.tistory.com/255를 참고한다.
아래는 구축이 완료되면 로컬에서 보이는 모습이다.
💡 구축까지 대략 20분정도가 소요된다.
2.2.2.3 CloudFormation에서 진행 상황 확인
CloudFormation을 검색한다.
아래 그림과 같이 두 개의 스택이 생성 된 것을 볼수 있다.
💡 eksctl 명령어로 EK 클러스터 및 워커 노드를 구축한 것을 알 수 있다.
2.2.2.4 kubeconfig 설정
eksctl은 EKS 클러스터 구축 중에 kubeconfig 파일을 자동으로 업데이트한다.
💡 kubeconfig 파일의 저장 위치는 윈도우의 경우 C:\User\사용자명\.kune\config 이고, macOS의 경우 /home/사용자명/.kune/config 다.
Kubeconfig 파일은 쿠버네티스 클라이언트인 kubectl이 이용할 설정 파일로 접속 대상 쿠버네티스 클러스터 접속 정보(컨트롤 플레인 URL, 인증 정보, 이용할 쿠버네티스의 네임스페이스)등을 저장하고 있다.
EKS 클러스터에 접속하기 위한 인증 정보는 AWS CLI로 확인이 가능하며, eksctl을 사용하면 AWS CLI를 호출하여 인증하기 위한 설정을 kubectl 파일에 포함할 수 있다.
설정을 컨텍스트라 하는데, 로컬에서 아래 명령어로 컨텍스트를 볼 수 있다.
kubectl config get-contexts
또, 아래 명령어로 kubectl에서 EKS 클러스터에 접속 가능 여부를 확인할 수 있다.
kubectl get nodes
2.2.3 EKS 클러스터 동작 확인
EKS 클러스터가 구축완료 되었기 때문에, 정상적으로 동작하는지 확인한다.
로컬 터미널에서 이전에 git에서 다운 받은 예제 소스 코드의 eks-env 디렉토리로 이동한다.
그 다음 아래 명령어를 실행시킨다.
kubectl apply -f .\\02_nginx_k8s.yaml
💡 nginx 서버 파드를 만드는 것이다.
다음 명령어로 nginx를 실행한다.
kubectl port-forward nginx-pod 8080:80
http://localhost:8080 에 접속하면 방금 실행한 nginx-pod의 80번 포트로 포워딩하여 접속할 수 있게 한다.
이상으로 구축한 EKS 클러스터가 정상적으로 동작하고 있는 것을 확인했다.
Ctrl + C 를 통해 포워딩을 종료하고, 아래 명령어로 삭제한다.
kubectl delete pod nginx-pod
'쿠버네티스' 카테고리의 다른 글
3. 쿠버네티스에서 애플리케이션을 동작시키는 구조 - 2 (0) | 2023.03.17 |
---|---|
3. 쿠버네티스에서 애플리케이션을 동작시키는 구조 - 1 (0) | 2023.03.17 |
2. 쿠버네티스 환경 구축과 예제 애플리케이션 배포 - 3 (0) | 2023.03.10 |
2. 쿠버네티스 환경 구축과 예제 애플리케이션 배포 - 1 (0) | 2023.02.09 |
[쿠버네티스] 1. 컨테이너 기술 보급과 쿠버네티스 (0) | 2023.02.02 |