쿠버네티스 살펴보기 | 2. 쿠버네티스 구성요소

nawnoes·2021년 7월 14일
0

Kubernetes

목록 보기
2/4

쿠버네티스 학습을 위한 쿠버네티스 공식문서를 정리

쿠버네티스 구성요소


쿠버네티스를 배포하면 클러스터가 생성된다. 이때 클러스터는 컨테이너를 실행하는 노드라 불리는 워커 머신의 집합이다. 모든 클러스터는 최소한 한개의 워커 노드를 가진다.

워커 노드는 애플리케이션의 구성요소인 파드를 호스트 한다. 컨트롤 플레인은 워커 노드와 클러스터 내 파드를 관리한다. 프로덕션 환경에서는 일반적으로 컨트롤 플레인이 여러 컴퓨터에 걸쳐서 실행되고, 클러스터는 여러 노드를 실행하므로 내결함성과 고가용성을 제공한다

내결함성: 운영중이던 시스템의 데이터가 손실되거나 진행중인 작업이 손상되지 않도록, 전원부족 또는 하드웨어의 장애와 같은 돌발상황에 대비할 수 있는 기능. 미러볼륨, RAID-5볼륨, 클러스터로 내결함성을 제공할수 있다.

컨트롤 플레인 컴포넌트

컨트롤 플레인은 클러스터 전반에 대한 기능을 수행하고 클러스터 이벤트를 감지하고 반응한다. 이때 클러스터 이벤트는 deployment의 replicas 필드에 요구조건이 충족되지 않은 경우, 새로운 파드를 기동시키는 것을 말한다. 컨트롤 플레인 컴포넌트는 클러스터 내에 어떤 머신에서든지 동작할 수 있다.

kube-apiserver

API 서버는 쿠버네티스 API를 노출하는 쿠버네티스 컨트롤플레인 컴포넌트이다. API 서버는 쿠버네티스 컨트롤 플레인의 프론트 엔드이다.

쿠버네티스 API서버는 kube-apiserver를 통해 구현되며, 수평적으로 확장되도록 디자인 되었다.

etcd

모든 클러스트 데이터를 담는 쿠버네티스 뒷단의 저장소로 사용되는 일관성,고가용성 키-값 저장소.

etcd를 저장소로 사용한다면 백업 계획은 필수이다.

kube-scheduler

노드가 배정되지 않은, 새로 생성된 파드를 감지하고 실행할 노드를 선택하는 컨트롤 플레인 컴포넌트.

스케줄링 결정을 위해서 고려되는 요소는 리소스에 대한 요구사항, H/W, S/W, 정책적 제약,affinity anti-affinity 명세, 데이터 지역성, 워크로드 간 간섭, 데드라인을 포함한다.

kube-controller-manager

컨트롤러를 구동하는 마스터 상의 컴포넌트.

논리적으로 각 컨트롤러는 개별 프로세스이지만 복잡성을 낮추기 위해 단일 바이너리로 컴파일 되고 단일 프로세스 내에서 실행된다.

이들 컨트롤러는 아래 내용을 포함한다.

  • 노드 컨트롤러: 노드가 다운되었을때 통지와 대응
  • 레플리케이션 컨트롤러:시스템의 모든 레플리케이션 컨트롤러 오브젝트에 대해 알맞은 수의 파드를 유지한다.
  • 엔드포인트 컨트롤러: 엔드포인트 오브젝트를 채운다.
  • 서비스 어카운트 & 토큰 컨트롤러: 새로운 네임스페이스에 대한 기본 계정과 API 접근 토큰을 생성

cloud-controller-manager

클라우드 별 컨트롤 로직을 포함하는 쿠버네티스 컨트롤 플레인 컴포넌트이다. 클라우드 컨트롤러 매니저를 통해 클러스터를 클라우드 공급자의 API에 연결하고, 해당 클라우드 플랫폼과 상호 작용하는 컴포넌트와 클러스터와 상호작용하는 컴포넌트를 구분할 수 있다.

kube-controller-manager와 마찬가지로 cloud-controller-manager는 논리적으로 독립적인 여러 컨트롤 루프를 단일 프로세스로 실행하는 단일 바이너리로 결함.

노드 컨트롤러, 라우트 컨트롤러, 서비스 컨트롤러들은 클라우드 제공 사업자의 의존성을 가질 수 있다.

노드 컴포넌트

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

kubelet

클러스터의 각 노드에서 실행되는 에이전트로 kubelet은 파드에서 컨테이너가 적절하게 동작하도록 관리한다.
kubelet은 다양한 방법을 통해 제공되는 파드 스펙의 집합을 받아서 컨테이너가 해당 파드 스펙에 따라 정확하게 동작하게 한다. 단, kubelet은 쿠버네티스를 통해 생성되지 않은 컨테이너는 관리하지 않는다.

kube-proxy

kube-proxy는 클러스터의 각 노드에서 실행되는 네트워크 프록시로 쿠버네티스의 서비스 개념의 구현부이다. kube-proxy는 노드의 네트워크 규칙을 관리하며 내부 네트워크 세션이나 클러스터 바깥에서 파드로 네트워크 통신 가능하게 한다.

컨테이너 런타임

컨테이너 런타임은 컨테이너 실행을 담당하는 소프트웨어이다. 이때 쿠버네티스가 지원하는 컨테이너런타임으로는 Docker, containerd, CRI-O 그리고 kubernetes CRI를 구현한 모든 소프트웨어

애드온

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

DNS

모든 애드온들이 절대적으로 요구되지 않지만 많은 예시에서 필요하기 때문에 쿠버네티스 클러스터는 클러스터DNS를 갖춰야한다. 클러스터 DNS는 쿠버네티스 서비스를 위해 DNS 레코드를 제공해주슨 서버이다.

웹UI

대시보드는 쿠버네티스 클러스트를 위한 웹 기반의 UI. 사용자가 클러스터 자체 뿐만 아니라 클러스터에서 동작하는 애플리케이션에 대한 관리와 문제 해결을 할 수 있도록 한다.

컨테이너 리소스 모니터링

컨테이너 리소스 모니터링은 중앙 데이터베이스 내의 컨테이너들에 대한 포괄적인 시계열 매트릭스를 기록하고 시각화를 위한 UI를 제공한다.

클러스터-레벨 로깅

검색/열람 인터페이스와 함께 중앙 로그 저장소에서 컨테이너 로그를 저장한다.

0개의 댓글