Cloud/Kubernetes

Kubernetes) Kubernetes 개요

Adım Kim 2022. 10. 7. 00:08

Application Archetecture

  1. Monolithic Architecture
    • application 전체가 하나의 운영체제 프로세스로 실행된다.
    • 하나의 객체로 개발, 배포, 관리를 담당한다.
    • 하나의 변경 사항을 적용하기 위해 전체를 다시 빌드/테스트/배포 해야한다.
  2. Microservice Architecture
    • 각 micro service는 독립적인 프로세스로 실행되며 API로 다른 miocro service와 통신한다.
    • 새로 추가되거나 변경 사항이 발생하면, 해당 서비스만 빠르게 빌드/테스트/배포 할 수 있다.
    • resource가 더 필요한 서비스만 별도 확장 가능하다.
    • Microservice Architecture의 구성요소는 독립적인 방식으로 개발한다.
    • 각 기능이 micro service 단위로 나뉘어저 구성요소의 수가 증가하고 micro service간의 종속성 관리가 어려운 단점이 있다.


실제 개발환경

  • 개발, 배포하는 구성요소와 상관없이 개발자와 운영자가 해결해야할 문제는 application 실행환경이 매번 다른 환경이라는 점이다.
  • 개발자는 새로운 기능, 사용자 경험 향상에 중요도를 두며, 운영자는 시스템 보안, 리소스 사용율 측면에 중요도를 둔다.
  • Kubernetes를 사용하면 개발자는 특정 인프라 관련 서비스를 application에 구현하지 않아도 되고 실제 기능개발에 집중할 수 있다.
  • Kubernetes를 사용하면 시스템 관리자(운영자)는 kubernetes가 application을 재배치하고 조합함으로서 리소스를 훨씬 효율적으로 관리할 수 있고 장애가 발생하더라도 자동으로 처리해준다.


Kubernetes 란?

  • container화된 application을 쉽게 배포/관리할 수있는 orchestraion 도구다.
  • 구글이 내부적으로 사용하던 container 관리도구를 오픈소스화 하여 공개한 container orchestration 도구다.
  • 현재는 CNCF 재단이 관리 운영한다.
  • kubernetes는 크게 마스터 노드, 워커노드로 구성되며 이 둘의 집합을 클러스터라고 한다.
  • 마스터노드 (Control Plane)는 kubernetes 시스템을 제어하고 관리한다.
  • 워커노드는 실제 배포되는 container application이 실행된다.


Kubernetes 구성요소

  1. 마스터 노드 (Control Plane)
    • 클러스터 제어, 워크노드 관리
    • kube-apiserver
      • 사용자 상호작용 수행
      • Kubernetes 제어명령 수신
      • API 명령 수신
    • kube-scheduler
      • 새로운 POD(container) 생성 감지
      • 실행시킬 워커노드를 선택
    • etcd
      • 클러스터의 모든 데이터 보관
      • 고가용성을 보장하는 Key-Value 저장소
      • 노드와 클러스터의 리소스 정보 등을 저장
    • kube-controller-manager
      • deployment와 같은 리소스 컨트롤을 관리
      • API 서버를 통해 클러스터 공유상태 감지
      • 현재 상태를 원하는상태로 이행하는 컨트롤 루프 관리
    • cloud-controller-manager
      • public cloud와 연동하여 로드밸런서나 디스크볼륨 같은 자원관리
  2. 워커 노드
    • 컨테이너화된 application을 실행한다.
    • kubelet
      • 각 노드에서 실행되는 에이전트
      • container run-time을 관리하고 상태를 모니터링
      • POD에서 container가 확실하게 동작하도록 관리
    • kube-proxy
      • 각 노드에서 실행되는 네트워크 프록시
      • Service개념 구현부
      • 서로다른 노드에 있는 POD간 통신이나 POD와 인터넷 사이의 트래픽라우팅
    • container run-time
      • container 제어기능(실행-중지-삭제) 주로 Docker를 사용한다.
      • CRI(Container Run-time Initiative)로 공통 container run-timer 규격이다.
  3.  Kubernetes를 사용하기 위한 기본환경구성은 클러스터 생성을 의미하고 클러스터는 여러개의 클러스터를 생성할 수 있다.


참고 자료

쿠버네티스 페이지 : https://kubernetes.io/

 

Production-Grade Container Orchestration

Production-Grade Container Orchestration

kubernetes.io

CNCF 페이지 :  https://www.cncf.io/

 

Cloud Native Computing Foundation

Cloud Native Computing Foundation (CNCF) serves as the vendor-neutral home for many of the fastest-growing open source projects

www.cncf.io