Nubes et Stella

Kubernetis #01 본문

DevOps/Kubernetis

Kubernetis #01

SeongYeong Han 2023. 10. 9. 20:25

01. Kubernetis 란?

구글 내부에서 사용하던 배포시스템 borg를 기반으로 재작성하여 2014년에 오픈소스로 공개되었으며, 현재는 가장 대표적인 컨테이너 오케스트레이션 시스템이다. (흔히 k8s로 약식 표기한다.)

 

쿠버네티스 공식 : https://kubernetes.io/ko/docs/home/

 

쿠버네티스 문서

쿠버네티스는 컨테이너화된 애플리케이션의 배포, 확장 및 관리를 자동화하기 위한 오픈소스 컨테이너 오케스트레이션 엔진이다. 오픈소스 프로젝트는 Cloud Native Computing Foundation에서 주관한다.

kubernetes.io

 


- 그렇다면 컨테이너 오케스트레이션 시스템이란?

컨테이너의 배포, 관리, 확장, 네트워킹을 자동화하는 기술이다. 한마디로 여러대의 컨테이너를 효율적으로 통합 관리하기 위한 시스템이다. 크게 컨테이너에 대한 아래의 기능을 제공한다.

 

• 컨테이너 자동 배치 및 복제
• 컨테이너 그룹에 대한 로드 밸런싱
• 컨테이너 장애 복구
• 클러스터 외부에 서비스 노출
• 컨테이너 추가 또는 제거로 확장 및 축소
• 컨테이너 서비스간의 인터페이스를 통한 연결 및 네트워크 포트 노출 제어

 

여러 종류의 오케스트레이션 시스템


 

** 많은 오케스트레이션 중에서 쿠버네티스를 사용하는 이유?

 

- Planet Scale

  • 구글에서 수 십억 개의 컨테이너를 운영할 수 있도록 한 원칙 유지
  • 행성 규모로 확장할 수 있는 스케일

- Never Outgrow

  • 다양한 요구사항을 만족할 수 있는 유연함
  • 테스트용 로컬 규모부터 글로벌 서비스 규모까지 유연하게 크기 조정 가능

- Run Anywhere

  • 온프레미스 / 퍼블릭 클라우드 / 하이브리드 환경 어디서나 동작
  • 대부분의 리눅스 환경에서 동작하기 때문에 환경 이동에 제약이 없음

 

 

02. Kubernetis 배포판

 

 

쿠버네티스 배포판이란 쿠버네티스를 구현하고 운영하기 위한 도구 및 서비스의 패키지이다. 이러한 배포판은 기존 쿠버네티스의 기능과 부족한 점을 확장, 추가 및 보완하여 다양한 환경이나 요구사항에 대응하도록 구성된다.

 

쿠버네티스 배포판은 Local 환경에서 운영되어 간단한 학습이나 개발 환경을 구성할 수 있는 "minikube"부터 클라우드 환경에서 사용되는 EKS(by AWS), AKS(by Azure), GKE(by GCP) 등이 있다. 또한 여러 재단에서 만든 다양한 형태의 배포판이 존재한다.

 

 

03. Kubernetis 클러스터

쿠버네티스 클러스터란 쿠버네티스로 관리되는 컨테이너들을 운영 및 관리하기 위한 환경이며 아래와 같은 요소들로 구성되어 있다. 그림에서 보여지듯 쿠버네티스 클러스터 내에서 다음과 같은 계층 구조를 가진다.

"클러스터 > 노드 > Pod > 컨테이너"

 

 

 

 

Control Plane

- API Server

쿠버네티스 리소스와 클러스터 관리를 위한 API 제공하며, etcd를 데이터 저장소로 사용한다.

- Scheduler

노드의 자원 사용 상태를 관리하며, 새로운 워크로드를 어디에 배포할지 관리한다.

- Controller Manager

각 컨트롤러는 클러스터로부터 특정 리소스 상태의 변화를 감지하여 클러스터에 반영하는 과정을 반복 수행한다.

- etcd

Key - Value 형태의 저장소로 클러스터의 상태를 저장한다.

 

Node

- kubelet

컨테이너 런타임(Container Runtime)과 통신하며 컨테이너 라이프사이클 관리한다.

- CRI (Container Runtime Interface)

kubelet이 컨테이너 런타임과 통신할 때 사용되는 인터페이스이며 Docker, containerd, cri-o 컨테이너 런타임을 지원한다.

- kube-proxy

네트워크 프록시 및 내부의 로드밸런서 역할을 수행한다.

 

 

04. API 리소스

 

 

API 리소스

- 쿠버네티스가 관리할 수 있는 오브젝트의 종류

Ex.) Pod, Service, ConfigMap, Secret, Node, ServiceAccount, Role

 

오브젝트

- API 리소스를 인스턴스화 한 것

 

- END -

'DevOps > Kubernetis' 카테고리의 다른 글

Kubernetis #06 (Namespace/(Cron)Job)  (0) 2023.10.24
Kubernetis #05 (ConfigMap/Secret)  (0) 2023.10.19
Kubernetis #04 (Deployment/Service)  (0) 2023.10.15
Kubernetis #03 (Pod/ReplicaSet)  (0) 2023.10.14
Kubernetis #02 (Install)  (0) 2023.10.14