들어가기 전에
이 글은 RoadMap 에 대한 두 번째 포스팅으로,
쿠버네티스를 이해하는 데 필요한 핵심 개념과 주요 용어에 대해 살펴보겠습니다.
쿠버네티스란 무엇인지, 왜 사용하는 지가 궁금하신 분들은 첫번째 포스팅인
K8S란? 왜 사용하는 걸까? 를 참고 부탁드립니다!
쿠버네티스를 제대로 이해하기 위해서는 먼저 몇 가지 중요한 개념과 용어를 알아야 합니다.
용어들이 생소하고, 아래 사진에서 처럼 복잡하게 얽혀 있어 한 번에 이해하기 쉽지 않을 수도 있지만,
최대한 자세히 풀어 설명해 볼테니 끝까지 따라와 주세요!
쿠버네티스 컴포넌트와 오브젝트
쿠버네티스를 어떻게 설명하는 것이 가장 효율적일까 하는 고민을 꽤나 오래 했는데,
용어도 생소하고, 개념도 기본 레거시 체재와는 차이가 있어
앞으로의 내용을 제대로 이해하기 위해서는
쿠버네티스 컴포넌트와 오브젝트의 차이를 먼저 명확하게 할 필요가 있겠다는 생각이 들었어요.
쿠버네티스에서 컴포넌트와 오브젝트는 서로 다른 개념으로, 각각의 역할과 기능이 다릅니다.
이번 포스팅에서 계속해서 아래 용어들에 대해 반복해서 설명할 예정이니, 당장 모르는 용어가 나온다고 겁먹지 마세요!!
주요 개념
컴포넌트 (Components)
쿠버네티스 컴포넌트는 클러스터의 동작을 관리하고 유지하는데 필요한 구성요소입니다.
컴포넌트는 크게 컨트롤 플레인(Control Plane)과 노드(Node)로 나눌 수 있습니다.
컨트롤 플레인
: 클러스터의 전반적인 상태를 관리하고 제어하는 역할노드
: 실제 애플리케이션이 실행되는 곳
오브젝트 (Objects)
쿠버네티스 오브젝트는 클러스터에서 실행되는 애플리케이션이나 리소스를 정의하는 엔터티(entities) 입니다.
오브젝트는 클러스터가 원하는 상태(desired state)를 나타내며,
쿠버네티스 시스템은 이 상태를 유지하기 위해 지속적으로 조정 작업을 수행하게 되는 것이죠!
- 주요 오브젝트 유형 : Pod, Service, Deployment 등
- 오브젝트의 구성 요소 : Spec(사양), Status(상태)
클러스터 (Cluster)
반복적으로 언급되는 클러스터!
쿠버네티스에서 클러스터는 오브젝트도 아니고 컴포넌트도 아닙니다.
대신, 클러스터는 여러 노드와 컴포넌트들이 모여서 구성된 환경 또는 구조를 의미해요!
앞으로도 언급될 다양한 구성요소들이 모여
하나의 시스템처럼 동작하는 구조 자체를 쿠버네티스 클러스터라고 이야기 합니다.
차이점
아래에서 컴포넌트와 오브젝트에 대해 각각 자세히 설명하기 전에, 다시 한 번 차이점을 짚고 넘어가봅시다!
구분 | 컴포넌트(Components) | 오브젝트(Objects) |
---|---|---|
개념 | 쿠버네티스 클러스터를 구성하고 운영하는 기본적인 시스템 요소 | 클러스터 내 리소스나 애플리케이션의 원하는 상태를 정의 |
역할 | 클러스터 관리 및 운영 (ex. API 서버, 스케줄러) | 애플리케이션 배포 및 리소스 관리 (ex. Pod, Service) |
구성 방식 | 물리적 또는 논리적 시스템 구성 요소 | YAML 파일 등을 통해 정의된 선언적 엔터티 |
상호작용 방식 | 각 컴포넌트가 협력하여 클러스터 관리 | API 서버를 통해 생성되고 관리됨 |
⭐ 정리 ⭐
컴포넌트는 쿠버네티스 자체의 동작을 유지하기 위한 핵심 시스템 요소이고,
오브젝트는 사용자가 정의한 애플리케이션이나 리소스를 나타내며,
쿠버네티스가 이를 바탕으로 클러스터를 운영하게 되는 것입니다!!
쿠버네티스 컴포넌트
쉽게 이야기 하자면, 쿠버네티스는 컨테이너라는 작은 상자를 여러 서버에 나누어 배치하고,
이 상자들이 잘 작동하도록 관리하는 역할을 합니다.
때문에, 여러 컴포넌트가 협력하여 애플리케이션을 관리하는 시스템이라고 할 수 있어요!
이제는 한 단계 더 들어가, 컴포넌트에는 어떤 것들이 있는지 알아봅시다.
01. 컨트롤 플레인
컨트롤 플레인은 쿠버네티스 클러스터의 두뇌로,
클러스터의 전체 상태를 관리히고 애플리케이션이 어디서 실행될지를 결정합니다.
주요 구성 요소
kube-apiserver
클러스터와 소통하는 API 서버로, 모든 명령이 이 곳을 통해 전달됩니다.
한 마디로, 클러스터의 요청 처리 창구라고 할 수 있어요.
“새로운 Pod를 하나 추가해주세요!”kube-controller-manager
클러스터의 상태를 모니터링하고 필요한 조치를 자동으로 수행하는 다양한 컨트롤러를 실행합니다.
설정된 상태 유지하도록 관리하는 거죠!
“Pod가 하나 사라졌으니, 새로운 Pod를 하나 추가하자!!”kube-scheduler
서버의 자원 상태를 고려해, 새로운 파드를 실행할 노드를 결정합니다.
“이 서버(노드)가 제일 여유가 많으니 새로운 Pod는 여기에 실행하자!”etcd
클러스터의 모든 데이터를 저장하는 클러스터 데이터 저장소입니다.
클러스터의 상태를 기록하고, 필요할 때 복구할 수 있습니다.
02. 노드 컴포넌트
노드는 클러스터를 구성하는 개별 컴퓨터로 실제로 애플리케이션이 실행되는 서버입니다.
각 노드는 컨트롤 플레인의 명령에 따라 파드를 실행하고 관리합니다.
주요 구성 요소
kubelet
- 각 노드에서 실행되며, 파드가 정상적으로 동작하도록 관리하고 모니터링 합니다.
kube-proxy
- 클러스터 내외부간의 네트워크 트래픽을 처리하며, 통신이 원활하게 이루어지도록 지원합니다.
container runtime
- 컨테이너를 실제로 실행하는 소프트웨어입니다.
- ex. Docker, Containerd …
쿠버네티스 오브젝트
쿠버네티스를 구성하고 관리하기 위해 사용하는 추상적인 엔터티를 오브젝트(Object)라고 합니다.
오브젝트는 애플리케이션, 클러스터 리소스, 정책 등을 정의하며, 클러스터에서 실행되는 모든 것을 설명합니다.
주요 오브젝트 유형
Pod
- 쿠버네티스의 가장 작은 실행 단위로, 하나 이상의 컨테이너가 묶여 동작합니다.
- 컨테이너 간 자원을 공유하고, 같은 네트워크에서 동작하도록 돕습니다.
ReplicaSet
- 파드의 복제본을 관리하며, 설정된 수를 유지하도록 보장합니다.
Service
- 파드와 외부를 연결하는 네트워크 창구입니다.
- 파드는 동적으로 생성되거나 삭제되지만, 서비스는 지속적으로 외부 요청을 처리합니다.
Namespace
- 클러스터를 논리적으로 구분하여 여러 환경(ex. 개발, 운영 등)을 분리할 수 있도록 합니다.
Deployment
- 파드와 ReplicaSet의 관리를 책임지는 오브젝트로, 애플리케이션 배포를 쉽게 관리할 수 있도록 도와줍니다.
오브젝트 구성 요소
Spec (사양)
- 사용자가 원하는 상태를 정의합니다.
“파드 3개를 실행해주세요!”
- 사용자가 원하는 상태를 정의합니다.
Status (상태)
- 현재 클러스터의 실제 상태를 나타냅니다.
“현재 파드가 2개 실행 중이고, 1개는 생성 중입니다.”
- 현재 클러스터의 실제 상태를 나타냅니다.
'Study > Kubernetes' 카테고리의 다른 글
[Intro] K8S란? 왜 사용하는 걸까? (0) | 2024.11.18 |
---|---|
[Roadmap] 쿠버네티스 제대로 알아보자 (0) | 2024.11.14 |
댓글