쿠버네티스는 기본적으로 마스터노드와 워커노드로 구성되어 있습니다.
마스터 노드(Master Node)는 워커 노드에 파드를 할당하고 파드 안에 컨테이너를 띄우게 하는 역할을 합니다.
또한 쿠버네티스의 상태를 관리하고 여러 파드들의 스케줄링도 하는 등 쿠버네티스에서 중추적인 역할을 합니다.
워커노드에게 명령 하달하는 역할이라고 할 수 있겠네요.
워커 노드(Worker Node)는 마스터 노드와 통신하며 할당 받은 파드 안에 컨테이너를 유지 및 관리하는 역할을 합니다.
또한 네트워크 기능도 컨트롤합니다.
마스터노드로부터 받은 명령을 이행하는 것이라고 할 수 있겠구요.
그렇다면 워커노드는 실질적으로 프로그램을 운영하므로 마스터 노드보다 성능이 좋아야하고 갯수가 많도록 구성이 필요하겠군요!
컨테이너는 이전 글에서 설명을 해서 알고 있는데 파드는 무엇일까요 ?
이전글 : 2022.04.15 - [서버 및 운영/운영] - 도커란 무엇인가?
파드(pod)란 : 쿠버네티스는 도커와 다르게 컨테이너를 개별적으로 배포하는 것이 아니라 Pod라는 단위로 컨테이너를 묶어 관리합니다. 즉 파드는 하나 이상의 컨테이너를 묶어 관리 단위입니다.
이렇게 마스터 노드와 워커노드를 알아보았는데 이를 통해 쿠버네티스 클러스터는 어떻게 구성되어있고 어떻게 통신하는 것인지 알아봅시다.
쿠버네티스 클러스터 구성 요소의 유기적인 연결관계는 아래와 같습니다.
쿠버네티스 클러스터 구성도 (이미지 출처: Sysdig)
[Master Node]
kubectl : 쿠버네티스 클러스터에 명령을 내리는 역할을 합니다. 쿠버네티스 API 서버와 주로 통신합니다.
API 서버(kube-apiserver) : 쿠버네티스 클러스터의 상호통신의 중심 역할을 하는 통로입니다. Master node와 Worker node 간 통로입니다.
etcd : 클러스터안 구성 요소들의 상태 값이 모두 저장되어 있는 곳입니다. etc의 데이터가 백업되어있으면 긴급 장애 상황에서 쿠버네티스 클러스터는 복구가능합니다.
컨트롤러 매니저(Controller manager) : 쿠버네티스 클러스터의 오브젝트(파드,볼륨, 리소스 등) 상태를 관리합니다. 워커노드에서 통신이 되지않는 경우 상태 체크와 복구는 컨트롤러 매니저에 속한 노드 컨트롤러에서 이루어집니다.
스케줄러(scheduler) : 노드의 상태와 조건 등을 고려해 파드를 어떤 워커 노드에 생성할 것 인지 정하고 결정함 (최적화의 배포).
DNS 서버 : 클러스터에서 특정 도메인을 찾을 때 사용되는 네임 서버 (쿠버네티스 1.12 버전부터 CoreDNS로 대체됨)
[Worker Node]
kubelet : 파드의 구성 내용을 API서버로 부터 받아서 컨테이너 런타임으로 전달하고 파드 안의 컨테이너들이 정상적으로 작동하는지 모니터링함.
컨테이너 런타임(Container runtime) : 컨테이너를 동작시키기 위한 프로그램입니다. 예를 들어, docker와 같은 프로세스를 컨테이너 런타임이라고 합니다.
kube-proxy : kubelet 이 파드의 상태를 관리한다면 kube-proxy는 파드의 통신을 담당하는 역할을 합니다. (네트워크 접근,관리 역할)
구성요소는 이와 같으며 명령하달 후 명령이행하는 식으로 운영되고 있습니다.
'서버 및 운영 > 서버' 카테고리의 다른 글
dmesg 명령어 (0) | 2022.07.22 |
---|---|
WebServer와 WAS의 차이점 (0) | 2022.06.17 |
프록시란 (Forward Proxy, Reverse Proxy)? (0) | 2022.05.26 |
Centos Jenkins 설치 (0) | 2022.05.03 |
로그 관리 - Logrotate (0) | 2022.02.28 |