쿠버네티스(Kubernetes)는 컨테이너화된 애플리케이션을 자동으로 배포하고 관리하는 오픈소스 플랫폼입니다.
어플리케이션을 구성하는(감싸고 있는) 요소는 클러스터(Cluster), 노드(Node), 그리고 파드(Pod)입니다
cluster > node > pod > container로 어플리케이션을 관리합니다.
클러스터(Cluster)
쿠버네티스의 가장 큰 단위입니다. 클러스터는 여러 개의 Node로 이루어진 집합이며, 컨테이너화된 애플리케이션을 실행하고 관리하기 위한 환경을 제공합니다. 같은 클러스터 안에 있으면 컨트롤 플레인(Control Plane)에 의해 API 서버, etcd, 네트워크 등이 공유됩니다. 클러스터는 크게 두 가지 요소로 구성됩니다
- 마스터 노드(Master Node): 클러스터를 제어하는 Control Plane이 있는 서버입니다. 클러스터를 제어하고 관리하는 역할을 수행합니다.
- 워크 노드(Worker Node): 실질적으로 애플리케이션이 실행되는 노드입니다.
클러스터를 분리하는 이유는
- 개발/스테이징/운영 환경 분리
- 멀티 테넌트 : 부서 별로 별도 클러스터 운영 / 고객별로 별도 클러스터 운영
노드(Node)
Node는 클러스터 내에서 컨테이너를 실행하는 실제 컴퓨팅 단위입니다. 노드는 물리적 서버 또는 가상 머신(VM)일 수 있습니다. 노드를 여러개로 구성하여 서로 다른 서버에서 어플리케이션이 구동될 수 있게 합니다. 노드는 아래와 같은 주요 구성 요소를 포함합니다:
- Kubelet: 각 노드에서 실행되며, 마스터 노드와 통신하여 컨테이너 실행을 관리하는 에이전트 역할을 합니다.
- 컨테이너 런타임(Container Runtime): 도커(Docker), 컨테이너드(Containerd), CRI-O와 같은 컨테이너 실행 환경을 제공합니다.
- Kube Proxy: 네트워크 트래픽을 관리하며, 쿠버네티스 서비스 간의 통신을 가능하게 합니다.
애플리케이션의 부하에 따라 더 많은 워크로드를 처리하기 위해 노드를 추가하여 확장할 수 있습니다. 같은 클러스터 내 Node를 통해 물리적으로 분리 뿐만 아닌 namespace를 통해 논리적으로 격리할 수도 있습니다.
Pod
pod는 쿠버네티스에서 가장 작은 배포 단위입니다. 하나 이상의 컨테이너를 실행하는 논리적인 그룹입니다. 같은 pod내의 컨테이너들은 동일한 네트워크를 공유하여 localhost를 통해 서로 통신이 가능합니다.
하지만, 대부분의 경우 하나의 pod에는 하나의 container만 포함하는 것이 좋습니다. 그 이유는 pod가 replication의 단위가 되어, 하나의 pod에 여러개의 container가 들어갈 경우 여러개의 container가 replication되기 때문입니다.
'쿠버네티스' 카테고리의 다른 글
Kubernetes : CRD (0) | 2025.03.09 |
---|---|
Kubernetes : Kustomize (0) | 2025.03.05 |
Kubernetes : Helm (0) | 2025.03.04 |
Kubernetes : Network (0) | 2025.03.03 |
Kubernetes : Scheduler (0) | 2025.02.01 |