본문 바로가기

클라우드/쿠버네티스

쿠버네티스 개요

반응형

Kubernetes 가 필요한 이유

  • Monolithic 어플리케이션 환경에서 MS(Microservice)로 전환이 되면서 worker node가 많아짐으로 인해 container 관리자가 필요하게 되었다.
  • 쿠버네티스는 컨테이너 중심의 관리 환경을 제공한다. 이 환경은 사용자 워크로드를 위해서 컴퓨팅, 네트워킹 및 스토리지ㅣ 인프라 스트럭처를 오케스트레이션 한다.

Container Ecosystem

  • Layer 1(Physical Infrastructure): 네트워크, 스토리지 장비와 같은 하드웨어 및 Bare metal 환경
  • Layer 2(Virtual Infrastructure)
  • Layer 3(Operating System)
  • Layer 4(Container Engine) : Docker, Rocket, RunC(OCI), Osv, LXC, LXD
  • Layer 5(Orchestration/Scheduling Service Model): Kubernetes, Docekr Swarm, Marathon/Mesos
  • Layer 6(Development Workflow Opinionated Containers): OpenShift, Deis

OpenShift

  • 기업에 Docker와 Kubernetes를 제공하는 컨테이너 애플리케이션 플랫폼
  • 오픈시프트는 사용 중인 애플리케이션 아키텍처와 관계없이 거의 모든 인프라(퍼블릭 또는 프라이빗)에서 어플리케이션을 쉽고 빠르게 구축, 개발 및 배포 가능
  • 온프레미스, 퍼블릭 클라우드, 호스티드 중 어떤 IT환경이든 경쟁업체보다 빨리 우수한 아이디어를 제품화 할 수 있음.
  • 신속한 애플리케이션 개발을 위해 도커 컨테이너와 DevOps(데브옵스) 도구를 사용하여 Kubernetes 를 지원하는 운영환경 제공

Kubernetes 특징

  • 시스템은 마스터 노드와 여러개의 워크노드로 구성됨
  • 개발자가 애플리케이션 매니패스트를 마스터에 제출하면 쿠버네티스는 이를 워커 노드 클러스터에 배포
  • 개발자는 물론 시스템 관리자에게도 구성요소가 어느 노드에 실행되는지 중요하지 않음
  • 쿠버네티스는 계속 증가하고 있는 엄청난 수의 서비스와 기능이 포함된 플랫폼
  • 핵심 기능은 인프라 전체에 걸쳐 컨테이너에서 작업 부하를 스케줄링 할 수 있는 능력

Kubernetes 기능

  • Automatic binpacking: 가용성에 대한 희생 없이, 리소스 사용과 제약 사항을 기준으로 자동으로 컨테이너 스케쥴링
  • Self-healing: 자동으로 문제가 발새한 노드의 컨테이너를 대체
  • Horizontal scaling: CPU와 메모리와 같은 리소스 사용에 따라 자동으로 애플리케이션 확장, 사용자 정의측정값 기준으로 한 동적 확장 가능
  • Service discovery and Load balancing: container에 고유한 IP부여. 여러 개의 Container를 묶어 단일 service로 부여하는 경우 단일 name으로 접근하도록 로드 밸런싱 제공
  • Automatic rollouts and rollbacks: 다운타임 없이 애플리케이션의 새로운 버전 및 설정에 대한 롤아웃/롤백 기능
  • Secret and configuration management: 애플리케이션의 secret과 configuration 정보를 이미지와 독립적으로 구분하여 별도의 이미지 재생성 없이 관리
  • Storage orchestration: 소프트웨어 정의 저장장치를 기반으로 로컬, 외부 및 저장소 솔루션 등을 동일한 방법으로 컨테이너에 마운트 가능
  • Batch execution: CI 워크로드와 같은 Batch성 작업 지원, crontab 형식으로 스케줄링도 가능

Kubernetes 리소스

리소스 유형 약자
Componentstatuses cs
Events ev
Endpoints ep
Horizontalpodautoscaler hpa
Limitranges limits
Nodes no
Namespaces ns
Ingress ing
Pods po
Persistentvolumes pv
Persistentvolumesclaims pvc
Replicationcontrollers rc
Services svc

Kubernetes components

  1. Master Components
  • API server: 쿠버네티스 REST API. 모든 데이터를 etcd 클러스터에 저장하므로 쉽게 수평 확장 가능
  • etcd: 분산데이터 저장소. 쿠버네티스는 이것을 사용해 전체 클러스터 상태를 저장한다. 규모가 작고 일시적인 클러스터의 경우에는 etcd 단일 인스턴스가 다른 마스터 컴포넌트와 함께 동일한 노드에서 동작 가능. 일반적으로 이중화 및 고가용성을 위해 3~5개 etcd 클러스터를 갖기도 함
  • controller manager: 컨트롤러 매니저는 API를 사용해 클러스터의 상태를 감시하고, 클러스터를 원하는 상태로 조정. 컨트롤러 매니저에는 replication, pod, service, endpoint controller등 포함
  • scheduler: Kube scheduler는 node에 pod를 스케줄링 하는 역할 담당.
  • DNS: 모든 서비스는 DNS 이름을 가지며 Pod역시 DNS 이름을 가짐. 자동검색(automatic discovery)에 유용
  1. Worker Node Components
  • kube proxy: 각 노드에서 네트워크 관리 업무 수행. TCP와 UDP 포워딩을 수행하며 환경변수나 DNS를 통해 클러스터 IP를 갖게됨
  • kubelet: 쿠버네티스 대포 노드. 마스터 컴포넌트와 통신을 수행하며 실행중인 파드를 관리하고 감독.
    • API 서버에서 Pod secret 다운로드
    • 볼륨 마운트
    • 파드의 컨테이너 실행
    • Node & Pod 상태보고
    • 실행중인 컨테이너의 활성 여부조사
반응형

'클라우드 > 쿠버네티스' 카테고리의 다른 글

Pod 배포 전략 및 기법  (0) 2020.07.19