kubernets

 

첫 부분은 쿠버네티스의 컨셉과 구성 등 처음에 썼던 글들과 비슷한 내용이긴 하나, 없는 내용들을 추가로 적어보려고 한다.

 

당연하게도 해당 내용을 더 자세히 보고 싶으면 공식 문서를 보는게 좋다.

(이쯤되면 왜 공식문서를 보라고 하는지 알 것 같다..)

 

쿠버네티스가 컨테이너 오케스트레이션을 하기 위해 탄생했다는 것은 이제 아는 이야기 일테고... 

그렇다면 어떻게 구성이 될까?

 

쿠버네티스를 구성하게 되면 Master / Worker Nodes 로 나누게 된다.

 

하지만 설명하기 전에 우선 기본 용어 정의 부터 다시 해보도록 한다.

  • 클러스터 (Cluster) : Node 라고 하는 Worker Machine 의 집합
  • 노드 (Node) : 쿠버네티스의 Worker Machine
  • 파드 (Pod) : 클러스터에서 실행 중인 컨테이너의 집합

 

출처는 이미지 링크

 

한마디로 쿠버네티스의 세계에선 Cluster > Node > Pod 로 Cluster 가 가장 포괄적이고,

Pod 가 애플리케이션의 최소 단위라고 보면 되겠다.

 

개인적으로 클러스터링이라는 개념이 조금 헷갈리는데, 클러스터링의 뜻은 여러개의 시스템을 하나의 시스템 처럼 쓴다 라고 생각하면 되겠다.

아무튼... Master / Worker Node 의 컴포넌트 구성은 다음과 같다.

 

1.  Master Component

  • kube-apiserver
    • 쿠버네티스의 각종 처리를 담당하기 위해 받는 말 그대로 REST API Server 라고 보면 될 것 같다.
    • Worker Node 안에 있는 kubelet 과 통신한다.
  • etcd
    • 분산된 믿을만한(reliable) 키-값 저장소
    • 클러스터에서 사용하는 데이터가 저장된다. 
  • controller
    • 노드, 컨테이너 또는 End Point 가 중단되었을 때 이를 감지하고 대응하는 역할
    • 새로운 컨테이너를 만들지 결정한다.
  • scheduler
    • 새로운 컨테이너를 노드에 할당하는 역할

 

2. Node Component

  • kubelet
    • Node 에서 실행되는 기본 Agent 이다.
    • 컨테이너가 잘 돌아가는지 관리한다.
  • Container Runtime
    • Pod 가 Node 에서 실행하기 위해 도와준다.
    • 런타임 종류로는 Docker, Rocket(rkt), CRI-O, containerd 등이 있다고 한다.

 

그래서, 쿠버네티스 구성의 최종적인 그림 형태는 이것이 된다.

 

출처는 이미지 링크

 

kubectl 은 쿠버네티스 클러스터를 제어할 때 쓰는 CLI 도구다.

제일 기본적인 거고,, 실무에선 직접적으로 다룰 일이 많이 없다고는 하지만 CKAD 를 하면서 많이 다룰 것 같다.

 

그렇다면 실무에서는 뭘 쓸까? 대시보드를 쓰려나? 나중에 실무하는 친구에게 물어봐야겠다.