반응형

 

 

Amazon EKS 가 마스터 노드를 Amazon EKS Node groups 가 워커 노드를 관리해준다.

 

EKS 인증

 

 

1 . kubectl 명령을 내리면 Kubernetes Master Node 서버에 API 호출

Kubernetes API 서버 인증 토큰과 IAM 인증 토큰(Kubeconfig 파일) 토큰을 함께 보냄.

2 . 요청한 사용자가 IAM User 맞는지만 확인

별도로 Policy 정책은 확인하지 않음. aws-auth 라는 configmap 생성함. (Kubectl edit configmap aws-auth -n kube-system 명령어로 확인 가능)

 

 

Groups 에는 쿠버네티스 RBAC 권한 정보가 포함됨.

 

EKS 역할

 

영역으로 분류

특정 네임스페이스 리소스 사용 권한 설정과 클러스터 전역의 리소스 사용 권한 설정으로 나뉠 있다.

 

책임으로 분류

IAM Role 유사하게 리소스에 대한 권한이 명시적으로 기재되어 있는 Role 해당 Role 권한을 할당받을 사용자나 그룹을 설정하는 Role Binding 으로 이루어져 있다.

 

사용자 추가하고 싶을

1 . IAM Role 생성

정책들은 확인하지 않고 사용자인지만 확인하기 때문에 역할만 생성해도 된다.

2 . aws-auth Configmap mapRole 추가

 

 

3 . ClusterRole 또는 Role 생성

 

 

4 . ClusterRoleBinding 또는 RoleBinding 생성

 

 

5 . aws-auth Configmap mapRole group 설정

 

 

6 . 대상 사용자의 kubeconfig 파일에 인증 정보 설정

kubectl 명령어를 호출할 , 어떤 role 실행할지 명시를 해주어야 하기 때문에 설정이 필요하다.

 

 

EKS 네트워크 구조

 

 

단일 호스트일 쿠버네티스 네트워크는 eth0 물리 네트워크 인터페이스, docker0 브릿지 네트워크, veth0 가상 네트워크 인터페이스 구조로 구성되어 있다. Pod 안에 여러 개의 컨테이너를 생성하면 가상 네트워크 인터페이스를 공유하면서 하나의 IP 부여받게 된다. Pause 컨테이너를 통해 공유하게 된다.

 

참고로 도커에서는 --net=container:컨테이너이름 옵션을 주게되면 위와 같이 컨테이너 네트워크 공유를 있다.

 

 

다중 호스트일 때는 위와 같이 호스트 내부 IP 충돌하는 문제가 발생할 있다. 그래서 호스트가 여러 되어도 컨테이너를 찾아갈 있게 모든 호스트의 브릿지 네트워크에 각기 다른 IP 할당하는 Overay Network 구조를 생각하게 되었다.

쿠버네티스 코어에 있는 것은 아니고 weave net 이나 AWS CNI, calico, flannel 쿠버네티스 플러그인으로 제공한다. Amazon EKS AWS CNI 사용한다.

 

그런데 AWS CNI 다른 플러그인과 다르게 가상 IP 부여하는 것이 아닌 VPC IP Range 내부 IP 할당하게 된다.

 

 

DaemonSet IPAM 이라는 모듈에서 ENI 로부터 IP 받아 Pod 할당하게 되는데

ENI 할당할 있는 IP 수를 초과하면 추가로 ENI 생성해서 IP 부여한다.

 

인스턴스 유형마다 최대 ENI 개수와 ENI 할당할 있는 최대 IP 주소가 다르다.

Amazon EC2 인스턴스 유형 사양 - Amazon EC2 ((트워크 사양 참고)

 

따라서 최대로 띄울 있는 Pod = 인스턴스 유형에 따른 ENI * (ENI IP - 1) 개이다. (ENI 자체가 할당 받는 IP 주소가 있으므로)

 

EKS 볼륨 관리

 

Pod 내려가면 데이터가 날라가기 때문에 안정적인 데이터 관리가 필요하다.

심플하게 안정적인 저장소를 준비한 다음 컨테이너에 안정적인 저장소를 마운트하면 된다. EBS EFS 준비한다.

 

1 . Storage Class 생성

어떤 저장소를 사용할 것인지 명시한다.

 

 

2 . Persistent Volume Claim 생성

어떤 스펙으로 생성할 것인지 명시한다.

 

 

3 . 컨테이너에 마운트

 

 

EKS 모니터링

 

마스터 노드 로그는 대상 클러스터 로깅 설정으로 CloudWatch 로그가 적재되고 확인할 있다.

Pod 모니터링은 Container Insights 통해 확인할 있다.

1 . 워커 노드의 IAM Role 편집

2 . CloudWatchAgentServerPolicy 정책 추가

3 . 빠른 시작 설정

4 . CloudWatch 페이지 이동

5 . Container Insights 선택

6 . 대상 EKS 클러스터 선택

 

출처

쿠알못이 Amazon EKS로 안정적인 서비스 운영하기 - 최용호 (넥슨코리아) :: AWS Community Day 2020 (youtube.com)

반응형

'인프라 > AWS' 카테고리의 다른 글

AWS EBS & EFS  (0) 2024.09.03
AWS S3 정리  (6) 2024.09.01
AWS Step Functions  (0) 2024.08.20
AWS Service Catalog  (0) 2024.08.19

+ Recent posts