[Kubernetes] kubernetes 란?

HyunDong Lee·2021년 4월 19일
0

kubernetes

목록 보기
1/3
post-thumbnail

kubernetes 개요

큐버네티스는 컨테이너화된 워크로드와 서비스를 관리하기 위한 이식성이 있고, 확장가능한 오프소스 플랫폼이다. 쿠버네티스는 선언적 구성과 자동화를 모두 용이하게 해준다. 큐버네티스는 서비스, 기술 지원 및 도구를 어디서나 쉽게 이용할 수 있다.

컨테이너 개발 시대

컨테이너는 VM과 유사하지만 격리 속성을 완화하여 애플리케이션 간에 운영체제를 공유한다. 그러므로 컨테이너는 가볍다고 여겨진다. VM과 마찬가지로 컨테이너에는 자체 파일 시스템, CPU 점유율, 메모리, 프로세스 공간 등이있다. 기본 인프라와의 종속성을 끊었기 때문에, 클라우드 OS 배포본에 모두 이식할 수 있다.
컨테이너 이점

  • 기민한 애플리케이션 생성과 배포: VM 이미지를 사용하는 것에 비해 컨테이너 이미지 생성이 보다 쉽고 효율적임.
  • 지속적인 개발, 통합 및 배포: 안정적이고 주기적으로 컨테이너 이미지를 빌드해서 배포할 수 있고 빠르고 효율적으로 롤백할 수 있다.
  • 개발과 운영의 관심사 분리: 배포 시점이 아닌 빌드/릴리스 시점에 애플리케이션 컨테이너 이미지를 만들기 때문에, 애플리케이션이 인프라스트럭처에서 분리된다.
  • 가시성은 OS 수준의 정보와 메트릭에 머무르지 않고, 애플리케이션의 헬스와 그 밖의 시그널을 볼 수 있다.
  • Self healing (restart failed containers)
  • secret and configuration management (secret & config map in ETCD)
  • Batch execution (run to completion)
  • Horizontal scaling (CLI, UI, automatic based on CPU usage)

Docker Swarm vs. Kubernetes

Swarm

  • container: docker container
  • Scaling: manual
  • Load balancing: primitive
  • Istallation: easy & fast
  • Scalability: limited
  • Storage volume: sharable over any container
  • GUI: not available

K8s

  • container: 다른 container도 가능
  • Scaling: fully automatic
  • Load balancing: configurable
  • Installation: more time consuming
  • Scalability: strong
  • Storage volume: within a pod
  • GUI: available

K8s Architecture

사진출처
그림을 보면 kubectl을 통해 받은 명령어를 api server를 통해 kubelet으로 전달하면 pod/containers를 생성하며 서비스를 제공한다.

kubectl - kubectl은 명령어를 보낸다.
API server - 명령얼르 전달해준다. etcd 클러스터와 통신(REST API 통신)
etcd - kubernetes 클러스터 데이터, api 객체 및 서비스 검색 세부정보를 저장하는 데 상요되는 분산 키 값 저장소이다.
controller manager - 복제, 서비스 계정, 네임스페이스 등을 생성하고 이를 각 노드에 배포하며 관리하는 역할을 한다.
scheduler - pod, 서비스 등 각 자원을 적절한 노드에 할당하는 역할을 한다.
kubelet - 노드는 기본적으로 정기적으로 새로운 pod 또는 수정된 pod 사양으로 포드 및 컨테이너가 원하는 상태로 실행되고 있는지 확인한다.
kube proxy - 노드로 들어오는 네트워크 트래픽을 적절한 컨테이너로 라우팅하고, 로드 밸런싱 등 노드로 나가는 네트워크 트래픽을 프록시하고 노드와 마스터간의 통신을 관리한다.

출처

컨테이너 개발시대 참고
k8s 아키텍처 참고

0개의 댓글