다시 이음

(4) AWS 관리형 쿠버네티스 컨테이너 서비스 Amazon EKS로 애플리케이션 배포 및 운영하기 본문

참가 컨퍼런스 정리/AWS Builders Korea Program

(4) AWS 관리형 쿠버네티스 컨테이너 서비스 Amazon EKS로 애플리케이션 배포 및 운영하기

Taeho(Damon) 2022. 7. 1. 11:20

오늘은 AWS Builders Korea Program의 네번째 실습 내용입니다.

 

이번 실습은 사실 실습 내용이 어려워서 전체적인 이론 내용만 정리해보려고 합니다.

드디어 그렇게나 취준하면 듣게 되는 쿠버네티스의 존재를 확인할 수 있어서 너무 좋았습니다.

 

(본 포스팅의 대부분의 내용과 그림은 AWS에서 발췌한 내용입니다.)

 

사용하는 서비스

  • Amazon Cloud9
  • Amazon Elastic Kubernetes Service(EKS)

 

쿠버네티스(Kubernetes)

 

쿠버네티스는 컨테이너화된 워크로드와 서비스를 관리하기 위한 이식성이 있고, 확장가능한 오픈소스 플랫폼입니다.

쿠버네티스는 선언적 구성과 자동화를 모두 용이하게 해준다. 쿠버네티스는 크고, 빠르게 성장하는 생태계를 가지고 있습니다. 쿠버네티스 서비스, 기술 지원 및 도구는 어디서나 쉽게 이용할 수 있습니다.

쿠버네티스는 분산 시스템을 탄력적으로 실행하기 위한 프레임 워크를 제공한다. 애플리케이션의 확장과 장애 조치를 처리하고, 배포 패턴 등을 제공합니다.

-출처: 쿠버네티스-

 

  • Scheduling : 수 많은 서버 중 최적의 서버에 컨테이너 배포
  • Self Healing : 배포된 컨테이너에 문제가 생긴 경우 자동으로 대응
  • Load Balancing : 서비스 트래픽을 배포된 컨테이너에 균등하게 분산
  • Auto Scaling : 서비스 제공을 위해 필요한 경우 자동으로 용량 증설
  • Rolling Update : 배포된 컨테이너 환경에 대한 업데이트
  • Portability : 서로 다른 운영 환경에 대한 자유로운 이동

 

쿠버네티스 클러스터

Master Node

  • API Server : 사용자 요청의 유효성을 검증하고 요청을 처리
  • Controller Manager : Pod을 복제, 노드 운영 등 리소스를 제어하는 컨트롤러들을 감독하고 실행
  • Scheduler : Node가 할당되지 않은 새로운 Pod 감지, Pod실행할 최적의 Node 선택
  • etcd : 모든 클러스터 데이터를 담는 저장소(key-value저장소), 분산형 합의 기반 시스템

Worker Node

  • Kube-proxy : Worker Node에서 실행되는 네트워크 프록시, Node의 네트워크 규칙 유지관리, 서비스와 Endpoint에 대한 연결 구성
  • Kubelet : 클러스터 각 노드에서 실행되는 Agent, Pod에서 컨테이너가 작동하도록 관리
  • Pod : 쿠버네티스의 가장 작은 Object 단위, 하나 이상의 컨테이너 포함

 

쿠버네티스 구성요소

 

  • Pod : 쿠버네티스의 가장 작은 단위의 워크로드 혹은 관리 리소스
  • ReplicaSet : Selector를 기반으로 하여 Pod의 스케줄, 스케일링, 삭제를 담당
  • Deployment : Pod와 ReplicaSet에 대한 선언적 관리방법

 

쿠버네티스는 선언형

 

YAML

'사람이 쉽게 읽을 수 있는' 데이터 직렬화 양식

  • apiVersion : kind에 지정된 쿠버네티스 object에 사용되는 API 버전 지정
  • kind : YAML을 이용해 생성하고자하는 Object 지정
  • metadata : Object를 구분지어 줄 수 있는 데이터 정보(이름,lable,namespace 등)
  • annotations : Object에 메타데이터 첨부할  때 사용
  • label : Object에 첨부된 key-value 값으로 Object의 특성을 식별하는 데 사용
  • spec : 쿠버네티스에 배포될 자원에 대한 요구 사항을 명시
  • selector : 효율적으로 레이블을 이용해 오브젝트를 쉽게 식별할 수 있게하는 것. 컨트롤러가 모니터링해야하는 대상을 명시
  • template : 새 pod를 런칭하는데 사용할 템플릿, selecotr의 값이 template의 label과 일치해야 관리되는 pod를 제대로 선택 가능

 

Amazon Cloud9

AWS Cloud9은 브라우저만으로 코드를 작성, 실행 및 디버깅할 수 있는 클라우드 기반 IDE(통합 개발 환경)입니다. 코드 편집기, 디버거 및 터미널이 포함되어 있습니다.

 

 

Amazon Elastic Kubernetes Service(EKS)

Amazon Elastic Kubernetes Service(Amazon EKS)는 Kubernetes를 실행하는 데 사용할 수 있는 관리형 서비스입니다.

AWS Kubernetes 제어 플레인 또는 노드를 설치, 작동 및 유지 관리할 필요가 없습니다. Kubernetes는 컨테이너화된 애플리케이션의 배포, 조정 및 관리 자동화를 위한 오픈 소스 시스템입니다.