728x90
EKS란
- Elastic Kubernetes Service는 AWS 자체 Kubernetes 서비스로 컨트롤 플레인(Master Node)를 설치, 운영 및 유지 관리할 필요 없이 Kubernetes를 사용할 수 있는 관리형 서비스
- 여러 AWS 가용 영역에 걸쳐 Kubernetes 컨트롤 플레인을 실행하고 크기를 조정하여 높은 가용성을 보장
- 오픈 소스 Kubernetes 소프트웨어의 최신 버전을 실행하므로 Kubernetes 커뮤니티에서 모든 기존 플러그 인과 도구를 사용할 수 있음
- 지원 버전 : 보통 5~6개의 마이너 버전 지원(현재 1.29~1.32)
- 평균 3개월마다 새 버전 제공, 처음 14개월 지원, 추가 12개월 연장 지원(비용 추가)
EKS 아키텍처 (컨트롤 플레인 / 데이터 플레인)
- EKS 컨트롤 플레인 : AWS Managed VPC - 3개 AZ, API NLB, ETCD ELB
- 여러 가용 영역에 컨트롤 플레인 컴포넌트 구성 → 사실 EKS는 AWS에서 제공하는 Kubernetes 서비스 상품으로편리하게 Kubernetes 사용 및 관리 할 수 있다고만 생각을 했는데, 여러 가용영역에 구성이 되어 Auto Scaling 및 장애 발생에 대하여 분산 구성되어 있다는 부분을 새롭게 알게 되었다.
- EKS 데이터 플레인 : Customer VPC - EKS owned ENI, 관리형 노드 그룹(Managed node groups)
- 컨트롤 플레인과 마찬가디로 여러 가용 영역에 데이터 플레인이 구성되어 있으며, 컨트롤 플레인과의 통신은 자체 ENI(EKS owend ENI)를 통하여 통신 → ENI 확인 시 소유주와 인스턴스 소유자가 다름
EKS 배포(실습)
- 웹 관리 콘솔, eksctl, IaC(CDK, CloudFormation, Terraform 등)
- 해당 스터디에서는 eksctl을 통하여 EKS 배포
기본 인프라 배포
- AWS CloudFormation을 통해 작업용 ec2 및 VPC, PublicSubnet1, 2, Private Subnet1, 2 생성
- IAM User 자격증명 설정 → aws cli를 사용하여 생성된 VPC 정보 및 노드그룹이 위치할 Subnet 정보 확인
EKS 배포
- EKS 배포는 AWS Console, Terraform, eksctl등 다양하게 배포할 수 있음
- eksctl은 EKS 클러스터 구축 및 관리를 하기 위한 오픈소스 명령줄 도구 → eksctl를 통해 eks 클러스터 배포 시 내부적으로는 CloudFormation을 사용하여 배포
eksctl create cluster --name $CLUSTER_NAME --region=$AWS_DEFAULT_REGION --nodegroup-name=$CLUSTER_NAME-nodegroup --node-type=t3.medium \
--node-volume-size=30 --vpc-public-subnets "$PubSubnet1,$PubSubnet2" --version 1.31 --ssh-access --external-dns-access --verbose 4
■ kubectl 명령어를 통해 Node 정보 확인
(yjsong@myeks:N/A) [root@myeks-host ~]# kubectl get nodes -o wide -v=6
I0208 18:27:43.248694 6094 loader.go:395] Config loaded from file: /root/.kube/config
I0208 18:27:44.174863 6094 round_trippers.go:553] GET https://76249C2A286D69A27FA950FB06ADFB24.yl4.ap-northeast-2.eks.amazonaws.com/api?timeout=32s 200 OK in 925 milliseconds
I0208 18:27:44.178647 6094 round_trippers.go:553] GET https://76249C2A286D69A27FA950FB06ADFB24.yl4.ap-northeast-2.eks.amazonaws.com/apis?timeout=32s 200 OK in 2 milliseconds
I0208 18:27:44.194714 6094 round_trippers.go:553] GET https://76249C2A286D69A27FA950FB06ADFB24.yl4.ap-northeast-2.eks.amazonaws.com/api/v1/nodes?limit=500 200 OK in 8 milliseconds
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
ip-192-168-1-192.ap-northeast-2.compute.internal Ready <none> 12m v1.31.4-eks-aeac579 192.168.1.192 54.180.231.184 Amazon Linux 2 5.10.233-223.887.amzn2.x86_64 containerd://1.7.25
ip-192-168-2-16.ap-northeast-2.compute.internal Ready <none> 12m v1.31.4-eks-aeac579 192.168.2.16 13.125.242.255 Amazon Linux 2 5.10.233-223.887.amzn2.x86_64 containerd://1.7.25
■ dig 명령어를 통하여 API주소 확인 시 Public IP를 확인 할 수 있음
(yjsong@myeks:N/A) [root@myeks-host ~]# dig +short $APIDNS
3.35.248.97
43.201.117.223
728x90
'2025_AEWS Study' 카테고리의 다른 글
2주차 - EKS Networking(4)(Service & AWS LoadBalancer Controller) (0) | 2025.02.15 |
---|---|
2주차 - EKS Networking(3)(노드 내 파드 생성 갯수 제한) (0) | 2025.02.15 |
2주차 - EKS Networking(2)(노드 간 파드 통신/파드 외부 통신) (1) | 2025.02.15 |
2주차 - EKS Networking(1)(AWS VPC CNI) (0) | 2025.02.15 |
1주차 - EKS Endpoint Access (0) | 2025.02.08 |