Section11 : Kubernetes 시작하기

tein·2022년 8월 28일
0

도커 & 쿠버네티스

목록 보기
12/14

도커와 쿠버네티스에 관한 섹션

  • 쿠버네티스는 추가 도구
  • 실제로 도구는 아니지만 프레임워크, 개념 모음, 표준이라 할 수 있다.
  • 우리가 사용하는 클라우드 프로바이더와 상관없이 컨테이너 오케스트레이션과 대규모 배포에 도움이 되는 도구이자 표준 모음이자 프레임워크

  • 컨테이너를 배포할 때 직면할 수 있는 문제 이해
  • 쿠버네티스가 이러한 문제를 해결하는데 어떻게 도움이 될 수 있는지
  • 쿠버네티스가 정확히 무엇이고, 왜 사용하는지, 쿠버네티스 핵심 개념과 구성 요소 탐색

수동 배포의 더 많은 문제점들

  • EC2 인스턴스에서 컨테이너를 수동으로 실행하면 다른 문제들을 직면할 수도 있다.
    • 컨테이너 충돌 / 다운
      -> 새 컨테이너로 교체해야 한다.
    • 컨테이너화된 애플리케이션 내부에서 문제 발생
      -> 무언가 실패 할 수 있음
      -> 결국 전체 컨테이너가 충돌하여 사용할 수 없게 됨
  • 이런 일이 발생하면 애플리케이션을 재실행 하여 새 컨테이너로 교체해야한다.
  • EC2 인스턴스에서 수동으로 컨테이너를 실행한다면 충돌이 발생할 때마다 수동으로 모니터링하고 수동으로 컨테이너를 재시작 해야한다.
  • 하루 종일 로그를 보거나, 문제가 있는지 확인하고, 매번 컨테이너를 다시 시작할 수 없음
  • 문제가 없더라도, 트래픽 급증시 더 많은 컨테이너 인스턴스가 필요
    • 동일한 컨테이너가 여러번 실행되는 경우, 들어오는 트래픽을 균등하게 분할하여 한 컨테이너가 모든 작업을 수행하지 않도록 해야 한다.
    • 워크로드 또는 트래픽의 증감에 따라 컨테이너 인스턴스의 수도 증감해야 한다.

왜 Kubernetes인가?

쿠버네티스는 위의 문제를 해결하는데 도움이 된다.
쿠버네티스로 배포하는 방식, 컨테이너 스케일링, 컨테이너가 실패할 경우의 모니터링 하는 방법과 컨테이너를 교체하는 방법을 정의할 수 있다.

사용하려는 서버가 쿠버네트스 구문을 이해할 수 있고, 실행할 수 있다면

  • 프로바이더에 관계 없이 쿠버네티스 구성파일을 사용할 수 있다.
  • 지원하지 않는 경우에도 자체 머신에 특정 쿠버네티스 소프트웨어를 수동으로 설치하여 소프트웨어의 구성 파일을 활용할 수 있고 이해할 수 있다.
  • 특정 클라우드 프로바이더에 특화된 옵션을 실제로 이 구성 파일에 병합할 수 있다.

Kubernetes가 정확히 무엇인가?

  • 오픈 소스 시스템
  • 컨테이너 배포 관리
  • 컨테이너를 오케스트레이션 하기 위한 사실상의 표준
  • 자동 배포, 스케일링, 로드 밸런싱, 일반적인 배포와 컨테이너 관리와 같은 태스크를 수행하는데 도움
  • 컨테이너 모니터링, 컨테이너 다운시 교체 하는 것에 도움

쿠버네티스가 아닌 것이 몇 가지 존재한다.

  • 쿠버네티스는 클라우드 서비스 프로바이더가 아니다.
  • 쿠버네티스는 AWS 또는 Microsoft Azure의 대안이 아니다.
  • 클라우드 서비스 프로바이더가 제공하는 서비스가 아니다.
  • 특정 클라우드 프로바이더나 특정 서비스에 국한되지 않는다.
  • 도커의 대안이 아니다.
    대신 도커 컨테이너와 함께 작동하여 컨테이너를 어디에나 배포할 수 있다.
  • 유료 아님

Kubernetes: 아키텍처 & 핵심 개념

master

  • 노드를 제어하고 전체 클러스터를 관리해주는 컨트롤러
  • 전체적인 제어/관리를 하기 위한 관리 서버

Node

  • 컨테이너를 실행
  • 컨테이너가 배포될 물리 서버 or 가상 머신
  • worker node라고도 부름
  • 여러개의 Pod를 가질 수 있음

Pod

  • 컨테이너가 모인 집합체의 단위
  • 적어도 하나 이상의 컨테이너 포함

Kubernetes는 인프라를 관리하지 않는다

워커 노드 자세히 살펴보기

  • 워커 노드는 단순히 우리의 머신, 컴퓨터, 어딘가에서 실행 중인 ec2 인스턴스
  • 워커노드는 마스터 노드에서 관리
  • 워커 노드 내부에 포드가 있고, 포드는 하나 이상의 애플리케이션 컨테이너와 컨테이너에 속한 모든 리소스 호스팅
  • 포드 자체는 마스터 노드, 즉 쿠버네티스에 의해 관리됨
    • 쿠버네티스는 포드를 생성하거나 삭제할 수 있음
  • 일반적으로 워커 노드에 둘 이상의 포드가 실행됨

마스터 노드 자세히 살펴보기

  • 마스터 노드 내부에서 가장 중요한건 API 서버
    • 워커와 마스터 노드 간의 통신을 위한 카운터 파트(대응자)
  • 스케쥴러
    • 포트 관찰
    • 새 포드가 생성되어야 하는 워커 노드 선택
    • 워커 노드에 무엇을 알려야 하는지 API 서버에 알리는 역할
  • 큐브 컨트롤러 매니저
    • 워커 노드 전체 감시, 제어
    • 적당한 수의 포드를 가동 중에 있는지 확인
    • 스케줄러 및 API와 연동
  • 클라우드 컨트롤러
    • 큐브 컨트롤러 매니저와 동일한 작업 수행하지만
    • 클라우드 프로바이더에 따라 다름
    • 클라우드 프로바이더에게 무엇을 해야하는지 알려줌

중요 용어 & 개념

클러스터

노드 머신, 마스터, 워커 노드, 배포 혹은 원하는 최종 상태를 구성하는 모든 것의 컬랙션 세트

노드

  • 하나 또는 여러 개의 포드를 호스팅하는 특정 하드웨어 용량 가진다.
  • 클러스터와 통신하거나 클러스터 내에서 통신하는 물리적인 머신 (혹은 가상 머신)

마스터 노드

  • 모든 워커 노드를 걸쳐 포드를 관리하는 컨트롤 플레인을 가짐

워커 노드

  • Hosts Pods, running App Containers(+ resources)

Pod

  • 애플리케이션 컨테이너와 요구 리소스가 포드라는 유닛으로 결합됨을 의미
  • 컨테이너를 감싼 껍질(shell)
  • 컨테이너를 시작, 관리
  • 포드 자체는 마스터 노드에 의해 관리됨
  • 포드가 생성되는 것은 포드에서 컨테이너를 실행하는 것과 같음

컨테이너

  • 포드가 컨테이너를 실행한다 == 포드가 내부적으로 'docker run' 명령을 실행한다는 것을 의미

Service

  • 논리적 세트
  • 고유한 포드 및 컨테이너에 독립적인 IP주소를 가진 포드 그룹
  • 쿠버네티스 세계에서 특정 포드를 외부 세계에 노출하여 특정 IP 주소 또는 도메인으로 특정 포드에 연결할 수 있도록 하는 용어
profile
내 시행착오 모음집

0개의 댓글