기술나눔

Kubernetes(k8s) 아키텍처의 작동 방식

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

쿠버네티스 개요

  • 쿠버네티스(k8s): Google이 오픈소스로 제공하는 컨테이너 오케스트레이션 시스템입니다.
  • 이름 유래 : 쿠버네티스는 단어가 길어서 중간 8자를 생략하는 경우가 많아 k8s라고 부른다.
  • 애플리케이션 서비스와 서버 사이에 위치하며 정책을 통해 여러 애플리케이션 서비스를 조정하고 관리합니다.
  • YAML 파일 구성을 통해 자동 배포, 자동 재시작, 애플리케이션 자동 확장 및 축소가 구현됩니다.

쿠버네티스 아키텍처

  • 제어 평면: 클러스터의 두뇌에 해당하며 작업 노드를 관리하고 제어하는 ​​역할을 합니다.

    • 구성 요소는 다음과 같습니다:
      • API 서버: 서비스 자원 운영을 위한 API 인터페이스를 제공합니다.
      • 스케줄러: 리소스 일정 결정을 담당합니다.
      • 컨트롤러 매니저: 애플리케이션 서비스 생성 및 종료를 담당합니다.
      • 기타: 스토리지 계층으로 클러스터 상태 및 데이터를 저장합니다.
  • 작업 노드(Node): 클러스터의 손과 발에 해당하며 작업 실행과 응용 서비스 실행을 담당합니다.

    • 구성 요소는 다음과 같습니다:
      • 현물 상환 지불: k8s에서 가장 작은 스케줄링 단위인 컨테이너의 실행 중인 인스턴스입니다.
      • 쿠벨렛: Pod의 라이프사이클 관리를 담당합니다.
      • 컨테이너 런타임: Docker 등 컨테이너의 Life Cycle 관리를 담당합니다.
      • 쿠베 프록시: 노드의 네트워크 프록시 및 요청 전달을 담당합니다.

Kubernetes 핵심 개념

  • 무리: 제어 플레인과 여러 작업자 노드로 구성됩니다.
  • 컨테이너 이미지: 애플리케이션 코드와 종속 환경이 포함된 패키지 파일입니다.
  • 컨테이너: 애플리케이션 서비스의 실행 단위입니다.
  • 현물 상환 지불: 네트워크 및 스토리지 리소스를 공유하는 하나 이상의 컨테이너 모음입니다.

Kubernetes 운영 도구

  • 쿠벡틀(kubectl): k8s에서 제공하는 명령줄 도구는 k8s API와 상호 작용하고 서비스 배포 및 관리를 단순화하는 데 사용됩니다.

서비스 배포 및 호출 프로세스

  • 배포 서비스: YAML 파일을 작성하고 kubectl 명령을 실행하여 서비스를 배포합니다.
  • 서비스 호출: 외부 요청은 Ingress 컨트롤러를 통해 클러스터에 들어가고 Kube Proxy에 의해 해당 Pod로 전달됩니다.

쿠버네티스의 장점

  • 배포, 다시 시작, 확장을 자동화합니다.
  • 서비스 배포, 운영 및 유지 관리 프로세스를 단순화합니다.
  • 대규모 컨테이너 서비스 관리를 지원합니다.

요약하다

  • k8s는 컨트롤 플레인과 작업자 노드의 공동 작업을 통해 애플리케이션 서비스의 자동화된 관리 및 예약을 실현하는 강력한 컨테이너 오케스트레이션 도구입니다.
  • 컨트롤 플레인은 의사 결정 및 명령 발행을 담당하고 작업자 노드는 작업 실행 및 애플리케이션 실행을 담당합니다.
  • kubectl 도구를 통해 사용자는 k8s API와 쉽게 상호 작용하여 서비스를 신속하게 배포하고 관리할 수 있습니다.

질문

  • Docker와 k8s의 관계는 무엇입니까?