Develop/DevCourseTIL

06.16 데이터 엔지니어링 50일차 - container orchestration

향식이 2023. 6. 16. 14:16

container orchestration

  • 서버의 상태를 관리하기 위한 노력
  • 중앙제어 (master-node)
    • 클러스터 단위로 추상화해서 관리 
    • master server를 이용하여 관리자가 master server에 명령하면 master가 클러스터에 명령함
  • 상태 관리
    • ex. 컨테이너가 3개였으면 좋겠어 -> 하나가 죽으면 새로운 하나를 생성
  • 배포 관리
    • 여유로운 서버를 찾거나 생성하여 스케줄링을 할 수 있음
  • 배포 버전관리
    • 각 컨테이너들의 버전을 중앙에서 관리할 수 있음
  • 서비스 등록 및 조회
  • 볼륨 스토리지

kubernetes (k8s)

  • 컨테이너 기반 서비스 배포/스케일/관리 자동화를 해주는 오픈소스 프레임워크
    • 구글에서 사용하던 Borg 서비스를 오픈소스화함
    • 클라우드 on-prem 모두에서 잘 동작
    • 모든 컨테이너가 가능하지만 주로 docker container들이 대상이 됨
    • 물리서버나 가상서버 위에서 모두 동작
  • 지금은 Cloud Native Computing Foundation이라는 비영리 단체에서 운영
    • 클라우드 환경에서 어떻게 소프트웨어를 배포하는 것이 효율적일까?
      • 컨테이너, 서비스메시, 마이크로서비스, API, DevOps, On-demand Infra
  • 가장 많이 사용되는 컨테이너 관리 시스템
    • k8s위에 기능을 추가한 container orchestration 툴들이 생겨남
  • 확장성이 좋아서 다양한 환경에서 사용됨
    • 머신러닝: Kubeflow
    • CI/CD: Tekton
    • Service Mesh: Istio
    • Serverless: Kubeless
  • 다수의 서버에 컨테이너 기반 프로그램을 실행하고 관리
    • 컨테이너 기반 프로그램 == Docker Container
    • 보통 Docker와 k8s는 같이 사용됨
    • Pod: 같은 디스크와 네트워크를 공유하는 한 개 이상의 컨테이너들의 집합

Pod

  • k8s 사용자가 사용하는 가장 작은 빌딩 블록
  • 같은 pod 안에서는 디스크와 네트워크가 공유됨
  • pod는 네트워크 주소를 갖는 self-contained server

k8s 컴포넌트

쿠버네티스를 배포하면 클러스터를 얻는다. 

 

쿠버네티스 클러스터는 컨테이너화된 애플리케이션을 실행하는 노드라고 하는 워커 머신의 집합, 모든 클러스터는 최소 한 개의 워커노드를 가진다. 

 

워커 노드는 애플리케이션의 구성요소인 파드를 호스트한다. 컨트롤 플레인은 워커 노드와 클러스터 내 파드를 관리한다. 프로덕션 환경에서는 일반적으로 컨트롤 플레인이 여러 컴퓨터에 걸쳐 실행되고, 클러스터는 일반적으로 여러 노드를 실행하므로 내결함성과 고가용성이 제공된다. 

k8s 클러스터 구성요소

 

--아직 공부중--

반응형