Kubernetes introduction

 

Remark

본 글은 초보를 위한 쿠버네티스 안내서의 내용을 정리한 글입니다.


1. 쿠버네티스 시작하기

1.1 서버 관리를 잘하는 것이란?

  • 서버의 상태를 관리
  • CHECK, puppet labs, ANSIBLE: 코드로 서버 설정 관리 도구
    서버 설정이 복잡해질수록 난이도가 높아져 관리하기 어려움
  • 가상머신
    조금 느리긴하지만 관리가 쉬우나 클라우드 환경에 적합하지 않음
  • Docker
    모든 실행환경을 container로. 어디서든 동작하고 쉽고 효율적
    그러나 [Develop -> Build -> Ship -> Run] 과정이 반복되어 수많은 App들을 관리하기 어려움

1.2 도커 그 이후

  1. Container 배포(deployment)는 어떻게 할까?
    각각의 container를 따로따로 관리하는 것이 어려움
  2. 서비스 검색(service discovery)는 어떻게 할까?
    여러 개의 web server를 띄울 경우, proxy server가 web을 가리키는 대신 각 web server에 부하를 조절해주는 LoadBalancer를 가리키게 하면 어느정도 처리가능하나 여전히 많은 web server에 대하여 불편한 부분이 존재
  3. 서비스(gateway) 노출은 어떻게 할까?
  4. 서비스 이상, 부하 모니터링은 어떻게 할까?
    Container 중 일부에 문제가 생길 경우 확인할 수 있는 모니터링이 필요

따라서, 복잡한 컨테이너 환경을 효과적으로 관리하기 위한 도구가 필요
Container Orchestration

1.3 컨테이너 오케스트레이션

  1. Container(node)들을 cluster로 관리
    • 중앙제어(master-node): master-node에만 명령을 내리면 master-node가 cluster에 명령을 하달
    • 네트워킹: cluster 내부의 node들은 네트워크 통신이 원활히 되어야 함
    • 노드 스케일: cluster를 이루는 node의 개수가 많아도 잘 동작해야 함
  2. State: 상태 관리
  3. Scheduling: 배포 관리
    각 server의 resource를 모니터링하고 가장 적절한 server에 app을 배포
  4. Rollout, rollback: 배포 버전관리
    Cluster 단위로 버전을 관리
  5. Service discovery
  6. Volume: 볼륨 스토리지

→ Docker swarm, Kubernetes 등의 컨테이너 관리도구가 존재

2. 왜 쿠버네티스인가?

2.1 쿠버네티스 소개

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

  • 오픈소스
  • 엄청난 인기 (운영의 84%가 k8s를 사용)
  • 무한한 확장성
  • 사실상의 표준

2.2 쿠버네티스 아키텍쳐

3. 도커 실습

4. 쿠버네티스 실습