코딩기록

쿠버네티스(kubernetes) 1. 개념 및 용어 정리( 컨테이너, 도커, 오케스트레이션, 쿠버네티스) 본문

백엔드

쿠버네티스(kubernetes) 1. 개념 및 용어 정리( 컨테이너, 도커, 오케스트레이션, 쿠버네티스)

뽀짝코딩 2022. 8. 25. 18:00
728x90

https://www.samsungsds.com/kr/insights/220222_kubernetes1.html?moreCnt=1&backTypeId=insight&category=cat_1222814

 

 

 

1. 컨테이너, 도커,  오케스트레이션

도커와 쿠버네티스 차이

도커는 컨테이너를 다루는 도구(컨테이너 런타임)중 하나이고

쿠버네티스는 컨테이너를 분산 배치, 상태 관리 및 컨테이너의 구동 환경까지 관리해 주는 도구다.  쿠버네티스는 컨테이너를 다루기 위해 도커 이외에도 다양한 컨테이너 런타임 소프트웨어를 사용할 수 있다.

 

 

용어 정리

 

컨테이너 오케스크레이션 툴 TOP10

주요 툴은 가장 대표적인 쿠버네티스, 레드햇, 아파치 MESOS 등이 있다.

 

 

오케스트레이션 등장 이유

많은 서비스를 효율적으로 관리하기 위해 서버마다 역할을 부여하였는데 1번 서버는 CI, 2번 서버는 모니터링, 3번 서버는 웹, 4번 서버는 디비, 5번 서버는 큐 이런 식으로 서비스의 종류에 따라 서버를 구분하였다. 이런 방식은 효율적이고 정리가 잘된 것처럼 보였지만 서버가 늘어나고 컨테이너가 추가될 때마다 비효율적이다.

서버가 역할에 따라 나뉘어 있었기 때문에 특정 서버에 컨테이너가 몰리는 상황이 발생했고 역할이 모호한 애플리케이션의 경우는 어디에 설치할지 고민되는 경우가 많았다. 리소스가 여유 있는 서버로 컨테이너를 옮기고 싶어다른 컨테이너와 의존성이 있어 쉽게 못 옮기는 경우도 있고 IP, Port와 같은 설정 파일을 수정하는 것도 문제였습니다. 컨테이너는 굉장히 유연하여 확장이나 이동이 쉬운데 그런 장점을 거의 못 살리고 있었다.

도커덕분에 애플리케이션 설치 자체가 굉장히 편해져 이런 작업은 사소해 보일 수 있지만, 인간의 욕심은 끝이 없고 더욱 격렬하게 아무것도 안 하고 싶기 때문에 컨테이너를 실행할 서버를 고르는 것부터 정보를 관리하는 것까지 모든 과정을 자동화하면 좋겠다는 생각을 했다. 그래서 등장한 것이 오케스트레이션이다.

 

프로세스를 자동화하고 나면 이를 자동으로 실행되도록 오케스트레이션한다.

자동화와 오케스트레이션
일반적으로 자동화란 단일 태스크의 자동화를 의미합니다. 반면 오케스트레이션은 여러 이기종 시스템 전반에서 다양한 단계를 수반하는 프로세스 또는 워크플로우를 자동화하는 방식을 뜻합니다. 

이기종 시스템(Heterogeneous System)이란 쉽게 말해 'CPU GPU의 벽을 허물고 소프트웨어가 두 부품의 컴퓨팅 자원을 자유롭게 활용한다'는 의미이다. (PC < - > 스마트폰)

 

 

 

 

 

2. 쿠버네티스

쿠버네티스란?

K8s라고도 알려진 쿠버네티스는 컨테이너화된 애플리케이션을 자동으로 배포, 스케일링 및 관리해주는 오픈소스 시스템이다. 컨테이너를 오케스트레이션하기 위한 사실상의 표준이다.  도커의 확장 문제를 해결할 수 있다.

컨테이너 라이프사이클 관리에 사용할 수 있는 컨테이너 오케스트레이션 툴은 다양하며, 그중 쿠버네티스(Google 엔지니어들이 개발하고 설계한 오픈소스 컨테이너 오케스트레이션 툴), Docker Swarm, Apache Mesos가 널리 사용된다.

 

 

쿠버네티스 주요 특징

  1. 클러스터(cluster)
    • 중앙제어(master-node)
      • 노드를 클러스터 단위로 추상화해서 관리해야하며, 마스터 서버를 두고 관리자는 마스터 서버를 이용해 클러스터를 관리
    • 네트워킹
      • 네트워크 세팅이 잘 되어 있어야 한다.
    • 노드스케일
      • 노드가 많아지더라도 관리할 수 있어야 한다.
  2. 상태관리
    • 몇개의 서버 복제본을 만들건지 설정하고, 서버한대가 죽으면 새로운 서버를 자동으로 재구동시켜준다.
  3. 스케줄링 배포관리
    • 서버를 띄워서 여유공간이 있는 서버에 컨테이너를 배포하고, 컨테이너를 배포하기위해 새로운 서버가 필요하다.면 서버를 생성해서 배포하는 스케줄링 기능을 제공한다.
  4. 롤아웃 / 롤백
    • 배포 버전관리
      • 중앙에서 전체 컨테이너의 버전을 한번에 관리한다.
  5.  서비스 등록 및 조회
    • 프록시서버에서 IP 재설정을 자동으로 해준다.
  6. 볼륨 스토리지
    • 각 서버마다 다른 스토리지를 연결해야할때 일일히 설정하는것보다 추상적으로 설정하여 관리할 수 있게 한다.

 

 

쿠버네티스 아키텍처

쿠버네티스는 기본적으로 마스터와 워커 노드로 구성되어 있다.

마스터 노드는 cluster를 관리하는 기능을 가지고 있고 워크 노드는 실제 개발한 프로그램을 실행하는 곳이다. 실행하는 프로그램은 컨테이너화 되어 POD 라는 기본개념을 가지고 실행된다.

master에서는 pod를 관리하는 등 많은 기능을 가지고 있다. pod가 다운되면 자동으로 다시 실행하고 스케일아웃을 해야할 경우 자동으로 pod를 늘리는 등의 기능을 수행한다.

클러스터(cluster)라는 건 쉽게 이야기 하자면 master 노드와 워커 노드가 하나의 세트로 구성되어 프로그램을 수행할 수 있는 준비가 되어 있는 환경을 이야기 한다고 보면 될 것 같습니다. 여러개의 클러스트를 묶어서 구성할 수도 있습니다.

하나의 컴퓨터에서 마스터 노드 여러개, 워커 노드 여러개로 구성하는 것도 hyper-V 같은 가상 이미지 솔루션을 쓰면 가능하나 성능이 따라 주지 않으면 실제 운영하기는 힘들다. 일반적으로 운영 환경에서는 장애 상황을 대비해서 여러대의 서버로 구성하는 경우가 대부분 이다.

 

 

쿠버네티스 아키텍쳐 흐름

  • 외부에서 쿠버네티스 마스터에게 명령을 하면 API Server에서 받아서 명령을 실행한다.
  • 파드를 어디에 스케줄링 할지는 쿠버네티스 마스터에서 어떤 로직에 의해 정해지고 임의로 로직들을 변경할 수도 있다.
  • etcd라는 저장소에 노드의 수나 파드의 위치 등이 있다.
  • 마스터에 노드를 계속 붙이면 무한대로 확장이 가능하다. 보통 마스터 하나에 노드 오만대까지 커버 가능하다.

 

용어 정리

  •  마스터
    • 노드에 배포된 컨테이너를 관리하는 역할을 한다.
  • 워커 노드 (aws ec2 인스턴스)
    • 컨테이너가 배포되는 환경을 제공한다.
    • 컨테이너를 가진 파드가 배치되고 컨테이너를 실행하는 서버이다. aws ec2 인스턴스를 계속 붙일 수 있다.
    • 워커 노드는 특정 양의 CPU와 메모리가 있는 컴퓨터이며 그 머신에서 파드(포드)를 실행할 수 있다.
  • 파드(포드)
    • 파드(Pod)는 쿠버네티스에서 생성하고 관리할 수 있는 배포 가능한 가장 작은 컴퓨팅 단위이다. 도커는 컨테이너를 배포하고 쿠버네티스는 파드를 배포한다. 
    • 파드에 정의된 여러 개의 컨테이너는 하나의 완전한 애플리케이션으로서 동작하게 된다. 즉, 서로 다른 컨테이너들이 각기 다른 역할을 수행하여 하나의 완전한 어플리케이션을 구성한다.( docker-compose )
      따라서 파드에 컨테이너 여러 개를 포함시킬 경우 각 컨테이너가 서로 다른 역할을 수행하도록 구성하는 것이 좋다. 운영에 따라 컨터이너를 어떻게 파드에 배치해서 생성하는지가 달라진다. 기본으로 파드하나에 컨테이너 하나가 들어간다.

 

쿠버네티스 관리

쿠버네티스는 오픈소스이기 때문에 클라우드가 아니라 서버에 설치해서 사용해야 한다. 하지만 트러블슈팅이나 내부 시스템이 복잡하기 때문에 관리가 상당히 어려운 단점이 있다. 그래서 만약 AWS, AZUR, GCP 같은 클라우드를 사용하고 있다면, 클라우드 회사에서 제공하는 매니지드 쿠버네티스 서비스를 사용한다.

오픈소스라서 다 검증을 하고 써야하고 문제가 발생하면 어디서 발생했는지 알기가 쉽지 않다. 이미 검증된 시스템이기 때문에 문제가 빈번하지는 않지만 쿠버네티스를 관리할 사람이 없다면 사용하기가 어렵다. 하지만 잘 이용하면 괜찮은 시스템이라는 것은 이미 입증 받았다. 

 

*추가* 관리하기 어려운 쿠버네티스를 AWS는 EKS(Elastic Kubernetes Service)라는 매니지드 서비스로 제공한다. 보통 IT 메이저 회사로 알고있는 배민, 쿠팡등도 쿠버네티스를 사용하는데 AWS에서 제공하는 EKS를 사용해 더 쉽게 서비스에 이용하고 있다. 

 

 

 

쿠버네티스 설치 및 환경 구성 방법

kubeadm이란, kubernetes에서 제공하는 기본적인 도구이며, kubernetes 클러스터를 가장 빨리 구축하기 위한 다양한 기능을 제공한다.

 

 

 

 

 

 


추가

  • 오케스트레이션
    • 컴퓨터 시스템과 애플리케이션, 서비스의 자동화된 설정, 관리, 조정을 의미한다.
    • 갑자기 많은 사용자의 트래픽이 발생하였을 때 쿠버네티스에서는 컨테이너를 스케일 아웃한다는 개념 대신, 컨테이너 오케스트레이션(Orchestration)이라는 개념이 있다. 비정상적 상태의 컨테이너를 종료한다거나 새로운 컨테이너를 증설하는 개념이다. 오케스트레이션은 IT 팀이 복잡한 태스크와 워크플로우를 보다 쉽게 관리할 수 있도록 돕는다.
  • 오케스트레이션 방식
    • VPA, HPA 
      1. VPA의 경우 포드의 사용량이 급증할 경우 포드 리소스의 request값을 증가시켜주는 등의 동작을 통해 스케일 아웃을 수행한다.
      2. HPA(HorizontalPodAutoscaler)는 CPU, Memory 등 리소스가 정해둔 임계치를 초과할 경우 자동으로 스케일 아웃(Pod의 리소스를 증가 시키지 않고, Pod 개수 자체를 늘려줌) 해주는 기능을 갖추고 있다. HPA 컨트롤러가 리소스를 체크하며 정해둔 replicas 수에 맞춰 Pod를 줄이거나 늘려준다.
  • 오케스트레이션 툴
    1. 컨테이너 오케스트레이션
      • 쿠버네티스: Linux컨테이너 작업을 자동화하는 오픈소스 플랫폼.
      • 이 플랫폼에서는 컨테이너화된 애플리케이션을 배포하고 확장하는 데 수동 프로세스가 필요하지 않다. 또한 컨테이너를 오케스트레이션하는 데 사용할 수 있는 관리형 서비스도 있다. 
    2. 클라우드 오케스트레이션
      • 클라우드 오케스트레이션은 서버를 프로비저닝하거나 배포하고, 스토리지 용량을 할당하고, 가상 머신을 생성하고, 네트워킹을 관리하는 등의 많은 태스크에 사용할 수 있다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

참고

* 컨테이너, 도커, 오케스트레이션 용어정리- 삼성SDS

https://www.samsungsds.com/kr/insights/220222_kubernetes1.html?referrer=https://www.google.com/

*오케스트레이션

https://www.redhat.com/ko/topics/automation/what-is-orchestration

*쿠버네티스 특징

https://chaezzing-fly-dev.tistory.com/73?category=521693

*쿠버네티스의 HPA/VPA 오토스케일링을 위한 모니터링 아키텍처

https://bcho.tistory.com/1389

*쿠버네티스 HPA 개념과 구성 (HorizontalPodAutoscaler, 오토스케일러)

https://nirsa.tistory.com/187

*이기종 시스템 아키텍쳐

https://woongsin94.tistory.com/303

*쿠버네티스 설치 및 환경 구성 방법

https://medium.com/finda-tech/overview-8d169b2a54ff

 

 

 

 


 

 

*정리할것

가상머신과 컨테이너차이

애플리케이션 배포 환경의 변화-삼성SDS

 

자동화와 오케스트레이션 차이

자동화와 오케스트레이션은 서로 다르지만, 그 개념은 연관되어 있다. 자동화는 기업에서 IT 시스템에 대한 수작업을 줄이거나 대체하고, 그 대신 소프트웨어를 사용해 태스크를 수행함으로써 비용, 복잡성, 오류를 줄이는 방식으로 효율성을 개선하도록 지원한다.

일반적으로 자동화란 단일 태스크의 자동화를 의미한다. 반면 오케스트레이션은 여러 이기종 시스템 전반에서 다양한 단계를 수반하는 프로세스 또는 워크플로우를 자동화하는 방식을 뜻한다. 우선 프로세스를 자동화하고 나면 이를 자동으로 실행되도록 오케스트레이션할 수 있다.

또한 IT 오케스트레이션을 통해 자주 진행되는 프로세스와 워크플로우를 간소화하고 최적화할 수 있다. 이는 DevOps 접근 방식을 지원할 수 있으며 팀에서 애플리케이션을 더욱 빠르게 배포하도록 해준다. 

오케스트레이션을 활용하여 서버 프로비저닝, 인시던트 관리, 클라우드 오케스트레이션, 데이터베이스 관리, 애플리케이션 오케스트레이션 등 다양한 태스크와 워크플로우가 포함된 IT 프로세스를 자동화할 수 있다.

https://www.redhat.com/ko/topics/automation/what-is-orchestration

 

 

 

 

 

반응형
Comments