01. Kubernetes 이론

로로·2023년 9월 3일

Kubernetes란❓

컨테이너를 쉽고 빠르게 배포/확장하고 관리를 자동화해주는 오픈소스 플랫폼
Kubernetes = 컨테이너 오케스트레이션

컨테이너 오케스트레션이란❓
컨테이너를 도커 플랫폼에 올려서 관리, 운영, 클러스터 서비스 지원
여러 대의 컨테이너들을 지휘(관리)
컨테이너의 배포, 관리, 확장, 네트워킹을 자동화하는 것


🔸 k8s를 공부하기 전에 ; 컨테이너 & 도커

준비 환경 : OS(ex. 리눅스), 컨테이너 플랫폼(ex. 도커)

1️⃣ 컨테이너 생성
2️⃣ 컨테이너 저장소에 저장
3️⃣ 컨테이너 다운로드
4️⃣ 컨테이너 실행


1. 컨테이너 생성
node.js 위에서 app.js 를 돌릴 수 있음

Dockerfile

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

=> 미리 노드 12 환경 생성 -> app.js 를 올린 것

2. 그렇다면 이 컨테이너를 어떻게 동작하지?

  • 플랫폼이 필요! => 로켓, 도커 컨테이너 플랫폼을 구성하면 됨
    도커 데몬 스타트 => 도커 플랫폼 생성 완료

컨테이너 빌드/실행
1. 컨테이너 build -> 하드디스크에 생성
2. docker hub push 도커 레포지토리로 푸쉬
3. docker pull -> 하드디스크에 다운로드
4. docker create --name app -p 80:8080 smlinux/nodeinfo:v1 -> 80 포트로 들어오면 8080으로 forwarding
5. docker start -> 컨테이너 동작


🔸 k8s를 공부하기 전에 ; 가상머신 vs 컨테이너

가상머신
가상머신

  • 각각 어플리케이션을 가상머신으로 나누어서 사용
  • 인프라의 리소스를 효율적으로 사용 가능
  • 버티컬 스케일 업이 아닌 스케일 아웃 필요!

컨테이너

  • 컨테이너 애플리케이션 하나하나 나누고 도커플랫폼 위에 올림

가상머신보다 컨테이너가 왜 필요한데??

1️⃣ nginx 웹 서버 100mb 어플리케이션이 돌아가고 있으면, os 1~3gb 필요
가상머신을 복제해야함
👉🏻 컨테이너는 웹서버 + 웹 콘텐츠만 있어서 100mb 만 복제하면 되기때문에

컨테이너가 훨씬 가볍고, 빠르게 축소 확장 가능
주목적 : 배포(deploy)


2️⃣ 도커 플랫폼이 다운되어버리면?
docker를 여러대 실행 필요 => but, 여러대의 컨테이너를 많이 어려움!

=> 멀티호스트 도커 플랫폼
오케스트레이션

kubernetes.io
CNCF(Clout Native Computing Foundation)


MSA에서 왜 k8s를 사용해야해?

msa라면 서비스 별로 컨테이너를 구분함
서비스 별로 동시 배포가 되어야 함
핵심 컨테이너가 죽으면 빠르게 재시작 필요 -> k8s가 알아서 살려냄!


profile
청로하~🏝️

0개의 댓글