본문 바로가기
개발공부 개발새발/Kubernetes

Kubernetes ) 쿠버네티스가 뭐냐~면

by 휴일이 2024. 4. 17.

쿠버네티스

도커 프레임워크, 개념 모음, 표준 → 컨테이너 오케스트레이션과 대규모 배포에 도움이 되는 도커 도구

컨테이너화된 애플리케이션의 배포, 확장 및 관리 자동화를 위한 오픈 소스 시스템

 

여러 머신을 위한 Docker-compose → 다중 머신 설정에서 사용하는 Docker-compose 라고 생각해보자.

수동 배포의 문제점들..

  1. 컨테이너가 충돌하거나 다운될 수 있고, 새 컨테이너로 교체해야 함.
    1. 애플리케이션 내부에서 문제가 있을 경우 전체 컨테이너 충돌..
  2. 충돌이 있을 때마다 수동으로 확인하고 관리해야 함.
  3. 트래픽 급증하면 더 많은 컨테이너가 필요할 수 있음.
    1. 실행 중인 컨테이너 인스턴스에 균등하게 분산하고 싶음.

그래서 쿠버네티스 왜 씀?

  • 컨테이너 상태 자동 확인
    • 컨테이너가 계속 실행되고 있는지 확인
    • 컨테이너 충돌하면 자동으로 다시 시작 가능.
  • 들어오는 트래픽 급증을 처리하기 위해 인스턴스
  • 로드밸런서로 변경되지 않는 도메인 제공

→ 요것들을 다 도와준다 ㄷㄷㄷ

 

💡 배포에 대한 표준화된 방식을 갖출 수 있음 😊

 

아키텍쳐

컨테이너 → 포드 Pod

  • 쿠버네티스에서의 가장 작은 단위, 컨테이너를 보유함.
  • 컨테이너를 실행함

워커 노드

  • 포드가 실행되는 머신, 가상 인스턴스 (Like EC2 인스턴스)
  • 컴퓨터라고 생각하면 됨.
  • 동일한 워커 노드에서 둘 이상의 포드 실행 가능
  • 큰 서비스라면 다른 포드를 실행할 수 있는 둘 이상의 워커 노드 존재. (컨테이너 스케일링 포함)

프록시

  • 쿠버네티스가 워커노드의 포드 네트워크 트래픽 제어를 설정하는 도구
  • 포드가 인터넷에 연결 가느한지? 컨테이너를 외부에 어떻게 접근시키는지? 제어

마스터 노드

  • 컨테이너, 포드를 만들고 교체하거나 종료하는 역할
  • 한 마디로, 워커 노드와 상호작용하는 컨트롤 센터
    • 컨트롤 플레인으로 워커 노드 관리

컨트롤 플레인

  • 마스터 노드에서 실행되는 다양한 서비스의 다양한 도구 모음

이 모든 것이 클러스터를 생성, 연결된 하나의 네트워크 생성한다.

  • 마스터 노드가 클라우드 프로바이더 API 에 명령을 보냄
  • 클라우드 프로바이더(AWS) 에게 특정 리소스를 생성하고 이 최종 상태를 클라우드 프로바이더에 복제 요청
  • EC2, 로드밸런서, 네트워크 생성, 마스터 노드인 EC2 에서 쿠버네티스 / 쿠버네티스 툴을 실행하기 위해 이 네트워크에 속한 다른 EC2 인스턴스를 제어, 포드에서 컨테이너 실행

→ 뭔지 모르겠으니 일단 써보ㅏ야겠다.

워커 노드

EC2 인스턴스라고 생각하자.

  • 마스터 노드에서 관리
  • 워커 노드 내부에 포드가 있다.
    • 하나 이상의 애플리케이션 컨테이너와 컨테이너에 속한 모든 리소스(구성,볼륨) 호스팅
    • 하지만 포드 자체는 마스터 노드(쿠버네티스)에 의해 관리 됨.
  • 포드에 속한 내부의 컨테이너를 실행하고 관리.
    • 하나의 포드에 여러 컨테이너가 있을 수도 있음. (추가 리소스도)
  • 하나의 워커 노드에 둘 이상의 포드가 있을 수도 있음. (트래픽 분산)
    • 또는 아예 다른 포드일 수도…
  • 도커 설치되어야 함. 컨테이너 생성도 하고 포드에 필요도 하니까.
  • kubelet 도 설치함. (워커-마스터 노드 통신 장치)
  • 프록시 서브 설치

마스터 노드

  • 마스터 노드에서 가장 중요한 건 API 서버
    • 워커 노드에서 실행되는 큐블렛 서비스에 대한 카운터 포인트, 마스터 노드 머신에서 실행되는 가단란 서비스
    • 워커, 마스터 노드간의 통신을 위한 대응자
  • 포드 관찰, 새 포드가 생성되어야하는 워커 노드를 선택하는 일을 담당하는 스케쥴러 소속
  • 큐브 컨트롤러 매니저
    • 워커 노드 전체를 감시하고 제어 적당한 수의 포드 가동 중에 있는지 확인
  • 클라우드 컨트롤러 매니저
    • 클라우드 프로바이더에 따라 걔네한테 뭘 해야되는지 알려줌 (AWS, Azure…)

중요 용어, 개념

클러스터

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

노드

하나 또는 여러개의 포드를 호스팅하는 하드웨어, 클러스터와 통신하거나 클러스터 내에서 통신하는 물리적인 또는 가상 머신 (걍 서버라고 생각하면 됨)

마스터 노드

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

워커 노드

실제로 포드를 호스팅하는 머신, 앱 커넽이너와 그거에 필요한 리소스들 실행

포드

애플리케이션 컨테이너, 요구 리소스를 합친 것, 컨테이너를 감싼 쉘, 마스터 노드에 의해 관리 됨.

→ 포드가 생성된다는 건, 포드에서 컨테이너를 실행하는 것과 같다… 포드가 내부적으로 docker run 을 실행함 ㅎㅎ

컨테이너

일반 도커 컨테이너

서비스

논리적 셋, 고유한 포드 및 컨테이너에 독립적인 IP 를 가진 포드 그룹. 포드에 접근하는데에 중요하고 안에 있는 컨테이너도 중요. 특정 포드를 외부에 노출해서 특정 IP 또는 도메인으로 특정 포드에 연결할 수 있도록 하는 용어.

728x90