쿠버네티스

쿠버네티스 아키텍처

GaGah 2022. 12. 6. 23:23

📍쿠버네티스 아키텍처

쿠버네티스는 크게 마스터와 노드 2개의 컴포넌트로 분리한다.

출처 : https://bcho.tistory.com/1258

🔆 마스터

마스터는 쿠버네티스의 설정환경을 저장하고 전체 클러스터를 관리하는 역할

 

🌈 마스터 컴포넌트

  • 클러스터에 관한 전반적인 결정(ex. 스케줄링)을 내리고 클러스터 이벤트를 감지하고 반응하는 역학을 한다.
  • 클러스터 내 어떠한 머신에서도 동작 가능하다.
  • 관리자는 Master의 API  Server를 통해 K8s를 관리하며 모든 컴포넌트들은 API Server를 통해 서로 통신한다.

 

🌈 마스터 컴포넌트 종류

1) kube-scheduler

kube-schedule는 Pod, 서비스 등 리소스들을 적절한 노드에 할당하는 즉, 전반적인 결정을 내린다.

 

2) kube-controller-manager

컨트롤러가 여러가지가 만들어지는데(ex. Volume Controller, Node Controller 등) 해당 컨트롤러를 구동하는 마스터 상의 컴포턴트이다.

 

3) kube-apiserver

여러 개의 분리된 프로세스로 구성되어 있으며, 클러스터로 요청이 왔을 때 그 요청이 유효한지 검증하는 역할을 한다.

 

4) ETCD

고가용성을 제공하는 분산 key-value 저장소이며, 쿠버네티스에서 필요한 모든 데이터를 저장하는 실질적인 데이터베이스.

데이터의 안전성을 위해서 여러 개의 장비에 분산해서 클러스팅을 구성해서 실행하는 게 일반적인 방법이고 주기적으로 데이터를 백업할 필요가 있다.

curl 등 HTTP 클라이언트/라이브러리로 작업이 가능하다.

 


 

🔆 노드

Pod나 컨테이너처럼 쿠버네티스 위에서 동작하는 실제 사용자가 사용하는 컨테이너들을 말한다.

실질적으로 서비스하고 있는 것들이라고 생각하면 된다.

노드에는 kubelet, kube-proxy, docker 등이 실행된다.

 

 

🌈 노드 컴포넌트

노드 컴포넌트는 동작중인 Pod를 유지시키고 쿠버네티스 런타임 환경을 제공하며, 모든 노드 상에서 동작한다.

노드는 쿠버네티스에 있어서 워커 머신이며 클러스터에 따라 VM 또는 물리머신이 될 수 있다.

여러 개의 파드는 하나의 노드 위에서 동작할 수 있다.

 

🌈 노드 컴포넌트 종류

1) kubelet

쿠버네티스 마스터와 통신하며 (정확히는 kube-API-SERVER) healthcheck도 진행가능하다.

해당 노드가 잘 살아있는지 체크하는 역할

노드 안에 있는 컨테이너라고 하더라도 쿠버네티스에 의해 생성되지 않은 컨테이너들은 관리하지 않는 것이 특징이다.

 

2) kube-proxy

가상 네트워크가 동작할 수 있도록 하는 실질적인 역할한다.

클러스터 내 각 노드에서 실행되는 네트워크 프로시로, 각 노드의 네트워킹 서비스를 반영하는 네트워크이다.

쿠버네티스는 클러스터 내부에 별도의 가상 네트워크를 설정하고 관리한다.

 

 

 

3) 컨테이너 런타임

실제로 컨테이너를 실행시키는 역할이다.

ex) Docker, rkt, runc 

 

 

 


 

 

👀 애드온

애드온은 쿠버네티스 리소스(데몬셋, 디플로이먼트 등)를 이용하여 클러스터 기능을 구현

클러스터 단위의 기능을 제공하기 때문에 애드온에 대한 네임스페이스 리소스는 kube-system 네임스페이스를 속한다. 

 

👀 DNS

클러스터는 cluster DNS를 갖추어야만 한다.

 

 

LIST

'쿠버네티스' 카테고리의 다른 글

쿠버네티스와 컨테이너  (1) 2022.11.30