마이크로서비스의 세 번째 세션으로 쿠버네티스에 대해서 소개하겠습니다.
지난 시간에 다룬 포스트는 아래에 리스트에 링크되어있으니 참고하시면 되겠습니다.
지난 시간에서 컨테이너를 다루면서 어떻게 하면 프라이빗 클라우드 환경에서 여러 장치에서 컨테이너를 효율적으로 관리할 수 있을까에 대한 솔루션중 요즘 핫한 쿠버네티스이다.
쿠버네티스(K8s, Kubernets)는 컨테이너화된 애플리케이션들을 디플로이 자동화, 자동 스케일링 등의 관리를 위한 솔루션이다. 여러 장치들에있는 컨테이너들을 클러스터링하여 프라이빗 클라우드 환경을 제공해주는데, 다시말하면 여러 도커엔진의 컨테이너들을 관리해주는 솔루션이다. 구글이 2014년에 쿠버네티스 프로젝트를 오픈소스화했다.
쿠버네티스는 크게 마스터(Master)와 노드(Node)로 구성되어있다.
(노드(Node)는 초기에는 미니언(Minion)으로 불리었지만 지금은 노드(Node)로 명칭이 바뀌었다.)
쿠버네티스 관리자가 쿠버네티스 컨트롤 스크립트(kubectl)로 쿠버네티스 마스터(Kubernetes Master)를 제어한다.
쿠버네티스 마스터(Kubernetes Master)
쿠버네티스 마스터(Kubernetes Master)는 크게 API 서버(kube-API Server), 스케쥴러(kube-scheduler), 레플리케이션 컨트롤러 또는 컨트롤러 매니저(kube-controller-manager), etcd의 컴포넌트로 구성되어있다.
마스터의 API 서버는 쿠버네티스 클라우드의 모든 스케줄링을 관리한다.(노드 포함) 또한 Restful을 이용한 노드와의 통신 프로토콜을 규약 한다.
etcd는 쿠버네티스 시스템의 모든 정보들이 담겨있는 db로 이해하면 된다.
쿠버네티스 노드(Kubernetes Node) 예전이름 미니언(Minion)
쿠버네티스 노드에는 컨테이너로 구성된 서비스들이 실행되는 공간이다. 크게 kubelet, 파드(pods, 포드라고도 읽음), kube-proxy로 구성되어있다.
마스터의 API 서버에서 노드의 kubelet으로 제어 입력이 들어오면 그에 따른 파드(pods)를 생성하거나 삭제한다.
파드(pods)는 컨테이너 서비스를 담는 그릇이라고 생각하면 되는데 파드 안에 애플리케이션 서비스를 실행시킨다.
그리고 애플리케이션 서비스를 소비하는 사용자들은 kube-proxy를 통해 쿠버네티스 클라우드의 내부 네트워크와 외부 네트워크(작업되는 장치의 내부아이피)를 연결시켜주고 포트포워딩 과정(장치의 내부아이피와 진정한 외부아이피를 연결해주는 과정)을 거치면 외부에서 사용자가 접속할 수 있게 된다.
1. 아마존 웹 서비스(AWS, Amazon Web Wervices)
쿠버네티스 클러스터를 쉽게 실행할 수 있는 관리형 서비스인 일래스틱 컨테이너 서비스(EKS, Elastic Container Service)를 제공한다. (2018 ~)
2. 구글 클라우드 플랫폼(GCP, Google Cloud Platform)
컨테이너형 애플리케이션을 클라우드에서 배포, 관리, 확장할 수 있는 강력한 클러스터 관리 서비스인 구글 쿠버네티스 엔진(GKE, Google Kubernetes Engine)을 제공한다.
구글 클라우드 콘솔로 모든 쿠버네티스 기능을 제어할 수 있다.
3. 마이크로소프트 애저(Microsoft Azure)
애저 쿠버네티스 서비스(AKS, Azure Kubernetes Service)를 제공한다. (2017 ~)
애저의 AKS는 윈도우와 리눅스 컨테이너를 제공하지만 윈도우 서버 컨테이너에 대한 AKS 지원은 아직 불안정하다고 한다.
4. 네이버 네이버 클라우드 플랫폼(NCP, NAVER CLOUD PLATFORM)
네이버 클라우드 플랫폼의 쿠버네티스 서비스(Kubernetes Service)를 제공한다
Kubernetes v1.12.7 버전을 제공한다.
이번 포스트에서는 쿠버네티스의 기본 개요 및 개념, 아키텍처에 대해서 다뤘다.
다음 포스트에서는 쿠버네티스를 설치해보도록 하겠다.
피드백은 언제나 환영입니다.
마이크로서비스#4 - AWS에서 쿠버네티스 구축 (0) | 2019.09.26 |
---|---|
RISC-V #3 - 가상화를 통한 RISC-V 부팅 실습 (2) | 2019.07.29 |
마이크로서비스#2 - 가상화 컨테이너기술에 대한 이해 (0) | 2019.07.22 |
RISC-V #2 - RISC-V와 ARM 명령어 셋 비교 (0) | 2019.07.19 |
마이크로서비스#1 - 마이크로서비스 아키텍처 이해 (0) | 2019.07.18 |