개발과 잡지식

Kubernetes 02 - From Monolith to Microservices 본문

micro service/kubernetes(k8s)

Kubernetes 02 - From Monolith to Microservices

잘하고싶은잉여 2021. 1. 9. 11:00

Introduction to Kubernetes

출처 : https://courses.edx.org/courses/course-v1:LinuxFoundationX+LFS158x+3T2020/course/#block-v1:LinuxFoundationX+LFS158x+3T2020+type@chapter+block@48d68448eff24f02bcb78470dec9c6a1

Will Be Check

  • Define Kubernetes.
  • Explain the reasons for using Kubernetes.
  • Discuss the features of Kubernetes.
  • Discuss the evolution of Kubernetes from Borg.
  • Explain the role of the Cloud Native Computing Foundation.

Chapter 3. Kubernetes part 1

What is Kubernetes

쿠버네티스 공식 사이트에서 정의하길
쿠버네티스는 컨테이너화 된 애플라이케이션에 관한 자동 배포, 스케일링 그리고 관리하는 애플 라이 케이션

Kubernetes는 그리스어로 조타수 혹은 선박 조종사를 뜻합니다. 유추하자면 컨테이너화 된 애플라이케이션에 대한 조타수 혹은 조종사라고 보면 될 것 같습니다.

Kubernetes는 K와 S 사이에 8글자가 있어서 간편하게 k8s라고도 불립니다.

k8s는 구글에서 만든 GO라는 언어로 구글에서 사용되던 Borg라는 시스템에서 많은 영감을 얻어서 탄생했습니다.

From Borg to Kubernetes

앞서 말한 데로 Borg라는 시스템에서부터 알아봅시다.

구글의 Borg는 클러스터에 관한 매니저로

  • 클러스터 하나에는 천 개 넘는 머신이 있고
  • 천개 넘는 클러스터를 관리하며
  • 수 십만 개의 애플리케이션이 작동을 관리한다.

구글의 서비스(메일, 드라이브, 맵, 문서 등등)에서 적용되어 왔습니다.

이러한 Borg를 과거에 개발했던 개발자들이 현재 모여서 만들어진 게 k8s입니다.

Borg에서 영감을 많이 받은 k8s를 구성하는 객체들은 아래와 같습니다.

  • API servers
  • Pods
  • IP-per-Pod
  • Services
  • Labels.

이제 하나 한 알아가 봅시다. (바로는 아니고 천천히 ㅎㅎ)

Kubernetes Features 1

우선 쿠버네티스에서 완전하게 제공되는 서비스들은 아래와 같습니다.

  • Automatic bin packing :
    쿠버 네티스는 자동으로 스케줄합니다. 이는 자원의 필요성과 제한에 따라서 가용성에 피해 없이 사용성을 극대화 함을 뜻합니다.

  • Self-healing :
    쿠버네티스는 설정된 존재하는 rules/policy에 따라서 health check를 통해서 응답이 없는 컨테이너를 죽이고 재 시작합니다. 또한, 응답하지 않는 컨테이너는 라우터되지 않게해서 트래픽을 예방합니다. (라우터 하다 : 요청을 보내다)

  • Horizontal scaling :
    쿠버네티스는 애플래이케이션을 메뉴얼 대로, 자동으로 cpu와 사용자 지정 매트릭에 의해서 스케일 관리합니다.

  • Service discovery and Load balancing :
    쿠버네티스는 컨테이너에 ip 주소를 할당하는데, 컨테이너 세트들에 노드 밸렁싱을 돕기 위해서하나의 DNS(Domain Name System)을 부여합니다.

Kubernetes Feature 2

  • Automated rollouts and rollbacks

쿠버네티스는 애플리케이션에 관한 업데이트, 설정 변경, 지속적인 헬스 체크 모니터링으로 중단 없이 자연스러운 롤 아웃, 롤 백을 제공합니다.

  • Secret and configuration management

쿠버네티스는 각가의 컨테이너 이미지에 대해서 재 빌드를 피하기 위해서 컨테이너 이미지로 분리되어 있는 어플리케이션의 민감한 데이터 와 세세한 설정들을 관리합니다.

  • Storage orchestration

쿠버네티스는 컨테이너의 로컬 스토리지, 외부 클라우드 제공 업체, 분산된 스토리지, 네트워크 스토리지 시스템을 자동으로 SDS(software-defined storage) 설루션 마운트 합니다.

SDS : 데이터를 관리하여 멀티 클라우드 유연성을 활용할 수 있도록 소프트웨어와 데이터 스토리지 간에 소프트웨어 계층을 두는 방식.

  • Batch execution

쿠버 네티스는 오래 걸리는 jobs 그리고 실패한 컨테이너 관리에 있어서 배치 실행합니다.

무거운 데이터(작업)에 대해서 일괄 처리하는 일.
예를 들어서 엄청나게 많은 프로그램들이 자주 사용하는 데이터에 대해서 업데이를 하나하나에 해주는 게 아니라 한 번에 처리하는 일을 뜻한다고 보시면 되겠습니다.

내용이 길어져서 분할해서 올리겠습니다..