클라우드 + DevOps/Kubernetes (k8s)

쿠버네티스 아키텍처 - 오브젝트 이론

gamjadori 2024. 4. 15. 17:12
728x90

<쿠버네티스 아키텍처 - 오브젝트 이론>

<Master>

  1. Master 상세 설명 - etcd
  • 모든 상태와 데이터를 저장하고 분산 시스템으로 구성하여 안전성을 높임 (고가용성)
  • 가볍고 빠르면서 정확하게 설계 (일관성)
  • Key - Valve 형태로 데이터 저장되며 TTL, watch같은 부가 기능 제공 백업
  1. Master 상세 설명 - API Server
  • 상태를 바꾸거나 저장하고 etcd와 유일하게 통신하는 모듈
  • REST API 형태로 제공되며 권한을 체크하여 적절한 권한이 없을 경우, 요청 차단
  • 관리자 요청 뿐만 아니라 다양한 내부 모듈과 통신이 수평으로 확장되도록 디자인
  1. Master 상세 설명 - Scheduler
  • 새로 생성된 Pod를 감지하고 실행할 노드 선택하는 역할을 수행하며 노드의 현재 상태와 Pod의 요구 사항 체크
  1. Master 상세 설명 - Controller
  • 논리적으로 다양한 컨트롤러 존재 (ex. 복제 컨트롤러, 노드 컨트롤러, 엔드포인트 컨트롤러)
  • 끊임 없이 상태를 체크하고 원하는 상태를 유지하며, 복잡성을 낮추기 위해 하나의 프로세스로 실행

<Node>

  1. Node 상세 설명- kubelet
  • 각 노드에서 실행되며 Pod를 실행 및 중지하고 상태를 체크하는 역할
  1. Node 상세 설명 - proxy
  • 네트워크 프록시와 부하 분산 역할을 실행하며 성능 상의 이유로 별도의 프록시 프로그램 대신 iptable 또는 IPVS를 사용 (설정만 관리)

<Pod>

  • 가장 작은 배포 단위로, 전체 클러스터에서 고유한 IP를 할당
  • 여러 개의 컨테이너가 하나의 Pod에 속할 수 있음

<ReplicaSet>

  • 여러 개의 Pod를 관리하고, 새로운 Pod는 Template를 참고해 생성
  • 신규 Pod를 생성하거나 기존 Pod를 제거해 원하는 수를 유지

<Deployment>

  • 배포 버전을 관리하고 내부적으로 ReplicaSet을 이용

<Service>

  1. Service 상세 설명 - Cluster IP
  • 클러스터 내부에서 사용하는 프록시
  • Pod는 동적이지만 서비스는 IP를 가지고, 클러스터 내부에서 서비스 연결은 DNS를 이용
  1. Service 상세 설명 - NodePort
  • 노드에 노출되어 외부에서 접근 가능한 서비스로 모든 노드에 동일한 포트로 생성

<Ingress>

  • 도메인 또는 경로별 라우팅 (Nginx, HAProxy, ALB 등)
  • 클러스터 외부에서 내부로의 HTTP 및 HTTPS 트래픽을 관리하고 경로 기반 라우팅을 제공 (클러스터 내부에 있는 서비스에 외부 요청을 라우팅하는 역할)

<쿠버네티스 일반적인 아키텍처>