AEWS 1주차 - EKS Control Plane & Endpoint Access
본 글은 가시다님이 진행하시는 AEWS(AWS EKS Workshop Study)를 참여하여 정리한 글입니다. 모르는 부분이 많아서 틀린 내용이 있다면 말씀 부탁드리겠습니다! |
EKS란?
Amazon Elastic Kubernetes Service(Amazon EKS)는 Amazon Web Services(AWS) 및 자체 데이터 센터에서 Kubernetes 클러스터의 가용성과 확장성을 운영하고 유지할 필요가 없는 관리형 Kubernetes 서비스라고 설명합니다.
일반 쿠버네티스를 구축하고 운영하기 위해서는 많은 운영 헤드가 필요합니다. EKS는 완전관리형 서비스로서 컨트롤 플레인을 AWS에서 관리해 주며 운영자는 데이터 플레인만 집중할 수 있습니다. (혹은 데이터 플레인의 컴퓨팅조차 신경쓰지 않아도 됩니다.)
또한 AWS 서비스들과 호환이 잘 되어서 EFS, ELB 등 손 쉽게 연결이 가능합니다.
궁금?
AWS 컨트롤 플레인은 어떤 인프라 구조를 지니며 어떻게 작동할까?

사진과 같이 API 서버 영역과 ETCD 영역이 존재합니다.
우선 각 영역은 Auto Scaling Group으로 구성되며, 여러 가용 영역을 걸치게 됩니다. 이러한 구성으로 고가용성이 확보되며 한 가용영역이 망가져도 앞단에 ELB가 정상적인 서버로 트래픽을 보내어서 안정적인 서비스가 유지됩니다.
혹여 리전 down의 경우에는 어떠한 DR 대책을 수립해야하는지 궁금하긴합니다!
( ex) Multi-Region, 감지 후 클러스터 생성 및 ....Route53....)
사용자가 API 서버와 통신하기 위해서는 사용자 -> 망 -> Endpoint -> NLB -> API 서버 순으로 트래픽이 흘러갑니다.
데이터 플레인의 경우 3개의 가용영역이 고정이 아니며, 사용자에게 적합한 방식으로 워커 노드를 구성 가능합니다!
클러스터 엔드포인트 엑세스 방식
사용자는 자신의 로컬 혹은 Bastion에서 노드와 어떻게 통신할까요?
저는 이전에 Bastion이 자격 증명도 있고 EKS 클러스터와 같은 VPC내에 있는데도 API 서버와 통신이 안된 경험이 있습니다.
이유는..
Public & Private임에도 Bastion이 무조건 외부로 나가서 IGW을 통해서 통신하는줄 알았습니다.. ( EKS 클러스터 보안그룹을 꼭 확인해주세요. ) |
클러스터 엔드포인트 엑세스 방식에는 3가지 방식이 있습니다.
1) Public
2) Public & Private
3) Private
사전 지식
EKS owned ENI란?
Cross account ENI로써 컨트롤 플레인과 데이터 플레인이 다른 VPC에 있음에도 통신이 가능하게끔
도와주는 ENI입니다.
AWS ENI에서 확인이 가능합니다.
1) Public
* 사용자가 외부에서 클러스터 엔드포인트와 통신이 가능합니다.

구분
* 사용자 -> API서버 : Public 통신
* API서버 -> kubelet : Private 통신
* kubelet, kube-proxy -> API서버 : Public 통신
특징
- 사용자뿐만아니라 kubelet와 kube-proxy 또한 API 서버와 통신하기 위해서는 바깥으로 나가서 Public 통신을 함
2) Public & Private
* 사용자가 제한된 외부 IP대역 or 내부에서 클러스터 엔드포인트와 통신이 가능합니다.

구분
* 사용자 -> API서버 : Public or Private 통신 (사용자의 네트워크 대역에 따라 달라짐)
* API서버 -> kubelet : Private 통신
* kubelet, kube-proxy -> API서버 : Private 통신
특징
- Public 방식과 다르게 Public & Private에서는 같은 네트워크안에 있으면 Private Hosted Zone을 보는게 우선 순위!! 그러므로 kubelet, kube-proxy는 API 서버와 Private 통신을 함.
- Bastion이 같은 네트워크안에 있을 경우 그림과 다르게 Private 통신을 따르며 외부에 있을 경우 Public 통신을 따름
3) Private
* 사용자가 내부에서 클러스터 엔드포인트와 통신이 가능합니다.

구분
* 사용자 -> API서버 : Private 통신
* API서버 -> kubelet : Private 통신
* kubelet, kube-proxy -> API서버 : Private 통신
특징
- kubelet, kube-proxy를 포함한 모두 Private 통신을 하며 보안에 매우 유리합니다.
Private Hosted Zone
Private Hosted Zone은 AWS Route53에서 제공하는 프라이빗 호스팅 지역입니다.
그러면 클러스터를 만드면 무조건 활성화가 될까요?
=> 아닙니다. Private이 포함되어 있을때만 생성이 됩니다. 그리고 AWS에서 자체 관리를 하기 떄문에 콘솔에서 보거나 수정을 할 수 없답니다.
- EKS Endpoint Access 설정에 따라 달라짐
EKS API Server Endpoint Access | Private Hosted Zone 생성 여부 |
Public only (퍼블릭 전용) | ❌ 생성 안 됨 |
Private only (프라이빗 전용) | ✅ 생성됨 |
Public & Private (둘 다 활성) | ✅ 생성됨 |
즉, EKS 클러스터에서 "Private" API 엔드포인트를 활성화하면 AWS가 자동으로 Private Hosted Zone을 만들고 관리합니다.
궁금?
여기서 생성된 Private Hosted Zone은 해당 EKS 클러스터 전용인가요?
네 맞습니다. 다른 VPC나 클러스터에 공유되지 않는 별도의 Private Hosted Zone입니다.
ChatGPT 답변
질문 : Private Hosted Zone은 해당 EKS 클러스터 전용인가?
답변 :
네, 이 Private Hosted Zone은 해당 EKS 클러스터 전용입니다.
즉, 각각의 EKS 클러스터마다 별도의 Private Hosted Zone이 생성되며, 다른 클러스터나 VPC에서 공유되지 않습니다.
- 클러스터별 고유 도메인
Private Hosted Zone에는 각 EKS 클러스터의 API 서버 엔드포인트가 등록되며, 도메인 형식은 다음과 같아요:이 도메인은 해당 클러스터의 API 서버에만 연결되며, 다른 클러스터에서 재사용할 수 없습니다. -
pgsql복사편집<your-cluster-name>.region.eks.amazonaws.com
- 해당 클러스터가 속한 VPC에서만 사용 가능
Private Hosted Zone은 특정 VPC에만 연결되며, 다른 VPC에서는 사용할 수 없습니다.
(단, VPC Peering 또는 AWS Transit Gateway를 설정하면 다른 VPC에서도 사용할 수 있음) - Route 53 콘솔에서 직접 볼 수 없음
- AWS가 내부적으로 관리하는 Hosted Zone이라 사용자 Route 53 콘솔에서는 확인할 수 없음.
- VPC 내에서만 nslookup, dig 같은 명령어로 확인 가능.
1주차 생각
여태까지는 그냥 컨트롤 플레인은 AWS에서 관리해줘서 편하구나라고만 생각했지 AWS에서 컨트롤 플레인을 어떻게 관리하는지 그리고 어떻게 인프라가 구성되고 LB가 있는지 또 엔드포인트 엑세스 방식에 따른 트래픽 플로우에 대해서 깊게 생각해보지 않았었습니다.
취업준비생일떄는 항상 왜 되었는지 why에 대해서 끊임없이 알아보자 다짐했었는데 그새 조금 지났다고 나태해졌었네요,, 이번 스터디 1주차부터 많은걸 느끼고 제가 어떻게 공부해야할지 알게된 것 같아 너무 감사합니다.
출처
https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/what-is-eks.html
Amazon EKS란 무엇입니까? - Amazon EKS
이 페이지에 작업이 필요하다는 점을 알려 주셔서 감사합니다. 실망시켜 드려 죄송합니다. 잠깐 시간을 내어 설명서를 향상시킬 수 있는 방법에 대해 말씀해 주십시오.
docs.aws.amazon.com
https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/eks-architecture.html
Amazon EKS 아키텍처 - Amazon EKS
이 페이지에 작업이 필요하다는 점을 알려 주셔서 감사합니다. 실망시켜 드려 죄송합니다. 잠깐 시간을 내어 설명서를 향상시킬 수 있는 방법에 대해 말씀해 주십시오.
docs.aws.amazon.com
https://www.ongja.space/13d4c62d-36c3-80da-8e8d-ee082f0b2c90
Amazon EKS Cluster Endpoint Access
Amazon EKS Cluster의 API 서버 접근 방법
www.ongja.space
https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/cluster-endpoint.html
클러스터 API 서버 엔드포인트에 대한 네트워크 액세스 제어 - Amazon EKS
다음 명령은 API 서버 엔드포인트에 대한 단일 IP 주소에서 프라이빗 액세스 및 퍼블릭 액세스를 활성화합니다. 203.0.113.5/32를 단일 CIDR 블록 또는 네트워크 액세스를 제한할 쉼표로 구분된 CIDR 블
docs.aws.amazon.com