brunch

You can make anything
by writing

C.S.Lewis

by Master Seo May 23. 2022

EKS 6탄-12. Amazon EKS! 효율적

쿠버 네티스 기초에서 EKS  효율적 이용까지 설명이 된다.



<1> NDS 소개

<2>  왜 쿠버 네티스?

<3> 기존 아키텍처?

<4>  쿠버 네티스

<5> 쿠버 네티스 컬트 롤 플래인 = Master Node

<6> Amazon EKS  이점?

<7> CI/CD?

<8> EKS 효율적 이용 -  NameSpace  사용

<9> EKS 효율적 이용 -  라벨링과 노드 실렉터 사용

<10> EKS 효율적 이용 -  클러스터 마이그래이션

<11> EKS 효율적 이용 -  Spot  인스턴스 사용

<12> EKS 모니터링  




<1> NDS 소개


농심그룹의 IT서비스 제공

300개 이상 고객



<2>  왜 쿠버 네티스?


1

장점?


디지털 트랜스포메이션 기반

개발 및 배포 속도

장애 대응 - 스케일 아웃

비용 절감  - 적은 VCPU, 메모리 사용으로 비용 절감


2

어려움?


조직문화를 변경해야 한다.

기존에 해보지 않았던 서비스를 다루어야 한다.



<3> 기존 아키텍처?


여러 애플리케이션이 하나의 서버에 운영

애플리케이션 하나가 문제 되면 전체 서비스 문제



<4>  쿠버 네티스


1

대규모 배포, 오토스케일링 및 관리를 간편하게 해 준다.

같은 역할을 하는 도구로 Docker Swarm , Apache Mesos  등이 있다.


2

원하는 상태를 유지하려는 구성이다.

서버를 5개로 유지한다고 세팅하면 계속 5개로 유지하는 것.


3

중앙제어 - 마스터 노드에서 워커 노드를 관리한다.

API를 통해 제어한다.



<5> 쿠버 네티스 컬트 롤 플래인 = Master Node


1

API Server?

클러스터의 API를 사용할 수 있도록 한다.  

kubectl을 통해  API를 호출


2

Scheduler?

클러스터 자원 할당이 가능한 노드 중에  맞는 노드에 파드를 실행한다.


3

Controller Manager?

노드 유지, 파드 유지, 서비스 생성과 삭제를 한다.




<6> Amazon EKS  이점?


1

완전 관리형 K8s


2

가용성 보장


3

AWS 서비스와 연계 가능 = ECR, ALB , IAM 등 가능



<7> CI/CD?


1

CI?  

Continous Intergration

연속적 통합

개발자를 위한 자동화 프로세스

개발자가 개발, 빌드, 테스트를 자동화하여 공유 리파지토리에 통합되어 관리하는 것이다.


2

CD?   

Continous  Deployment  

지속적 배포  

운영자들을 위한 자동화 프로세스이다.

EC2에 애플리케이션이 있다면 여기에 배포하는 것을 말한다.


구성?

CodeCommit - CodeBuild - CodeDeploy-------EC2


3

CI/CD로   EKS 배포?


CodeCommit - CodeBuild ----   ECR에  이미지 저장 ----------    (Pull ) fluxCD , argoCD , Spinnaker, Jenkins X--------- EKS


Pull 방식으로 주로  배포를 한다.

배포 툴이 권한을 가지고 배포 환경에 배포하는 것을 말한다.

배포 툴에게 AWS접근권한과 배포 권한을 할당해야 한다.  보안주의.



4

CI/CD를 Helm과 함께 사용?


fluxCD , argoCD , Spinnaker, Jenkins X--------HELM---------------- EKS


HELM은 쿠버 네이스 서비스를 패키 지하여 관리하고 배포하는 도구이다.




<8> EKS 효율적 이용 -  NameSpace  사용


1

NameSpace  사용?

NameSpace는 클러스터 내에  물리적으로 워커 노드를 논리적으로 분리하는 단위이다.

리소스를 효율적으로 사용하게 한다.

서비스 단위로 구분하거나  운영 등급 , 조직 단위로 구분하기도 한다.


2

Default  NameSpace를  기본적으로 사용한다.


3

NameSpace 기반으로 물리적 리소스 내에서 사용하도록 설정할 수 있다.



<9> EKS 효율적 이용 -  라벨링과 노드 실렉터 사용


1

파드는 랜덤 하게 배포된다.

특정 노드에 고정하여 배포할 수 있다.


2

라벨링과 노드 실렉터로 조금 완화가 가능하다.

통신이 많은 파트를 같은 노드에 배치하거나 등 가능하다.




<10> EKS 효율적 이용 -  클러스터 마이그래이션


1

클러스터 마이그래이션 해야 하는 경우??

기존 클러스터 사용 불가시

온프라미스와  IP대역이 겹쳐 통신이 불가할 때



2

순서?

EKS 클러스터, 노드 그룹을 만든다.

새로 배포

네임스페이스 등 이름을 똑같이 사용할 수 있다.

RDS나  기타 SaaS 서비스  사용하는 경우 엔드포인트나 방화벽 작업 필요.

도메인 서버에서 레코드 작업 변경도 필요하다.



<11> EKS 효율적 이용 -  Spot  인스턴스 사용


1

Spot 은 R타입이 가장 저렴하다.

R=메모리 최적화

R4.large  = 2 cpu, 16 mem



2

라벨링과 노드 실렉터로  Spot  인스턴스  전용 네임스페이스도 만들 수 있다.


3

CI/CD 사용해 파드 오토스 케일러를 구성 가능.


4

Spot 사용 시 회수 시 문제 해결?

AWS에서 제공하는 Node Termination Handler  배포하여 해결한다.

Ec2 메타 데이터를 모니터링한다.

스판 인스턴스는 중단 2분 전에 알려준다.



<12> EKS 모니터링  


1

Application log 취합?

Application 모니터링

fluentd + OpenSearch + kibana

슬랙 연동

애플리케이션 모니터링에 OpenSearch (일 러스틱 서치)


2

컨테이너 모니터링?

Cloudwatch Container insight

이메일 , 슬랙 연동


3

프로메테우스 + 그라파나?

프로메테우스는 시계열 데이터 수집.

그라 파나로 시각화


4

디플로이 하고 결과를 알려주는 디플로이 노티피케이션?

Flux , ARGOCD

슬랙 , 팀즈 연동




같이 볼만한 자료


https://brunch.co.kr/@topasvga/2466



브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari