쿠버네티스 살펴보기 | 1. 쿠버네티스 개요

nawnoes·2021년 7월 14일
0

Kubernetes

목록 보기
1/4

쿠버네티스 학습을 위한 쿠버네티스 공식문서를 정리

쿠버네티스

쿠버네티스는 컨테이너화된 서비스를 관리하기 위한 이식성있고, 확장가능한 오픈소스 플랫폼이다. 즉 컨테이너들을 관리하기 위한 플랫폼이다. 선언적 구성과 자동화를 용이하게 해준다.

쿠버네티스는 흔히 k8s라 불린다. K8s는 쿠버네티스의 K와 s 사이의 8글자를 약어로 표현한것이다. 구글에서 2014년 쿠버네티스 프로젝트를 오픈소스화 했다.

쿠버네티스가 부상한 이유

컨테이너 기반의 개발 환경의 변화

기존의 VM과 다르게 컨테이너는 경량화 되어 장점을 가진다. 컨테이너는 자체 파일 시스템, CPU, 메모리, 프로세스 공간을 가지며, 인프라와의 종속성을 끊었기 때문에, 클라우드와 OS에 모두 이식할 수 있다.

컨테이너의 장점

  • 컨테이너 이미지 생성이 기존 VM 이미지 대비 쉽고 효율적
  • 컨테이너 이미지를 빌드 및 배포 할수 있고, 이미지는 불변성을 가지기 때문에 효율적인 롤백 가능
  • 배포 시점이 아닌, 빌드/릴리즈 시점의 애플리케이션 컨테이너의 이미지가 생성되 어플리케이션이 인프라와 분리된다.
  • 개발,테스트,운영 환경 모두에서의 일관성: 랩탑에서 클라우드까지 동일하게 동작하는 장점
  • 애플리케이션 중심의 관리: OS 상에서 애플리케이션을 실행하는 수준으로 추상화 수준이 높아진다.
  • 느슨, 분산, 유연, 자유로운 마이크로서비스 MSA: 애플리케이션은 모놀리식 스택으로 구동되지 않고, 작고 독립적인 단위로 쪼개져서 동적으로 배포되고 관리
  • 리소스를 고효율적이고 고집적으로 사용할수 있다.

쿠버네티스의 필요성과 기능

컨테이너는 애플리케이션을 포장하고 실행하는 좋은 방법이다. 프로덕션 환경에서는 애플리케이션을 실행하는 컨테이너에 대해 관리가 필요하다.

예를들어 컨테이너가 다운되는 경우 서비스 장애가 발생하므로 다른 컨테이너를 시작해야한다. 이런 경우 필요한것이 쿠버네티스로 분산 시스템을 탄력적으로 실행하고, 애플리케이션을 확장과 장애에 대한 조치 및 프로덕션 환경에 배포하는 패턴들을 제공한다.

쿠버네티스 기능

서비스 디스커버리와 로드밸런싱

쿠버네티스는 DNS 이름을 사용하거나 자체 IP 주소를 사용해 컨테이너를 노출할수 있다. 컨테이너에 대한 트래픽이 늘어나면 쿠버네티스는 트래픽을 로드밸런싱 한다.

스토리지 오케스트레이션

쿠버네티스를 통해 로컬저장소, 공용클라우드 공급자 등과 같이 원하는 저장소 시스템을 자동으로 탑재할 수 있다.

자동화된 롤아웃과 롤백

쿠버네티스를 통해 배포된 컨테이너의 원하는 상태를 명시 할 수 있으며, 현재 상태를 원하는 상태로 설정한 속도에 따라 변경할 수 있다. 예를 들어 쿠버네티스를 자동화해 배포 컨테이너를 만들고, 기존 컨테이너를 제거 후 모든 리소스를 새 컨테이너에 적용할 수 있다.

자동화된 빈 패킹(bin packing)

컨테이너화 된 작업을 실행하는데 사용할 수 있는 쿠버네티스 클러스트 노드를 제공한다. 각 컨테이너가 필요로하는 cpu와 메모리를 쿠버네티스에 지정하고 쿠버네티스는 컨테이너를 노드에 맞춰서 리소스를 가장 잘 사용할 수 있도록 한다.

자동화된 복구

쿠버네티스는 다운된 컨테이너를 다시 시작하고 다른 컨테이너로 교체한다.

시크릿과 구성관리

암호나 OAuth, SSH키와 같은 중요한 정보들을 쿠버네티스를 통해 저장하고 관리할 수 있다. 이런 비밀 정보들을 노출하지 않고 애플리케이션을 구성하고 배포, 업데이트 할수 있다.

0개의 댓글