node, cluster, k8s ..
한마디로 정의하자면!
클러스터는 노드의 집합이며, 쿠버네티스는 이러한 클러스터를 관리하고 운영하는 도구라고 할 수 있다.
클러스터 (Cluster)
- 여러 서버나 노드를 그룹화하여 하나의 시스템처럼 작동하도록 구성한 것
- 클러스터를 통해 애플리케이션의 가용성과 확장성을 높일 수 있음.
- 일반적으로 클러스터는 로드밸런싱, 내결함성, 장애조치 등 기능을 제공한다.
- 클러스터 내의 모든 노드는 협력하여 작업을 수행하고, 문제가 발생할 경우 다른 노드가 이를 이어받아 작업을 계속 함
노드 (Node)
- 클러스터 내의 개별 컴퓨터나 서버를 의미함.
- 각 노드는 자원을 제공하며, 일반적으로 cpu, 메모리, 저장소와 같은 컴퓨팅 자원을 포함한다.
- 워커노드(worker node), 마스터노드(Master node)로 나뉨
워커노드 : 실제 애플리케이션 컨테이너가 실행되는 서버
마스터노드 : 클러스터의 전체적인 관리를 담당. 클러스터 상태를 모니터링하고 워커노드에 작업을 할당함
쿠버네티스 (Kubernetes)
- 컨테이너화 된 애플리케이션을 관리하는 오픈소스플랫폼
- 클러스터 내에서 애플리케이션의 배포, 확장, 관리 등을 자동화함
- 컨테이너 조정 (orchestration) : 여러 노드에 걸쳐 컨테이너를 배포하고 관리. 애플리케이션의 스케일과 가용성 보장
- 자동화된 롤아웃 및 롤백 : 새로운버전을 자동으로 배포하거나 문제가 발생할 경우 이전 버전으로 롤백 할 수 있음
- 서비스 디스커버리 및 로드밸런싱 : 클러스터 내의 서비스를 효과적으로 라우팅하고 로드밸런싱하며, 외부 트래픽을 클러스터로 안전하게 노출함
- 자원관리 : 노드의 자원을 기반으로 실제 실행되는 컨테이너의 수를 자동으로 조정하여 효율적인 자원 사용을 보장함
로드밸런싱 (Load Balancing)
- 여러 서버(노드)에 걸쳐 네트워크 트래픽을 효율적으로 분산시키는 기술을 의미
쿠버네티스에서 Router 설정을 통해 임의의 도메인을 발급 받는다?
- 쿠버네티스 클러스터 내부에서 서비스를 외부로 노출시키기 위해 ingress리소스 또는 LoadBalancer 서비스를 사용하여 도메인 이름을 지정하거나 관리하는것을 뜻한다.
- 쿠버네티스에서 Ingress리소스를 사용해 서비스를 외부로 노출시키기 위해 Ingress Controller가 필요함
Ingress Controller는 클러스터 내 여러 서비스에 대한 HTTP 및 HTTPS 경로를 정의하고, 요청을 해당 서비스로 라우팅 하는 역할을 함.
특정환경에서는 Nginx, Traefik, HAPorxy 와 같은 ingress Controller를 사용할 수 있다.
Ingress 리소스를 정의하여 사용자 정의 도메인을 설정할 수 있다. 이 리소스 내에는 요청할 도메인 이름과 요청을 처리할 서비스간의 매핑을 정의할 수 있다.