본문 바로가기
쿠버네티스 기타

쿠버네티스 아키텍처

by SAMSUNG CLOUD-OKY 2021. 5. 12.
반응형

실행중인 Kubernetes 클러스터에는 kubelet분산 스토리지 솔루션 위에 노드 에이전트 ( ) 및 마스터 구성 요소 (API, 스케줄러 등)가 포함됩니다. 이 다이어그램은 원하는 최종 상태를 보여 주지만 kubelet컨테이너 내에서 자체 (모든 구성 요소가 실제로) 실행되도록하고 스케줄러를 100 % 플러그 가능하게 만드는 것과 같은 몇 가지 작업을 계속하고 있습니다.

Kubernetes 노드

시스템의 아키텍처를 살펴보면 작업자 노드에서 실행되는 서비스와 클러스터 수준 제어 플레인을 구성하는 서비스로 분류됩니다.

Kubernetes 노드에는 애플리케이션 컨테이너를 실행하고 마스터 시스템에서 관리하는 데 필요한 서비스가 있습니다.

물론 각 노드는 Docker를 실행합니다. Docker는 이미지 다운로드 및 컨테이너 실행에 대한 세부 정보를 처리합니다.

kubelet

 kubelet관리 포드 과 용기, 자신의 이미지, 자신의 볼륨 등

kube-proxy

또한 각 노드는 간단한 네트워크 프록시 및로드 밸런서를 실행합니다 (자세한 내용은 서비스 FAQ 참조). 이는 각 노드의 Kubernetes API에 정의 된대로 (자세한 내용 은 서비스 문서services 참조)를 반영하며 백엔드 세트에서 간단한 TCP 및 UDP 스트림 전달 (라운드 로빈)을 수행 할 수 있습니다.

서비스 엔드 포인트는 현재 DNS 또는 환경 변수를 통해 찾을 수 있습니다 ( Docker-links 호환 및 Kubernetes {FOO}_SERVICE_HOST및 {FOO}_SERVICE_PORT변수 모두 지원됨). 이러한 변수는 서비스 프록시에서 관리하는 포트로 확인됩니다.

Kubernetes 제어 플레인

Kubernetes 제어 영역은 구성 요소 집합으로 분할됩니다. 현재는 모두 단일 마스터 노드에서 실행되지만 고 가용성 클러스터를 지원하기 위해 곧 변경 될 것으로 예상됩니다. 이러한 구성 요소는 함께 작동하여 클러스터에 대한 통합보기를 제공합니다.

etcd

모든 영구 마스터 상태는의 인스턴스에 저장됩니다 etcd. 이것은 구성 데이터를 안정적으로 저장할 수있는 좋은 방법을 제공합니다. 함께 watch지원, 조정 요소는 매우 신속하게 변경 알림을받을 수 있습니다.

Kubernetes API 서버

apiserver는 Kubernetes API를 제공합니다 . 대부분의 / 모든 비즈니스 로직이 별도의 구성 요소 또는 플러그인으로 구현 된 CRUD-y 서버용입니다. 주로 REST 작업을 처리하고 유효성을 검사하며 etcd(결과적으로는 다른 저장소) 의 해당 개체를 업데이트합니다 .

스케줄러

스케줄러는 /bindingAPI 를 통해 예약되지 않은 포드를 노드에 바인딩 합니다. 스케줄러는 플러그 가능하며 향후 여러 클러스터 스케줄러와 사용자 제공 스케줄러를 지원할 것으로 예상됩니다.

Kubernetes Controller Manager 서버

다른 모든 클러스터 수준 기능은 현재 컨트롤러 관리자가 수행합니다. 예를 들어, Endpoints객체는 엔드 포인트 컨트롤러에 의해 생성 및 업데이트되고 노드는 노드 컨트롤러에 의해 검색, 관리 및 모니터링됩니다. 이들은 결국 별도의 구성 요소로 분할되어 독립적으로 플러그 가능하게 만들 수 있습니다.

 replicationcontroller간단한의 상부에 적층하는 메커니즘입니다 pod API. 일단 구현되면 결국 일반 플러그인 메커니즘으로 포팅 할 계획입니다.

 

 

 

 

 

 

 

 

 

 

github.com/kubernetes/kubernetes/blob/release-1.5/docs/design/architecture.md

 

 

 

 

 

 

## 마스터와 노드의 내부 구조

 

 

## 쿠버네티스 코어 프로세스

- kubectl 

  : 쿠버네티스 클러스터를 조작하기 위한 도구로 이용되는 커맨드 라인 인터페이스

 

- kube-apiserver 

  : kubectl 등의 API 클라이언트로부터 오는 REST 요청을 검증하고, API 오브젝트를 구성하고 상태를 보고

 

- kubelet

  : 파드와 컨테이너의 실행

  : 파드와 노드의 상태를 API서버에 보고

  : 내장된 cAdvisor 를 통해 메트릭 수집 및 공개

 

- kube-proxy

  : 각 노드에 동작하며 로드밸런싱 기능을 제공

  : iptables 규칙을 관리

  : 서비스명과 ClusterIP를 내부 DNS에 등록

 

- coredns

  : 파드가 서비스 이름으로부터 IP주소를 얻기 위해 사용

 

 

 

 

 

## 애드온 컴포넌트

- kube-flannel 

  : 모든 노드에서 실행, 여러 노드 사이에서 IPv4 네트워크를 제공

  : 다른 노드에 있는 파드와 통신

  : 네트워크 접근 제어가 필요한 경우에는 calico를 사용

 

- calico-node 

  : 모든 노드에서 실행

  : 노드 간 파드의 통신, 라우팅, NW 접근관리 기능 제공

 

- metrics-server

  : K8s 클러스터 전체로부터 메트릭을 수집

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형

댓글