쿠버네티스는 컨테이너 오케스트레이션 영역에서 사실상 표준이 되었다. 모든 애플리케이션은 향후 쿠버네티스에서 개발되고 실행될 것이다. 이 기사 시리즈의 목적은 쿠버네티스의 기본 구현 원칙을 심오하고 간단한 방법으로 소개하는 것이다.
쿠버네티스는 클러스터 스케줄링 시스템이다. 이 기사는 주로 쿠버네티스의 이전 클러스터 스케줄링 시스템 아키텍처를 소개한다. 그들의 디자인 아이디어와 아키텍처 특성을 분석함으로써 클러스터 스케줄링 시스템 아키텍처의 진화 과정과 아키텍처 디자인에서 고려해야 할 주요 문제를 연구 할 수 있습니다. 이는 쿠버네티스 아키텍처를 이해하는 데 매우 도움이 될 것이다.
우리는 분명히하기 위해,클러스터 스케줄링 시스템의 기본 개념 중 일부를 이해할 필요가,나는 예를 통해 개념을 설명의 우리가 분산 크론을 구현하고자한다고 가정 할 것이다. 이 시스템은 리눅스 호스트 세트를 관리합니다. 사용자는 시스템에서 제공하는 작업을 통해 작업을 정의합니다. 시스템은 작업 정의를 기반으로 해당 작업을 주기적으로 수행합니다.이 예에서는 기본 개념이 아래에 있습니다:
클러스터:이 시스템에서 관리하는 리눅스 호스트는 작업을 실행할 리소스 풀을 형성합니다. 이 리소스 풀을 클러스터라고 합니다.
작업:클러스터가 작업을 수행하는 방법을 정의합니다. 이 예에서 크론탭은 정확히 어떤 시간(시간 간격)에 수행해야 할 작업(실행 스크립트)을 명확하게 보여주는 간단한 작업입니다.일부 작업의 정의는 여러 작업에서 완료할 작업의 정의,작업 간의 종속성 및 각 작업의 리소스 요구 사항과 같이 더 복잡합니다.
작업:작업을 특정 성능 작업으로 예약해야 합니다. 매일 밤 오전 1 시에 스크립트를 수행하는 작업을 정의하면 매일 오전 1 시에 수행되는 스크립트 프로세스가 작업입니다.
클러스터 스케줄링 시스템을 설계 할 때 시스템의 핵심 작업은 두 가지입니다:
작업 예약: 클러스터 스케줄링 시스템에 작업을 전송한 후에는 제출된 작업을 특정 실행 작업으로 나누어야 하며 작업의 실행 결과를 추적 및 모니터링해야 합니다. 분산 크론의 예에서,스케줄링 시스템은 적시에 동작의 요구 사항에 따라 프로세스를 시작할 필요가있다. 프로세스가 수행되지 않으면 재시도가 필요합니다. 이러한 하둡지도와 같은 일부 복잡한 시나리오가 감소,스케줄링 시스템은지도가 대응하는 여러 맵으로 작업을 줄이고 작업을 줄이고,궁극적으로 작업 실행 결과 데이터를 얻을 분할 할 필요가있다.
리소스 스케줄링:기본적으로 태스크 및 리소스를 일치시키는 데 사용되며 클러스터에 있는 호스트의 리소스 사용에 따라 태스크를 실행하기 위해 적절한 리소스가 할당됩니다. 이는 운영체제의 스케줄링 알고리즘의 프로세스와 유사하며,자원 스케줄링의 주요 목표는 자원의 고정된 공급 조건 하에서 가능한 한 자원 이용률을 향상시키고 태스크의 대기 시간을 감소시키고,태스크 또는 응답 시간의 지연을 감소시키는 것이다(일괄 태스크인 경우,태스크 작업의 시작부터 끝까지의 시간을 가리키며,웹 애플리케이션과 같은 온라인 응답 타입 태스크인 경우,요청에 대한 각각의 응답 시간을 가리킨다). 가능한(자원은 모든 작업에 공정하게 할당됩니다). 이러한 목표 중 일부는 상충되며 자원 활용,응답 시간,공정성 및 우선 순위와 같이 균형을 유지해야합니다.
맵 축소는 병렬 컴퓨팅 모델의 일종이다. 하둡은 병렬 컴퓨팅 클러스터 관리 플랫폼의 종류를 실행할 수 있습니다. 지도의 첫 번째 세대 버전은 하둡 플랫폼의 작업 스케줄링 엔진을 줄일 수 있습니다. 사용자가 계산을 줄이고 하둡에 제출 맵을 정의 할 때 즉,클러스터에서 작업을 예약 및 실행을 담당하고,계산 결과로 돌아갑니다. 여기에 다음과 같은 아키텍처가 있습니다: