[Docker] Kubernetes

참고

  • https://kubernetes.io/ko/docs/concepts/overview/what-is-kubernetes/

쿠버네티스를 공부헤보자

  • 옛날 배포 시대 : 초기 조직은 애플리케이션을 물리 서버에서 실행하였다. 이는 리소스 할당의 문제가 있었다.(성능 문제) 즉, 조직이 많은 물리 서버를 유지하기 위해서는 많은 비용이 들었다.
  • 가상화된 배포 시대 : 가상화 도입, 단일 물리 서버의 CPU에 여러 가상 시스템을 실행할 수 있다. 또한 가상머신 간에 애플리케이션을 격리하고, 애플리케이션의 정보를 다른 애플리케이션의 엑세스가 제한되어, 보안성도 제공할 수 있다. 이는 물리 서버에서 리소스를 효율적으로 활용할 수 있고, 애플리케이션을 쉽게 추가하거나 업데이트할 수 있다. 또한 하드웨어 비용을 절감할 수 있어 더 나은 확장성을 제공한다.
  • 컨테이너 개발 시대 : 컨테이너는 가상머신과 유사하지만, 격리 속성을 완화하여 애플리케이션 간에 운영체제를 공유한다. 즉, 컨테이너는 경량으로 간주하고, 가상머신처럼 컨테이너에는 자체 파일 시스템, CPU, 메모리, 프로세스 공간 등이 있다. 기본 인프라와의 종속성을 끊었기 때문에, 클라우드와 OS 배포본에 걸쳐 이식할 수 있다.

쿠버네티스의 장점

  • 가상머신 이미지 사용 대비 컨테이너 이미지 생성이 보다 쉽고 효율적이다.
  • 이미지의 불변성이라는 특징을 활용하여 안정적이고 주기적으로 컨테이너 이미지를 빌드 및 배포할 수 있고, 빠르게 롤백할 수도 있다.
  • 개발과 운영의 관심사 분리
  • …등등

쿠버네티스는 무엇이 가능한가

쿠버네티스는 분산 시스템을 탄력적으로 실행하기 위한 프레임워크를 제공한다.

  • 서비스 디스커버리와 로드 밸런싱 : 쿠버네티스는 DNS와 IP 주소를 사용하여 컨테이너를 노출할 수 있는데, 컨테이너에 대한 트래픽이 많으면 쿠버네티스는 네트워크 트래픽을 로드 밸런싱하고 배포하여 안정적으로 이루어질 수 있도록 한다.
  • 스토리지 오케스트레이션 : 쿠버네티스를 사용하면 원하는 저장소 시스템을 자동으로 탑재할 수 있다.
  • 롤아웃, 롤백, 빈 패킹, 복구 자동화