본문 바로가기
공부/쿠버네티스 (Kubernetes)

쿠버네티스 컴포넌트 이해하기

by Lagooni 2021. 7. 29.

쿠버네티스를 배포하면 클러스터를 얻습니다. 여기서 클러스터란? 컨테이너화된 애플리케이션을 실행하는 노드라고 하는 워커머신들의 집합입니다. 즉 여러대의 컴퓨터가 모여 같은 목적으로 수행되는 그룹이겠지요. (쿠버네티스를 실행 중이다 == 클러스터를 실행하고 있다) 모든 클러스터는 최소 한 개의 워커노드를 가집니다.

그림으로 보면 이러한 구조입니다. 이 그룹에서 클러스터 전체를 관리하는 컨트롤러로 마스터가 존재하고 있습니다.

마스터는 kube-api-server, kube-controller-manager, kube-scheduler, cloud-controller-manager, etxd등의 컴포넌트가 실행됩니다.

 

컨트롤 플레인 컨포넌트

컨트롤 플레인 컴포넌트란 클러스터에 관한 전반적인 결정(ex> 스케줄링)을 수행하고 클러스터 이벤트들을 감지하고 반응합니다.

 

kube-apiserver

kube-apiserver는 쿠버네티스 클러스터의 api를 사용할 수 있도록 하는 컨트롤 플레인 컴포넌트 입니다. 즉 api 서버는 쿠버네티스 프론트 엔드로서 클러스터로 온 요청이 유효한지 검증하고, api서버를 통해 다른 컴포넌트가 서로 필요한 정보를 주고받게 됩니다. 특히 etcd에는 api 서버만 접근할 수 있습니다.

 

etcd

etcd는 쿠버네티스에서 필요한 모든 데이터를 키-값 형태로 저장하는 저장하는 데이터베이스 역할을 합니다. etcd는 서버 하나당 프로세스 1개만 사용할 수 있는데, 보통 etcd 자체를 클러스터링 한 후 여러 개 마스터 서버에 분산해서 실행해 안정성을 보장하도록 합니다.

 

kube-scheduler

클러스터 안에서 자원 할당이 가능한 노드 중 알맞은 노드를 선택해서 새로운 파드를 실행해주는 역할을 합니다. 처음 파드가 실행될 때 최소 할당되어야 하는 ram과 같은 설정들을 할 수 있는데, 이러한 조건에 맞추어 알맞은 노드에 파드를 실행시켜주는 자동화 작업해주게 됩니다.

 

kube-controller-manager

쿠버네티스의 파드들을 관리하는 컨트롤러입니다. 컨트롤러 각각은 논리적으로 개별 프로세스지만 복잡도를 줄이려고 모든 컨트롤러를 바이너리 파일로 컴파일해서 단일 프로세스로 실행합니다.

 

cloud-controller-manager

cloud-controller-manager는 쿠버네티스의 컨트롤러들을 클라우드 서비스와 연결해서 관리하는 컴포넌트입니다.

노드 컴포넌트

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

 

kubelet

클러스터의 각 노드에서 실행되는 에이전트. 파드에서 컨테이너가 확실하게 동작하도록 관리합니다. kubelet은 파드 스펙(PodSpec)의 집합을 받아서 컨테이너가 해당 파드 스펙에 따라 건강하게 동작하는 것을 확실히 합니다. 단 kubelet은 쿠버네티스를 통해 생성되지 않는 컨테이너는 관리하지 않습니다.

 

kube-proxy

kube-proxy는 클러스터의 각 노드에서 실행되는 네트워크 프록시로, 쿠버네티스의 서비스 개념의 구현부입니다. 쿠버네티스는 클러스터 안에서 별도의 가상 네트워크를 생성하고 관리하는데 kube-proxy는 이런 가상 네트워크의 동작을 관리하는 컴포넌트 입니다.

 

컨테이너 런타임

컨테이너 런타임은 컨테이너 실행을 담당하는 소프트웨어입니다.

쿠버네티스는 여러 컨테이너 런타임을 지원합니다. Docker, containerd 등

 

참고자료: https://kubernetes.io/ko/docs/concepts/overview/components/

 

쿠버네티스 컴포넌트

쿠버네티스 클러스터는 컴퓨터 집합인 노드 컴포넌트와 컨트롤 플레인 컴포넌트로 구성된다.

kubernetes.io

https://ooeunz.tistory.com/118

 

[Kubernetes] 쿠버네티스의 기본 구조와 개념

핵심 개념 쿠버네티스의 핵심 개념을 한 줄로 표현하자면, 계속해서 원하는 상태를 만들기 위해 현재 상태를 바꾸는 플랫폼입니다. 예를 들어 내가 원하는 컨테이너를 쿠버네티스에 알려주면 (

ooeunz.tistory.com

 

댓글