All about 쿠버네티스

sun1·2023년 11월 10일
0

CS

목록 보기
10/17
post-thumbnail

📢 쿠버네티스와 관련된 여러 용어를 정리하고 아키텍처, 오브젝트 등 쿠버네티스를 구성하는 여러 개념과 관계를 정리해보자!


❗ 쿠버네티스 공부할때 [ 쿠버네티스 시작하기 - Kubernetes란 무엇인가? ] 이 사이트를 제일 많이 이용하였다!


📌 클러스터 (Cluster)

✅ 컨테이너화된 애플리케이션을 실행하는 노드라고 하는 워커 머신의 집합으로 모든 클러스터는 최소 한 개의 워커 노드를 가진다.

즉, 多서버를 묶어서 1개처럼 작용한다.

  • 클러스터 공유 볼륨 (CSV) : 파드 간 DB를 공유하고 저장

기존의 컨테이너는 종료됨과 동시에 데이터를 함께 손실하는 것에 비해 CSV는 Data를 공유 저장 하므로 지속적으로 유지가 가능하다.


📌 파드 (Pod)

✅ k8s에서 운영하는 가장 작은 배포단위

파드는 하나 이상의 컨테이너를 포함하고, 이 컨테이너들은 동일한 네트워크 및 스토리지 공간을 공유하며, 함께 스케쥴링된다.

주로 파드 1개 당 컨테이너 1개로 구성된다. 파드와 컨테이너의 결합도를 낮추고, 각 컨테이너를 독립적으로 관리하고 확장할 수 있게 해서 시스템 전체의 유연성과 재사용성을 높이기 위해서다. 하지만 꼭 그래야 하는 것은 아니다.


📌 노드 (Node)

✅ 클러스터 환경에서 작업을 처리하는 워커머신 (컴퓨터)
클러스터 환경에서 실제 작업을 처리하는 컴퓨팅 리소스 (CPU, 메모리 등)

일반적인 물리적 컴퓨터일 수도 있고, 클라우드 컴퓨팅 환경에서의 가상 머신 인스턴스일 수도 있다.

즉, 컨테이너화된 애플리케이션을 실행하는 파드에 필요한 컴퓨팅 리소스(CPU, 메모리 등) 및 네트워크 인프라를 지원하며, 파드 간의 통신과 클러스터 외부와의 통신을 가능하게 한다.


💡 마스터 노드 / 워크 노드 구조

쿠버네티스는 전체 클러스터를 관리하는 마스터와 컨테이너가 배포되는 노드로 구성되어 있다. 모든 명령은 마스터의 API 서버를 호출하고 노드는 마스터와 통신하면서 필요한 작업을 수행한다. 특정 노드의 컨테이너에 명령하거나 로그를 조회할 때도 노드에 직접 명령하는 게 아니라 마스터에 명령을 내리고 마스터가 노드에 접속하여 대신 결과를 응답한다.


💡 파드 / 노드 / 클러스터 관계도


📌 서비스 (Service)

✅ 특정 파드에 대한 네트워크 접근을 추상화하는 API 오브젝트
일관된 IP 주소와 DNS 이름을 통해 파드 집합에 접근할 수 있게 해준다.

파드는 생성, 삭제 할 때마다 IP 주소가 변동 되는데 이때마다 변동된 IP 주소를 일관되게 접근할 수 없다. 따라서 서비스는 파드 집합에 대한 고정된 접근 포인트를 제공하는 오브젝트이다.

Eureka와 같은 서비스 디스커버리와 비슷한 개념이다. 다만, 쿠버네티스 서비스는 서비스 디스커버리뿐만 아니라 로드 밸런싱 기능도 포함하고 있다.


📌 인그레스 (Ingress)

✅ 클러스터 외부에서 내부로 들어오는 네트워크 트래픽을 관리하는 규칙의 집합

인그레스는 HTTP와 HTTPS 경로를 서비스에 매핑하므로, 외부 클라이언트가 클러스터 내부의 서비스에 접근할 수 있게 해준다. 이를 통해, 단일 IP 주소를 통해 여러 서비스에 접근할 수 있게 되며, 이는 로드 밸런서를 여러 개 생성할 필요를 줄여준다.

인그레스는 또한 SSL/TLS 인증서의 관리와, 도메인 기반의 가상 호스팅과 같은 고급 트래픽 라우팅 규칙을 지원한다.

  • 이러한 인그레스 규칙을 실제로 수행하는 것이 인그레스 컨트롤러 (Ingress Controller) 이다.

🔍 최종정리

0개의 댓글