Kubernetes의 이해-개념정리

preiner
4 min readJan 31, 2019

--

다른 오케이션들은 다 제쳐두고 Kubernetes를 먼저 소개하는 이유는 가장 핫하고 많이 쓰이기 때문이다.

지난 3개월간 구글 트렌드에서도 당연히 Kubernetes가 가장 관심을 많이 받고 있는 것을 알 수 있다.

근데 이전 글에서 설치를 하고 애플리케이션도 배포하고 내부 네트워크에 대해서도 좀 공부하려고 하니 어렵다. 도커를 파악할 때와는 차원이 다르다.
그래서 개념을 좀 정리하고 가야 할 것 같아서 이 글을 쓰게 되었다.

Kubernetes는 크게 마스터와 노드 두개의 부분으로 분리된다.
Kubernetes의 구성에 대해서 알아보자.

  1. 마스터
    마스터는 클러스터 전체를 컨트럴 하는 시스템으로 클러스터의
    뇌에 해당한다. 크게 API 서버, 스케줄러, 컨트롤러 매니져, etcd 로 구성되어 있다.
  • API 서버
    원하는 클러스터 워크로드 상태를 정의하고 조회할 수 있는 RESTful
    웹 서비스를 제공한다.
  • 스케줄러
    노드에 파드 형태로 워크로드를 스케줄링하기 위해 API서버와 함께 동작한다.
  • etcd
    Kubernetes의 상태는 이곳에 저장되며 etcd는 값이 변경되는지 감사할 수 있도록 해준다. Kubernetes의 공유메모리이다.

2. 노드
컨테이너가 배포되는 머신 (가상머신이나 물리적인 서버머신)이다.

3. 추상요소

  • Pod
    Pod 는 쿠버네티스에서 가장 기본적인 배포 단위로, 컨테이너를 포함하는 단위이다. 쿠버네티스의 특징중의 하나는 컨테이너를 개별적으로 하나씩 배포하는 것이 아니라 Pod 라는 단위로 배포하는데, Pod는 하나 이상의 컨테이너를 포함한다.
  • 컨트롤러
    컨트롤러는 기본 오브젝트들을 생성하고 이를 관리하는 역할을 해준다. 컨트롤러는 Replication Controller (aka RC), Replication Set, DaemonSet, Job, StatefulSet, Deployment 들이 있다.
  • ReplicaSet
    ReplicaSet은 Replication Controller 의 새버전으로 생각하면 된다.큰 차이는 없고 Replication Controller 는 Equality 기반 Selector를 이용하는데 반해, Replica Set은 Set 기반의 Selector를 이용한다.
  • Deployment
    Deployment (이하 디플로이먼트) Replication controller와 Replica Set의 좀더 상위 추상화 개념이다. 실제 운영에서는 ReplicaSet 이나 Replication Controller를 바로 사용하는 것보다, 좀 더 추상화된 Deployment를 사용하게 된다.
  • DaemonSet
    DaemonSet (이하 DS) 은 Pod가 각각의 노드에서 하나씩만 돌게 하는 형태로 Pod를 관리하는 컨트롤러이다.
  • Job
    워크로드 모델중에서 배치나 한번 실행되고 끝나는 형태의 작업이 있을 수 있다.예를 들어 원타임으로 파일 변환 작업을 하거나, 또는 주기적으로 ETL 배치 작업을 하는 경우에는 웹서버 처럼 계속 Pod가 떠 있을 필요없이 작업을 할때만 Pod 를 띄우면 된다.이러한 형태의 워크로드 모델을 지원하는 컨트롤러를 Job이라고 한다.
  • StatefulSet
    RS/RC나 다른 컨트롤러로는 데이타베이스와 같이 상태를 가지는 애플리케이션을 관리하기가 어렵다.그래서 이렇게 데이타 베이스등과 같이 상태를 가지고 있는 Pod를 지원하기 위해서 StatefulSet 이라는 것이 새로 소개되었는데, 이를 이해하기 위해서는 쿠버네티스의 디스크 볼륨에 대한 이해가 필요하기 때문에 다음에 볼륨과 함께 다시 설명하도록 한다.

이 글에서는 가볍게 Kubernetes를 구성하는 컴포넌트들의 개념들을 알아보았다.

다음 글부터는 요소들 하나씩 실습해 보자.

읽어주셔서 감사합니다!!

--

--