본문 바로가기
DevOps & Tool

kubernetes 둘러보기 - 개념 정리

by jeff제프 2021. 8. 24.

 

추상적인 개념도 모르고 구체적인 것도 모를 때 혼란은 더 크게 다가온다. 

도커와 쿠버네티스를 먼저 그냥 접했을 때는 혼란했다.

설명들을 찾아보고서 이렇게 정리하니 혼란이 정리됐다. 

 

 

1.도커와 쿠버는 어떤 관계인가? 

Docker

Docker 는 컨테이너 기술을 구현한 하나의 container runtime 구현체다 

vmware 와 같은 형태가 발전하다가 docker 라는 기술이 나오게 되었고 컨테이너 기술의 표준이 되었다

현재는 podman 이라는 구현체도 있다. 

 

Kubernetes (이하 k8s)

k8s 도 마찬가지로 컨테이너 오케스트레이션 기술의 구현체 중 하나다.

docker swarm, marathon, k8s등이 있는데 그 중 k8s 가 대장인 것일 뿐이다. 

 

(인기가 있는 이유는 구글이 검증했고 이미 실전에서 사용하던 프로젝트라서 그런 것 같다)

1주일에 20억개의 컨테이너를 관리했던 검증된 기술.

 

2. 쿠버네티스는 왜 쓰는가? 

Docker 의 장점은 안다고 가정.

Docker는 다 좋은데, 중앙 관리가 안된다 

  • 죽으면 새로 띄우고
  • Docker 안에 앱을 rolling update 하거나 
  • 무언가 인스톨하고 

이런걸 하려면 모든 인스턴스에 각각 들어가서 실행해줘야 한다  

 

3. 쿠버네티스의 Components (구성 요소) 

 

쿠버네티스 클러스터를 구성하는 머신들은 노드(node) 라고 불립니다.

쿠버네티스 클러스터 내 노드들은 물리적이거나 가상 머신일 수 있습니다.

노드에는 두가지 종류가 있습니다:

 

 

 

control plane (master node) 영역

실제 앱이 실행되는 노드가 아니라, 컨트롤 역할을 하는 노드들

kubectl

클러스터에 명령을 내리는 역할 

 

api 서버

모든 요소들과 api를 통해서 통신하는 중간 다리 역할

 

etcd 

상태값을 key-value 로 저장하는 저장소

k8s 클러스터가 장애가 나면 etcd 데이터를 활용해 복구할 수 있다 

(etcd 의 의미: 리눅스의 구성 정보를 주로 저장하는 /etc 폴더를 분산(d)시켜 저장하겠다)

 

controller

클러스터의 오브젝트 상태를 관리한다 

여러가지 컨트롤러들이 역할에 맞는 일을 한다 (상태 체크, 파드 생성, 서비스와 파드 연결 등등)

 

scheduler

노드의 상태를 고려해 어떤 노드에 파드를 생성할지 결정한다 

 

data plane (워커 노드) 영역

kubelet

podSpec 를 컨테이너 런타임으로 전달하고, 파드 안의 컨테이너가 잘 작동하는지 감시한다 

 

컨테이너 런타임(CRI) 

파드 안에서 컨테이너가 실행되도록 함 

 

파드(pod)

파드(Pod) 는 쿠버네티스에서 생성하고 관리할 수 있는 배포 가능한 가장 작은 컴퓨팅 단위

 

container ∈ pod ∈ node ∈ node cluster

 

'DevOps & Tool' 카테고리의 다른 글

EKS 시작하기  (0) 2021.03.15