프로그래밍/쿠버네티스

[쿠버네티스] 3. 쿠버네티스 구성요소

riroan 2023. 5. 6. 19:43

지난시간 마지막에 발생한 문제를 해결하기 위해 쿠버네티스 구성요소에는 어떤게 있는지 각 요소가 무슨 역할을 하는지 아는것이 좋다. 이번시간에 한번 정리해보도록 하자.

Overview

쿠버네티스 구성을 간략하게 나타내면 위 그림과 같이 나온다. 기본적으로 클러스터는 하나의 마스터노드와 여러개의 워커노드로 이루어져있다. 여기서 클러스터는 하나의 쿠버네티스를 나타내는 논리적 단위로 생각하면 된다. 노드는 PC, 컨테이너, 가상머신등 하나의 서버라고 생각하면 된다. 

Master Node

마스터노드(컨트롤 플레인)는 kubectl로 통신하기 위한 노드이다. 우리는 minikube를 도커 드라이버로 사용하기때문에 컨테이너형태로 사용중이다.

이 컨테이너가 마스터 노드

Scheduler: 각 노드의 조건과 상태를 고려해 특정 자원을 어떤 워커 노드에 할당할지를 결정하는 역할을 한다.

controller manager: 쿠버네티스 클러스터 내의 객체 상태를 관리하는 역할을 한다. 특정 워커 노드가 통신이 되지 않거나 어떤 컨테이너가 종료됐다면 controller manager가 해당 문제를 해결하게 된다.

etcd: key-value로 저장되는 클러스터의 상태값들의 집합

API: 마스터노드와 다른 객체들과의 통신을 위한 API서버

이 외에도 더 많은 요소가 있지만 중요한 것들로만 정리를 했다. 더 많은 내용은 공식문서에 있다.

https://kubernetes.io/ko/docs/concepts/overview/components/#%EC%BB%A8%ED%8A%B8%EB%A1%A4-%ED%94%8C%EB%A0%88%EC%9D%B8-%EC%BB%B4%ED%8F%AC%EB%84%8C%ED%8A%B8

 

쿠버네티스 컴포넌트

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

kubernetes.io

Worker Node

워커노드(데이터플레인)은 마스터노드가 할당한 자원을 실행시키는 역할을 한다. 하나의 클러스터 내에 워커노드는 여러개가 존재할 수 있다.

 

Container: 실행중인 컨테이너 런타임이다.

Pod: 컨테이너가 들어있는 쿠버네티스의 객체이다. 컨테이너는 도커의 객체이므로 쿠버네티스의 관점으로 보면 pod가 가장 작은 단위이다. 하나의 pod에 여러개의 컨테이너가 있을 수 있다.

Deployment: pod를 배포하기 위한 객체이다. 하나의 deployment에는 여러개의 pod가 들어있을 수 있고 하나의 워커노드에 여러개의 deployment가 있을 수 있다.

Service: pod는 기본적으로 외부와 단절되어있기때문에 외부와 소통할 수 있게 하는 객체이다.

 

클라우드환경에서의 쿠버네티스

쿠버네티스를 on-premise로 사용할 수 있지만 보통은 클라우드에서 사용하는 케이스가 대다수이다.

AWS EKS기준으로 EKS서비스가 마스터노드가 되고 관련해서 생성된 EC2 인스턴스가 워커노드로 된다. 클라우드에서 쿠버네티스를 사용하면 아무래도 클라우드 종속적이다보니 각 클라우드마다 설정법도 다르고 사용법도 조금씩 다르다.