Dev

[Kubernetes] 쿠버네티스란?

sangkins 2023. 11. 30. 23:01

쿠버네티스란 무엇인가?

컨테이너화된 워크로드와 서비스를 관리하기 위한 이식성(Portability)이 있고, 확장가능한 오픈소스 플랫폼.
컨테이너 오케스트레이션 도구의 표준이라고 할 수 있다.
k8s (first : k , end : e , length : 8)을 의미한다.

 

도커 스웜에서 부터 쿠버네티스가 도커의 공식 오케스트레이션 도구로 채택된 여정을 알아보도록 하자

 

https://kubernetes.io/

전통적인 배포 : 어플리케이션을 물리적 서버에서 실행. 하나의 서버에서 여러 어플리케이션의 리소스 한계를 정의할 방법이 없었기 때문에, 리소스 할당의 문제가 발생함. 리소스 관리의 어려움.

 

가상화된 배포 : 물리 서버의 해결책으로 가상화가 도입됨. 단일 물리 서버의 CPU에서 여러 가상 머신을 실행할 수 있게 했다. 가상화를 사용하면 VM간에 어플리케이션을 격리하고, 어플리케이션의 정보를 다른 어플리케이션에서 자유롭게 액세스할 수 없으므로 보안성을 제공할 수 있고, 서버에서 리소스를 보다 효율적으로 활용할 수 있으며 더 나은 확장성을 제공한다.

각 VM은 가상화된 하드웨어 상에서 자체 운영체제를 포함한 모든 구성 요소를 실행하는 하나의 완전한 머신.

 

컨테이너 개발 : 컨테이너는 VM과 유사하지만 격리 속성을 완화하여 어플리케이션 간에 OS를 공유한다. 컨테이너는 가볍다고 여겨진다. VM과 마찬가지로 컨테이너에는 자체 파일 시스템, CPU 점유율, 메모리, 프로세스 공간 등이 있다. 기본 인프라와의 종속성을 끊었기 때문에 이식성이 매우 높다.

 

컨테이너의 이점

  • 기민한 어플리케이션 생성과 배포 
  • CI/CD
  • 개발과 운영의 관심사 분리
  • 가시성
  • 개발, 테스팅 및 운영 환경에 걸친 일관성
  • 클라우드 및 OS 배포판 간 이식성
  • 어플리케이션 중심 관리
  • 디커플링, 분산, 유연, 자연스러운 MSA

쿠버네티스가 왜 필요한가? 어떤걸 할 수 있는지?

Production 환경에서는 컨테이너를 관리하고 가동 중지 시간이 없는지 확인해야 한다. 이 문제를 시스템으로 처리하는 것이 쿠버네티스이다. 분산 시스템을 탄력적으로 실행하기 위한 프레임워크를 제공하고 확장과 장애 조치 처리, 배포 패턴등을 제공한다.

 

  • 서비스 디스커버리와 로드밸런싱
  • 스토리지 오케스트레이션
  • 자동화된 롤아웃과 롤백
  • 자동화된 빈 패킹
  • 자동화된 복구
  • 시크릿과 구성 관리

 

 

 

마무리

여러 컨테이너에 걸쳐 어플리케이션 서비스를 구축하고 컨테이너의 일정을 계획, 컨테이너의 상태를 지속 관리, 개발환경 구축 기간 단축, MSA 아키텍처, 낮은 개발 오버헤드, OS가상화로 격리된 테스트 환경 구축이 내가 생각하는 쿠버네티스를 사용하는 이유이다.

docker swarm을 배운 입장에서 kubernetes 의 이해는 큰 어려움은 없을 것 같다.

kubernetes를 사용하면서 생기는 문제들을 트러블 슈팅. 하는 과정들을 블로그에 올릴 예정입니다

 

 

 

 

 

 

Production-Grade Container Orchestration

Production-Grade Container Orchestration

kubernetes.io