가이드 작성 배경
배경
- 쿠버네티스 실습 환경 구성하기가 쉽지 않다. 처음 배우기 시작할때 설치 부터 어려워서 미리 포기해버리는 경우가 있다.
- k3s 나 kind 등 1대의 PC 에서 컨테이너를 노드 역할로 배포하는 형태로 구성 시 오히려 구성 환경 이해가 복잡해서 초기 학습에 방해 요소가 될 수 있다.
- 맥 M1 계열을 사용 시 VirtualBox 동작을 할 수 없어서 실습 환경 구성이 어렵다.
- AWS EKS 나 Kops 를 구성할 수는 있으나, 환경 배포 시간 소요가 꽤 있고 더불어 비용도 조금 더 발생한다.
- 실습을 위한 개인 PC가 램이 부족해서 다수의 워커 노드 구성이 어렵다.
목표
: 원클릭 5분 이내로 배포(삭제) 완료
- 실습 환경의 개인 PC의 성능과 상관없이 실습 환경 구성을 하자 → AWS EC2 사용하기로 결정
- 원클릭으로 쿠버네티스 실습 환경을 자동 배포하자 → 다양한 배포 방식이 있지만, 단순해서 이해하기 쉬운 CloudFormation 으로 배포 방식 결정
- EC2 Userdata 에 Shell Script 로 쿠버네티스를 자동 설치
- 실습 환경 삭제도 CloudFormation 원클릭 삭제로 가능
- 다수의 워커 노드를 구성하자 → 마스터 노드 1대와 워커 노드 3대로 구성하기로 결정
사전 준비
: AWS 계정, SSH 키 페어, (권장) IAM 계정 생성, MFA 설정
구성 환경
전체 구성도
-
CloudFormation 스택 실행 시 파라미터를 기입하면, 해당 정보가 반영되어 배포됩니다.
-
CloudFormation 에 EC2의 UserData 부분(Script 실행)으로 바닐라 vanilla 쿠버네티스 설치를 진행합니다 (AWS EKS 등 관리형 미사용)
- 쿠버네티스 버전 v1.23.6 , Flannel CNI(VXLAN 모드, ENI S/D Uncheck) , CRI(containerd), StorageClass(local-path/hostpath, nfs-subpath/EFS)
-
사용자 네트워크 대역은 퍼블릭 서브넷 2개와 프라이빗 서브넷 2개로 구성됩니다
-
마스터 노드 1대, 워커 노드는 기본은 3대로 구성됩니다
EC2 Spec
: Ubuntu 22.04 , t3.medium (2CPU 4MEM, 0.052 USD x 4대 = 0.208USD = 1시간 당 266원) - 가격, EBS gp3 50GiB
Hostname |
IPv4 |
Type (기본값) |
EBS size (기본값) |
k8s-m |
192.168.10.10 |
t3.medium |
50 GiB |
k8s-w1 |
192.168.10.101 |
t3.medium |
50 GiB |
k8s-w2 |
192.168.10.102 |
t3.medium |
50 GiB |
k8s-w3 |
192.168.20.103 |
t3.medium |
50 GiB |
배포 가이드
영상 참고
https://youtu.be/Oel5mxgafSo
CloudFormation 으로 자동 배포 - 서울리전 → 클릭 후 아래 파라미터 입력 후 스택 생성! 스택 이름은 기본 myk8s(변경가능)가 입력됩니다!
- 파라미터 입력은 크게 4가지 종류로 구분됩니다
파라미터
: 아래 빨간색 부분은 설정해주는어야 할 것, 그외 부분은 기본값 사용을 권장.
- <<<<< Kubernetes >>>>>
- KubernetesVersion : 쿠버네티스 설치 버전 (기본 v1.23.6) ⇒ 변경 가능
- <<<<< EC2 Node >>>>>
- KeyName: EC2 접속에 사용하는 SSH 키페어 지정 ← 미리 SSH 키 생성 해두자!
- SgIngressCidr: EC2 인스턴스를 접속할 수 있는 IP 주소 입력 (집 공인IP/32 입력) ← 보안그룹 : 모든 트래픽 허용이니 주의!
- MasterNodeInstanceType & WorkerNodeInstanceType: 마스터(기본 t3.medium) & 워커 노드 EC2 인스턴스의 타입 (기본 t3.medium) ⇒ 변경 가능
- Ec2EbsVolumeSize : EC2 인스턴스의 EBS (gp3) 볼륨 크기 (GiB) ⇒ 변경 가능
- Ec2EbsVolumeIops : EC2 인스턴스의 EBS (gp3) IOPS 지정 ⇒ 변경 가능
- LatestAmiId : Ubuntu 22.04 LTS 최신 버전 AMI ID 가 자동 지정됨
- <<<<< Region AZ >>>>> : 리전과 가용영역을 지정
- <<<<< VPC Subnet >>>>> : VPC, 서브넷 정보 지정
- Tip.
CloudFormation 스택 배포 한줄 실행!
← 실행하는 PC에 aws cli 설치되어 있고, aws configure 자격증명 설정 상태.