[따배쿠] 1. Kubernetes 소개

( 참고 : 따배쿠 https://www.youtube.com/watch?v=6n5obRKsCRQ&list=PLApuRlvrZKohaBHvXAOhUD-RxD0uQ3z0c )

Contents

  1. Container & Docker
  2. VM & Container
  3. Container 동작 구조
  4. Orchestration (오케스트레이션)
  5. kubernetes.io


1. Container & Docker

도커 파일 복습

FROM node:12
COPY app.js /app.js
ENTRYPOINT ["node","app.js"]

위와같이, 도커 파일로 도커 이미지를 만든 뒤 컨테이너를 실행할 수 있다


Docker container 실행 과정 간단 요약

  • (추천 : Linux 운영체제 위에) docker 설치

  • (docker hub 혹은 private registry에서/로부터) docker image push & pull

    docker pull smlinux/nodeinfo:v1
    docker create --name app -p 80:8080 smlinux/nodeinfo:v1
    docker start app
    


2. VM & Container

Container의 주 목적 : DEPLOY(배포)

figure2

( https://seunghan96.github.io/docker/%EC%95%8C%EB%8F%84%EC%BB%A41/ 참고하기 )


3. Container 동작 구조

docker 플랫폼 위에..

  • web 서버
  • python 기반 서비스
  • node js 기반 서비스

등등을 올려놓았다. 그런데 만약 시스템이 다운된다면…

figure2


멀티 호스트 도커 플랫폼을 만들어주자!

  • 분산되게 운영해주자! ( 어느 하나 고장날 수도 있으니 )

figure2


그런데, 어떠한 컨테이너를 어떠한 호스트에..?

일일히 관리해야하나?ㅠㅠㅠ

$\rightarrow$ NO! use Orchestration


4. Orchestration (오케스트레이션)

컨테이너 오케스트레이션

​ = 애플리케이션들을 가장 적합하게 호스트에 잘 배치시켜주기!


지휘자(=control plane)가 어떻게하면 애플리케이션을 잘 배치하는지 컨트롤한다!

  • 특정 worker node 다운 시, 다른 쪽으로 옮겨주고 등등…
  • 워커노드 총괄관리!

figure2


이에 가장 대표적인 것이 바로 KUBERNETES 이다


5. Kubernetes.io

Kubernetes ( 그리스어 : 조타수 )

  • 컨테이너화된 애플리케이션을 자동으로 배포하고, 스케일링하고, 관리해줌
  • 특징
    • 워크로드를 분리시켜준다
    • 어디서나 실행 가능하다 ( On-premise, Public Cloud 등 )
    • 선언적 API :
      • control plane에게 “나 웹서버 3개 실행해줘”로 요청(선언)
      • 이거만으로 끝! 나머지는 kubernetes가 알아서 판단해서 worker node들에 적절히 배치한다 ( + 오류난 것 / 재배치 등 모두 알아서 해줌 )


Kubernetes.io

  • 쿠버네티스의 공식 webpage

  • Kubernetes = K8s

    ( K와 s 사이에 8개의 글자)