'EKS'에 해당하는 글 3건

Amazon EKS

Server/AWS 2019. 5. 18. 00:56


Amazon EKS 는 AWS 에서 Kubernetes 를 손쉽게 실행하도록 하는 관리형 서비스이다. EKS 는 여러 가용 영역에서 Kubernetes 제어 플레인 인스턴스를 실행하고 관리하여 고가용성을 보장한다. 또한 오픈 소스 Kubernetes 소프트웨어의 최신 버전을 실행하므로 Kubernetes 의 모든 기존 플러그인과 도구를 사용할 수 있다. EKS 는 ECR, ELB, IAM, VPC 등의 AWS 서비스와도 통합되어 확장성과 보안을 제공한다. 아래는 EKS 를 사용하여 어플리케이션을 배포하는 일련의 플로우이다.


  1. 클러스터의 VPC / IAM / Security Groups 생성
  2. 로컬에 AWS CLI / kubectl / IAM Authenticator 설치
  3. EKS 클러스터 생성
  4. kubeconfig 파일 생성 / 설정
  5. Node 생성 및 클러스터에 등록
  6. kubectl 로 클러스터와 통신
  7. EKS 클러스터에 어플리케이션 배포 및 관리


우선 EKS 는 EC2 등으로 쿠버네티스 마스터 노드를 따로 띄우지 않고 AWS 에서 관리해 준다. 물론 유료지만 마스터 노드 설정이 따로 필요 없고 단지 클러스터만 생성하면 된다. 그럼에도 불구하고 추가로 해야할 일이 꽤나 많은 것처럼 보여진다. 하지만 살펴보면 기존 EC2 같은 컴퓨팅에도 사용했던 것들이니 혼란스러울 것은 없다. Hello EKS 를 만들어보기 전에 일단 EKS 가 어떻게 돌아가는지를 위 플로우와 함께 설명해 보려 한다.


먼저 클러스터를 생성할 때 지정해야 할 항목들로 VPC, SG(Security Group), IAM 이 있다. 그렇기 때문에 미리 생성해 놓아야 한다. VPC 와 SG 는 원하는 구성이 있다면 미리 생성하여 사용해도 좋고, aws 에서 샘플로 제공하는 기본 사양을 그대로 사용하거나 수정하여 사용할 수 있다. 일반적으로 EKS 의 VPC 구성은 public 서브넷에 마스터 노드, private 서브넷에 워커 노드를 배치하는 형태를 가진다. 또한 클러스터의 제어 플레인에 리소스 권한을 부여하기 위해 IAM role 을 미리 생성해 놓고 클러스터 생성시 지정해야 한다. 일단 이렇게 하면 클러스터 및 제어 플레인이 생성된다. 그리고 바로 제어 플레인 사용 과금이 시작된다.^^ 여기까지가 1,3번 과정.


이제 노드를 추가해보자. EKS 콘솔에 들어가보면 알겠지만 관련 메뉴가 [클러스터 리스트] 하나 달랑 있다. EKS 콘솔에서 할 수 있는건 클러스터 생성/설정까지만... EKS 에서 노드는 일반적으로 EC2를 가리킨다. 그렇다면 노드 생성은 일반적인 EC2 생성하듯 하면 될 것 같지만 그 외에도 설정해야 할게 상당히 많다. AutoScalingGroup 설정, 연결할 클러스터 세부 설정 등 꽤나 복잡하다. 하지만 AWS 에서는 CloudFormation 에서 미리 정의된 소스들을 사용하여 노드 생성/설정 및 클러스터 등록을 간편하게 할 수 있다. 클러스터 등록할 때 부터는 kubectl 을 사용하게 되는데 특정 클러스터와의 연결을 위해 IAM 인증이 필요하므로 둘다 로컬에 미리 설치해 놓도록 한다. 여기까지가 2,4,5,6번 과정.


7번 과정은 배포 방식에 따라 설정은 다르겠지만 기본적으로 어플리케이션을 컨테이너 이미지로 생성하여 업로드하고 yaml/json 파일로 deployment, service 등을 설정하여 배포할 수 있다. 그 뒤 유지보수는 대시보드 등으로...


하나마나인 설명 같기도 하고;; 다음엔 Hello EKS 를 직접 만들어보긔~




WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

트랙백  0 , 댓글  0개가 달렸습니다.
secret

쿠버네티스는 어디부터 시작해야 할까? 쿠버네티스 이론과 플러스로 특정 클라우드 서비스의 이론, 오픈 소스인데 무료로는 쉽게 접할 수 없을 것 같은 무시무시함, 그 시작점도 여러가지, 솔루션도 여러가지라 시작하는 것부터가 고민이다. 일단 쿠버네티스를 접할 수 있는 방법은 다음과 같이 무궁무진하다.


1. 로컬 장치 솔루션 : PC 나 노트북 등에 쿠버네티스 경량 버전을 설치하고 스피드하게 쿠버네티스 접해보기.(무료!)

2. 호스티드 솔루션 : 쿠버네티스를 설치 없이 즉시 사용할 수 있는 클라우드 솔루션.(gke, eks)

3. 턴키 클라우드 솔루션 : gce 나 ec2 같은 클라우드 컴퓨터에서 클러스터 관리 등 편리한 쿠버네티스 운영을 위한 솔루션.

4. 그 외 클라우드 공급자와 베어메탈 환경, 많은 운영체제에서의 특수조합 솔루션과 사용자 정의 솔루션.


일일이 나열하지는 않았지만 보자마자 꺼버리고 싶을 정도로 다양한 솔루션들. 난 단지 쿠버네티스를 설치하고 테스트 해보고 싶을 뿐인데, 뭐라뭐라~~~ 간단하지는 않겠지만 하고자 한다면 원하는 플랫폼에서 원하는 수준으로 쿠버네티스 솔루션 사용이 가능하다. 특정 클라우드나/서버/OS 에 따라 설치방법이과 설정이 조금씩 다르나, 클러스터 생성 - 앱 배포 - 스케일링 - 업데이트 등의 쿠버네티스의 흐름은 모두 동일하다. 부담없는 무료버전을 빠르게 설치해서 쿠버네티스 명령과 동작 좀 익히고, 중간에 시간 좀 남으면 서버에 직접 설치도 해보고, 그러다가 호스티드 솔루션으로 자연스럽게 넘어가서 운영을 할 수 있을 정도가 되어보려 한다.


시작부터 난관에 빠지긴 했지만... 설치전에 쿠버네티스가 어떻게 생겼는지를 먼저 보는게 좋겠다.



요롷게 생겼다. 어떤 솔루션이든 쿠버네티스가 설치되어 있다면, 가장 먼저 클러스터라는 공간을 생성해 주어야 하며, 그 안에는 마스터 노드(Master) 와 워커 노드(Node) 를 생성할 수 있다. 마스터는 클러스터 내에 발생하는 모든 요청들을 담당하는 중추적인 역할을 하며 하나의 클러스터에 한 개만 있으면 된다. 노드는 클러스터에 따라 물리적인 컴퓨터나 가상머신(VM) 등의 장치가 된다. 앱이 구동될 공간이며, 하나의 클러스터에 여러 개를 생성할 수 있다. 모든 준비를 마친 후 앱을 배포하도록 Master 에 지시하면 적당한 Node 에서 앱을 구동하게 될 것이다. 겉보기는 저게 다다. 이렇게 보니까 되게 쉬워 보인다. 자신감+1.


다음은 로컬 장치 솔루션 사용해 보기!




WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

트랙백  0 , 댓글  0개가 달렸습니다.
secret

Kubernetes 란

Tool/Kubernetes 2019. 3. 12. 00:10


쿠버네티스는 운영 수준에서 컨테이너 오케스트레이션(컨테이너화된 애플리케이션을 자동으로 배포, 스케일링 및 관리) 기능을 하는 오픈소스 시스템이다. GO 언어로 구현이되었으며, 구글에서 설계를 했지만 오픈소스로서 특정 벤더나 플랫폼에 종속되지 않기 때문에, 대부분의 클라우드/온프레미스 등에 사용이 가능하다. 비슷한 기능을 하는 솔루션으로 Docker Swarm, Mesosphere, OpenStack, CloudFoundry 등이 있지만 Kubernetes 로 표준화되어 가고 있다. 쿠버네티스(Kubernetes) 는 K8s 라고도 하는데 K"ubernete"s 가운데 8글자를 "8"로 대체한 약어이다. 우선 쿠버네티스가 실전에서 어떻게 사용되는지를 먼저 보는 것이 쿠버네티스의 용도를 파악하기 쉬울 것 같다.


쿠버네티스를 사용한 어플리케이션 여러 배포 방법 중 하나의 과정을 적어봤다.


  1. 뚝딱뚝딱 서비스할 어플리케이션(A) 만들기.
  2. 쿠버네티스를 제공하는 클라우드 서비스에서 어플리케이션(A)가 운영될 클러스터 생성 및 리소스 설정
  3. 어플리케이션(A)을 컨테이너화하고 쿠버네티스에 배포 <- 운영 시작
  4. 스케일링 설정으로부터 파드(Pod) 수를 조절하며 업데이트 및 롤백 가능


큰 그림 위주의 단계만 적어놓아 이해에 부족함이 있을지도 모르겠다. 위 단계처럼 쿠버네티스는 배포 시스템이며, 안정적으로 운영을 하기 위한 여러 기능을 제공하고 있다. 기존 웹서버에 ELB 와 오토스케일링을 붙이는 방식보다 컨테이너 배포 시스템이 더 나은 점은 빠르고 안정적인 배포와 확장이다. 규모가 커질수록 컨테이너 방식이 월등하다. 다운될 일이 전혀 없는 작은 서비스를 운영하고 있고, 앞으로도 큰 서비스를 개발할 계획이 절대 없다면 이러한 컨테이너 서비스를 사용할 필요가 없다. 제대로 사용하기까지 드는 시간과 노력의 비용이 훨씬 많이 들기 때문이다. 쿠버네티스에 일찍 올라타진 못했지만 많은 사람들이 컨테이너 오케스트레이션 중에는 쿠버네티스를 가장 선호하고 있으며, GitKube 나 Jenkins X 등 Kubernetes 를 더 편리하게 사용할 수 있도록 많은 툴들이 확장되고 있다. 컨테이너 서비스에 관심이 많거나, 최소 트래픽 분산 환경의 웹서버를 운영하는 종사자, 또는 앞날이 창창한 신입 개발자들에게 반드시 도움이 되는 시스템이라고 생각한다.



* 더 도움이 되는 사이트

쿠버네티스 공식 문서(부분 한글) - https://kubernetes.io/docs/home/

조대협(조병욱) 님의 블로그 - https://bcho.tistory.com/1255




WRITTEN BY
손가락귀신
정신 못차리면, 벌 받는다.

트랙백  0 , 댓글  0개가 달렸습니다.
secret