WiseN

[Re2020] EKS의 주요 업데이트 살펴보기

Jan 03, 2021   |   AWS

작성자_박태순

페이스북 공유하기 트위터 공유하기
Blog thumbnail

안녕하십니까 이번 포스팅에서는 2020 RE:Invent에서 발표된 것 중 EKS 관련 업데이트를 다뤄보려고 합니다. 지금 포스팅것 외에도 몇몇 업데이트가 더 있지만 제생각에 가장 크리티컬하다고 생각되는 내용을 두가지 정리해서 이야기 드릴까합니다.  

 

 ​EKS Managed Console


​EKS 콘솔이 새롭게 바뀌었습니다. 사실 과거EKS콘솔은 조금 불친절 했습니다. 클러스터를 들어가면 확인할 수 있는 정보는 오직 AWS 리소스 뿐 이었습니다. 예를 들어 워커노드, 보안그룹, VPC, Subnet 등의 정보 였습니다. k8s의 자원 예를 들어 Namespace 나 Deployment등을 확인 할 수가 없어 직접 내부로 들어가 Kubectl을 활용했어야 했습니다. 하지만 이번 업데이트로 다음 내용들을 콘솔에서 확인이 가능합니다. Deployment, Job, DemonSet, StatefulSet, ReplicaSet 등의 정보를 직접 마스터노드에 접속해 Kubectl을 활용해 볼 필요없이 바로 Managed console에서 확인이 가능합니다. 긴 이야기 필요없이 직접 콘솔로 한번 들어가 보겠습니다. 처음엔 기존 콘솔과 같이 클러스터 내부에 워커노드들이 보이게 됩니다.

 

 

노드를 클릭하면 Kubernetes API 서버가 이 노드에 대해 할고 있는 정보들을 비롯해 추가 정보들을 볼 수 있습니다. 또한 Fargate 활용시엔 노드타입이 따로 뜨지않고 Fargate라고 따로 표시가되는것을 볼 수 있습니다. 여기 까진 기존 console과 다를게 없는 클러스터 내부 workernode들의 정보입니다.

 

 

하지만 다음 워크로드 탭으로 넘어가면 워크로드는 k8s에서 실행되는 어플리케이션을 나열되고 어플리케이션의 Namespace 및 워크로드 타입이 표시되며 이를 필터링 할 수 있게 개선되었습니다.

 

​ 

 

하나의 워크로드에 접속을 해보겠습니다. K8s에서 이야기하는 워크로드는 하나이상의 Pod를 의미합니다. 워크로드를 클릭해보면 파드가 어느 컨테이너로 구성되어 있는지 생성날자 업데이트 전략 등 파드에 대한 세부정보를 볼 수 있습니다.

 

 

여기서 pod를 클릭해 한단계 더 깊게 이동할 수 있습니다. 각 pod가 사용중인 이미지, 볼륨 마운트, 포트 정보등을 볼 수 있습니다. 이제 pod가 랜딩되는 위치를 콘솔에서도 쉽게 확인이 가능해서 특정 노드의 장애 발생시 어떤 어플리케이션이 문제가 되는지 빠르게 파악이 가능합니다.

 

 

마지막으로 configuration 탭으로 들어가보면 클러스터의 구성 정보 , 컴퓨팅 , 로깅 제어 등의 정보를 확인하실 수 있습니다.

 

 

콘솔 정보 엑세스 권한


​과거 이러한 정보들을 확인하기 위해서 Kubectl을 사용해야 했으며 이러한 Kubectl은 클러스터 생성자를 제외하고 클러스터 RBAC을 이용해 특정 네임스체이스 또는 기타 리소스에대한 엑세스 권한을 가진 유저만 조회가 가능했습니다. Auth ConfigMap 내에서 IAM role의 RBAC 매핑을 기반으로 리소스를 확인 할 수 있습니다. 이에대해 잘 정리된 링크가 있어서 따로 공유드립니다.

 

링크: https://aws.amazon.com/ko/premiumsupport/knowledge-center/amazon-eks-cluster-access/

 

 

 

​EKS distro 

 

​ 

 

컨테이너의 여러 장점중 가장 큰 장점중 하나는 이식성 입니다. 하지만 여러 클라우드가 각기 다른 서비스와 장점들로 어필하며 멀티 클라우드가 점점 대두되고 있으며 가장 인기있는 컨테이너 오케스트레이션 툴인 k8s의 잦은 업데이트 등으로 버전차이가 어긋나는 사태가 벌어지기도 합니다. 또한 보안상의 이유, 소프트웨어 라이센스의 이유든 모든 워크로드를 EKS를 활용 할 수 없으며 온프레미스나 하이브리드 환경에서 운영해야하는 일이 생깁니다.​ 그래서 AWS는 안정적인 클러스터 업데이트 배포를 위해 온프레미스 환경에서도 쿠버네티스 버전, 종속성 패치, 보안 패치등의 환경 구성을 EKS를 기준으로 잡을 수 있도록 EKS distro를 공개했습니다.  


 

 

​기존 EKS는 크게 3가지로 구분이 가능했습니다. 


1. EKS + Outposts를 이용해 Control Plane은 Managed되는 반면 하위 Worker node를 온프레미스 인스턴스를 활용하는 방법 

2. EKS의 원래 방식인 EC2를 Worker node로 사용하는 방법

3. Fargate를 통해 Fully managed를 통해 활용하는 방법

 

하지만 이번에 EKS Distro가 등장함에 따라 기초 컴퓨팅이 VM, 베어 메탈, EC2, Fargate이든 상관없이  EKS와 동일한 환경의 버전 구성 및 클러스터 업데이트를 손쉽게 할 수 있게되었습니다.

 

 

EKS distro는 EKS Upstream release 프로세스 일정을 따르며  업데이트되고 이는 SNS 구독을 통해 업데이트 시 바로 메시지로 전달 받을 수 있습니다. 또한 2021년 부터 EKS Anywhere란 이름으로 서비스가 출시될 예정이며 EKS Anywhere은 EKS distro를 기반으로 온프레미스 Kubernetes 클러스터 생성 및 운영, 소프트웨어 패키지와 클러스트 수명 주기등을 자동화하고 이 모든것을 콘솔에서 가시성을 제공 및 운영환경을 제공할것이라고 발표했습니다.

 

  

EKS Distro의 구성은 호환성 테스트를 마친 오픈소스 Kubernetes 바이너리 및 컨테이너, etcd, 네트워크 CNI, 스토리지 플러그인등이 포함되어있으며 AWS 서비스와 통신하는 AWS 구성요소인 aws-cloudprovider, aws-kms-encryption-provider, aws-iam-authenticator​는 포함되지 않습니다. 모든 구성 컨테이너는 ECR Public Gallary에 각각 올라와 있으며 Github에서도 제공되고 있습니다.

 

링크: https://github.com/aws/eks-distro​