구성 환경
사전 준비
: AWS 계정, SSH 키 페어, IAM 계정 생성 후 키, S3 버킷
전체 구성도
https://medium.com/@api.test9989
- CloudFormation 스택 실행 시 파라미터를 기입하면, 해당 정보가 반영되어 배포됩니다.
- VPC는 kOps 배포를 위한 EC2가 위치할 MyVPC 1개와 실제 kOps 가 배포되어 구동되는 VPC 1개로 총 2개가 생성됩니다.
- CloudFormation 에 EC2의 UserData 부분(Script 실행)으로 AWS kOps 설치를 진행합니다
- 마스터 노드 1대, 워커 노드는 기본은 2대로 구성됩니다
- Add-on 같이 설치 됨 : cert-manager, metrics-server, node-local-dns, aws-load-balancer ← 단, ec2 iam role 맵핑 필요
- 한 노드에 최대 100개 파드 배포 가능하게 설정함 ← 단, limitranges 확인 필요
배포
CloudFormation 으로 자동 배포 - 서울리전 → 클릭 후 아래 파라미터 입력 후 스택 생성! 스택 이름은 기본 myk8s(변경가능)가 입력됩니다!
- 파라미터 입력은 크게 3가지 종류로 구분됩니다
- kops-oneclick-f1.yaml 내용:
curl -O <https://s3.ap-northeast-2.amazonaws.com/cloudformation.cloudneta.net/K8S/**kops-oneclick-f1.yaml**
>
파라미터
: 아래 빨간색 부분은 설정해주는어야 할 것, 그외 부분은 기본값 사용을 권장
- <<<<< Deploy EC2 : kops-ec2 >>>>>
- KeyName : kops-ec2에 SSH 접속을 위한 SSH 키페어 선택 ← 미리 SSH 키 생성 해두자!
- MyIamUserAccessKeyID : 관리자 수준의 권한을 가진 IAM User의 액세스 키ID 입력
- MyIamUserSecretAccessKey : 관리자 수준의 권한을 가진 IAM User의 시크릿 키ID 입력 ← 노출되지 않게 보안 주의
- SgIngressSshCidr : kops-ec2에 SSH 접속 가능한 IP 입력 (집 공인IP/32 입력), 보안그룹 인바운드 규칙에 반영됨
- LatestAmiId : kops-ec2에 사용할 AMI는 아마존리눅스2 최신 버전 사용, 기본값 그대로 사용
- <<<<< AWS kOps Config >>>>>
- KubernetesVersion : 쿠버네티스 설치 버전 (기본 v1.24.12) ⇒ 변경 가능
- ClusterBaseName : kOps 클러스터 이름이며, 사용하게될 도메인 이름이다. ‘퍼블릭 도메인’ or ‘프라이빗 도메인’ or ‘Gossip DNS’ 가능
- S3StateStore : kOps 클러스터의 설정/상태 정보가 저장될 S3 버킷의 이름을 지정 ← 미리 S3 버킷을 생성 해두자!
- MasterNodeInstanceType & WorkerNodeInstanceType: 마스터(기본 t3.medium) & 워커 노드 EC2 인스턴스의 타입 (기본 t3.medium) ⇒ 변경 가능
- WorkerNodeCount : 워커노드의 갯수를 입력 ⇒ 변경 가능
- VpcBlock : kOps 배포되고 동작할 VPC 네트워크 대역, 기본값 그대로 사용
- <<<<< Region AZ >>>>> : 리전과 가용영역을 지정, 기본값 그대로 사용
- Tip.
CloudFormation 스택 배포 한줄 실행!
← 실행하는 PC에 aws cli 설치되어 있고, aws configure 자격증명 설정 상태.
EC2 생성 수량 부족 실패 발생 시
: 해당 사용자 계정의 해당 리전에 EC2 최대 갯수 제한 일 경우, Service Quotas (EC2) 증설 요청으로 해결 가능 - 링크 EC2 요청
- Limit Type(EC2 Instances) ⇒ 서울 리전, All Standard (A, C, D, H, I, M, R, T, Z) Instances, New limit value(40 정도)
배포 확인
- kops-ec 에 SSH 접속 (SSH 키 파일 사용) : 쿠버네티스 정상 설치 확인 ← 스택 생성 시작 후 12분 후 접속 할 것 ⇒ ec2 iam role 맵핑 , limitranges 제거
- (옵션) 노드에 배포된 컨테이너 정보 확인
Containerd clients 3종
: ctr, nerdctl, crictl - 링크
(실습 완료 후) 자원 삭제