본문 바로가기

DevOps/쿠버네티스(Kubernetes)

쿠버네티스 구성 요소

쿠버네티스 클러스터를 이루는 구성 요소

마스터 노드

kubectl : 쿠버네티스 클러스터에 명령을 내리는 역할을 한다. 다른 구성 요소들과 다르게 바로 실행되는 명령 형태인 바이너리(binary)로 배포되기 때문에 마스터 노드에 있을 필요는 없다. 하지만 통상적으로 API 서버와 주로 통신하므로 API서버가 위치한 마스터 노드에 구성한다.

 

API 서버 : 쿠버네티스 클러스터의 중심역할을 하는 통로이다. 주로 상태값을 저장하는 etcd와 통신하지만, 그 밖의 요소들 또한 API 서버를 중심에 두고 통신하므로 API 서버의 역할이 중요하다. 회사에 비유하면 모든 직원과 상황을 관리하고 목표를 설정하는 관리자와 같다.

 

etcd : 구성 요소들의 상태 값이 모두 저장되는 곳. 회사의 관리자가 모든 보고 내용을 기록하는 노트라고 생각하면 된다. 실제로 etcd 외의 다른 구성요소는 상태값을 관리하지 않는다. etcd의 정보만 백업되어 있다면 긴급한 장애 상황에서도 쿠버네티스 클러스터는 복구 가능하다. 또한 분산 저장이 가능한 ket-value 저장소이므로, 복제해 여러 곳에 저장해 두면 하나의 etcd에서 장애가 나더라도 시스템의 가용성을 확보할 수 있다.

 

컨트롤러 매니저 : 쿠버네티스 클러스터의 오브젝트 상태를 관리한다. 워커 노드에서 통신이 괴지 않는 경우 상태 체크와 복구는 컨트롤러 매니저에 속한 노드 컨트롤러에서 이루어진다. 다른 예로 레플리카셋 컨트롤러는 레플리카셋에 요청받은 파드 개수대로 파드를 생성한다. 서비스와 파드를 연결하는 역할을 하는 엔드포인트 컨트롤러 또한 컨트롤러 매니저이다. 이와 같이 다양한 상태값을 관리하는 주체들이 컨트롤러 매니저에 소속되어 각자의 역할을 수행한다.

 

스케줄러 : 노드의 상태와 자원, 레이블, 요구 조건등을 고려해 파드를 어떤 워커노드에 생성할 것인지를 결정하고 할당한다. 스케줄러라는 이름에 걸맞게 파드를 조건에 맞는 워커노드에 지정하고, 파드가 워커노드에 할당되는 일정을 관리하는 역할을 담당한다.

 

워커 노드

kube-proxy : 쿠버네티스 클러스터는 파드가 위치한 노드에 kube-proxy를 통해 파드가 통신할 수 있는 네트워크를 설정한다.

 

kubelet : 파드의 구성 내용(PodSpec)을 받아서 컨테이너 런타임으로 전달하고, 파드 안의 컨테이너들이 정상적으로 작동하는지 모니터링한다.

 

컨테이너 런타임(CRI) : 파드를 이루는 컨테이너의 실행을 담당한다. 파드 안에서 다양한 종류의 컨테이너가 문제없이 작동하게 만드는 표준 인터페이스이다.

 

파드 : 한 개 이상의 컨테이너로 단일 목적의 일을 하기 위해서 모인 단위이다. 즉, 웹서버 역할을 할 수도 있고 로그나 데이터를 분석할 수도 있다. 여기서 중요한 점은 파드는 언제라도 죽을 수 있는 존재라는 점이다. 가상머신은 언제라도 죽을 수 있다고 가정하고 디자인하지 않지만, 파드는 언제라도 죽을 수 있다고 가정하고 설계되었기 때문에 쿠버네티스는 여러 대안을 디자인했다.

 

그 외 요소

네트워크 플러그인 : 쿠버네티스 클러스터의 통신을 위해서 네트워크 플러그인을 선택하고 구성해야한다. 네트워크 플러그인은 일반적으로 CNI로 구성하는데 주로 사용하는 CNI 로는 캘리코(calico), 플래널, 시릴움, 큐브 라우터, 로마나, 위브넷, Canal이 있다.

 

CoreDNS : 클라우드 네이티브 컴퓨팅 재단에서 보증하는 프로젝트로 빠르고 유연한 DNS 서버이다. 쿼네티스 클러스터에서 도메인 이름을 이용해 통신하는데 사용하며, 실무에서 쿠버네티스 클러스터를 사용할 때는 IP보다 도메인 네임으로 편리하게 관리해주는 CoreDNS 를 사용하는것이 일반적이다.

 


 

# 쿠버네티스 클러스터에 마스터 노드와 워커 노드들이 정상적으로 연결되었는지 확인
$ kubectl get nodes

# 설치 된 쿠버네티스 구성 요소 
$ kubectl get pods --all-namespaces
  • —all-namespace
    • 기본 네임스페이스인 default 외의 모든 것을 표시
    • 모든 네임스페이스에서 파드를 수집해서 보여줌

 

 

 

 

 

출처:

"컨테이너 인프라 환경 구축을 위한 쿠버네티스/도커 - 조훈,심근우,문성주 지음/길벗출판사" 책을 기반으로 실습한 내용입니다.

 

 

  •