✅ etcd

  • 클러스터 상태 정보를 저장하는 분산 키-값 저장소이다.
  • 모든 클러스터 데이터, 구성 및 상태를 유지하며, 고가용성일관성을 보장한다.
  • 이를 통해 클러스터의 각 구성 요소가 최신 상태를 공유하고 동기화할 수 있게 한다.
  • 마스터 노드에 위치해 있다.

✅ kube-apiserver

  • 중앙 관리 컴포넌트로, 클러스터의 모든 요청을 처리하는 API 게이트웨이이다.
  • 클라이언트와 컨트롤러가 클러스터의 상태를 조회하고 변경할 수 있도록 RESTful API를 제공한다.
  • 인증, 권한 부여, API 요청 유효성 검사를 수행하여 클러스터의 보안을 유지한다.
  • 마스터 노드에 위치해 있다.

✅ kube-scheduler

  • 워커 노드에게 자원 할당을 해주는 역할을 하며 가장 적절한 노드가 무엇인지 판단하여 적절하게 스케쥴링을 한다.
  • 관리자가 특정 노드에 스케줄링을 컨트롤 할 수 있도록 다양한 옵션들도 제공한다.
  • 마스터 노드에 위치해 있다.

✅ controller-manager

  • 쿠버네티스의 구성요소들을 (pod, deployment, service, etc) 컨트롤하는 각각의 컨트롤러들이 있으며 이 컨트롤러들을 관리하는 역할을 한다.
  • 각 컨트롤러는 클러스터의 상태를 원하는 상태로 유지하기 위해 특정 작업을 수행하며 kube-controller-manager는 이러한 컨트롤러들을 모아 하나의 프로세스로 실행한다.
  • 클러스터의 자동화를 책임지는 핵심 컴포넌트로 클러스터의 자가 치유(self-healing) 기능을 구현하는 데 필수적이다.
  • 마스터 노드에 위치해 있다.

✅ kubelet

  • 각 워커 노드에 에이전트로 설치되어 있고 파드 형태가 아닌 프로세스로 실행된다.
  • 파드를 관리하고, 컨테이너를 실행하며, 워커 노드의 상태를 API 서버에 보고한다.
  • 컨테이너 런타임과 통신하여 컨테이너를 시작하고 모니터링 및 헬스 체크를 수행하여 포드가 정상적으로 동작하는지 확인한다.
  • 워커 노드에 위치해 있다.

✅ kube-proxy

  • 각 워커 노드에 배포되어 네트워크 프록시 역할을 수행한다.
  • 서비스의 클러스터 IP와 포트를 설정하고, 트래픽을 적절한 포드로 라우팅하며 이를 통해 클러스터 내 서비스 간 통신을 원활하게 한다.
  • 워커 노드에 위치해 있다.

✅ container-runtime

  • 컨테이너들은 컨테이너 런타임 위에서 실행된다.
  • 쿠버네티스는 컨테이너 오케스트레이션이다. 그렇기 때문에 컨테이너 런타임이 필요하다.
  • 쿠버네티스는 CRI(컨테이너 런타임 인터페이스)를 제공하다. 이 규격에 맞는 런타임은 어떤것도 사용할 수 있다.
  • containerd,cri-o,docker 등의 컨테이너 런타임이 주로 사용된다.

✅ coreDNS

  • 각 파드 및 서비스는 자신만의 고유 아이피 주소를 가지고 있고 이 아이피 주소를 기반으로 서로 통신할 수 있다.
  • 하지만 이 내부 아이피 주소는 유동적이며 직접적인 아이피 주소를 지정하여 호출하는 것은 불안정하고 비효율적인 방법이다.
  • 이러한 문제를 해결해주는 것이 coreDNS이다. 각 아이피 주소를 정해진 규칙에 의해서 도메인 이름으로 치환해준다.
  • 장점은 아이피 주소가 변경되어도 동일한 도메인 이름으로 호출할 수 있게 되므로 안정적인 네트워크 통신이 가능하다.
profile
What a Beautiful World~ 🌏

0개의 댓글

Powered by GraphCDN, the GraphQL CDN