Home 쿠버네티스란?
Post
Cancel

쿠버네티스란?

쿠버네티스란?

쿠버네티스가 왜 필요한가

배포해야할 마이크로서비스가 많아 지면?
수많은 마이크로서비스를 여러 서버에 효율적으로 배치하는 것은 어렵다

도커를 이용한 애플리케이션 배포

  • 개발 서버에서 개발 후 이미지 build
  • 도커 이미지 레지스트리 서버에 push
  • 운영 서버에서 pull 후 실행

쿠버네티스 기능들

  • 자동화된 빈 패킹(bin packing)

    컨테이너화된 작업을 실행하는 데 사용할 수 있는 쿠버네티스 클러스터 노드를 제공한다. 각컨테이너가필요로하는CPU와메모리(RAM)를 쿠버네티스에게 지시한다. 쿠버네티스는 컨테이너를 노드에 맞추어서 소스를 가장 잘 사용할 수 있도록 해준다.

  • 자동화된 복구(self-healing)

    쿠버네티스는 실패한 컨테이너를 다시 시작하고, 컨테이너를 교체한다. ‘사용자 정의 상태 검사’에 응답하지 않는 컨테이너를 죽인다. 서비스 준비가 끝날 때까지 일련의 과정을 클라이언트에 보여주지 않는다.

  • 자동화된 롤아웃과 롤백

    쿠버네티스를 사용하여 배포된 컨테이너의 원하는 상태를 서술할 수 있다. 현재 상태를 원하는 상태로 설정한 속도에 따라 변경할 수 있다. 쿠버네티스를 자동화해서 배포용 새 컨테이너를 만들고, 기존 컨테이너를 제거하고, 모든 리소스를 새 컨테이너에 적용할 수 있다.

데이터 일관성을 위한 낙관적 동시성 제어(resourceVersion)

  • 리소스 버전을 통하여 제어
    • 사용자1과 사용자2가 v1을 조회
    • 사용자1이 v1을 수정하여 v1.1로 저장하면
    • 사용자2는 v1상태에서 수정한 내용을 반영할 수 없다.

kubernetes 개념

  • 공유 영구 저장소에 직접 접근 불가
    • 더 높은 수준의 추상화를 위해 REST API를 통해서만 접근 가능
  • 주요 설계목표는 컨테이너로 향상된 리소스 활용의 이점을 누리면서도 복잡한 분산시스템을 쉽게 배포하고 관리할 수 있게 만드는 것이었다

  • 여러 개의 컨테이너화된 애플리케이션을 여러 서버(쿠버네티스 클러스터)에 자동으로 배포, 스케일링 및 관리해 주는 오픈소스 시스템

클러스터

  • 여러 개의 서버를 하나로 묶은 집합, 하나의 서버처럼 동작
  • 서버를 추상화

  • 애플리케이션 컨테이너를 배포하기 위한 서버 집합
    • server(node) server(node) server(node) 를 하나의 집합으로

Master 노드의Control Plane(제어판)

클러스터의 상태를 저장하고 관리하는 서버

  • etcd (key-value data store) 영구저장소 클러스터에 배포된 애플리케이션 실행 정보를 저장
  • API Server 클러스터 상태 조회, 변경을 위한 API 인터페이스 제공
  • Scheduler
  • Controller Managers

Worker 노드

컨테이너 실행을 담당

  • Kubelet, Container Runtime (Docker, …)
  • kube-proxy

‘쿠버네티스에 애플리케이션 컨테이너를 배포한다’ 란?

쿠버네티스 오브젝트 Manifest 파일을 작성해서 마스터 노드에있는 API Server에게 요청을 보내는 행위

  • Manifest 파일이란?
  • 쿠버네티스 오브젝트를 생성하기 위한 필수 정보
  • “일을 시키기 위한 지시서”
This post is licensed under CC BY 4.0 by the author.