본문 바로가기

좋아하는 것_매직IT/10.microservice

17.마이크로서비스, 쿠버네티스에 대해서 알아보자.

반응형

쿠버네티스란?

  • 마이크로서비스의 개발과 운영을 위한 런타임 환경이고 점차 중요성이 커지고 있음.
  • 리눅스 파운데이션(Linux Foundation)에서 관리
  • 구글에서 개발됨.
  • 다양한 확장을 제공하는 쿠버네티스중심으로 광대한 생태계가 펼쳐지고 있음.
  • 도커 컨테이너를 실행할 수 있고, 마이크로서비스를 위한 인프라 구성 가능.
  • 도커에 대한 코드 의존성이 없음.   
  • 참고페이지 : https://kubernetes.io

라이선스

  • 아파치 라이선스

버전및 종류

기능

  • 여러 노드로 구성된 하나의 클러스터에서 도커 컨테이너를 실행함.
  • 장애 안정성을 달성할 수 있음.
  • 장애 발생 시 도커 컨테이너를 재시작할 수 있음. 컨테이너가 실행되고 있던 원래 노드가 더 이상 사용할 수 없는  경우에도 재시작가능.
  • 로드 밸런싱을 지원하고 여러 노드에 부하를 분산시킬 수 있음.
  • 서비스 탐색을 지원함.
  • 도커 컨테이너에서 실행되는 마이크로서비스는 쿠버네티스를 통해 서로를 쉽게 찾을 수 있고 통신가능함.
  • 도커 컨테이너 레벨에서 동작하므로 마이크로서비스에는 쿠버네티스에 대한 코드 의존성이 없음.
  • 마이크로서비스를 구현할 때 대부분의 모든 프로그래밍 언어와 프레임워크를 지원한다는 것을 의미.

개념

  • 노드(Node) : 쿠버네티스가 실행되는 서버, 노드는 클러스터로 구성됨.
  • 포드(Pod) : 함께 서비스를 제공하는 여러개의 도커 컨테이너, 포드의 도커 컨테이너는 도커 볼륨을 공유가능하기때문에 효율적으로 데이터를 교환할 수 있음.           
  • 레플리카셋(Replica set) : 항상 특정 개수의 포드 인스턴스를 실행하게 함, 레플리카셋을 사용하면 부하를 포드에 분배가능함. 즉, 시스템 장애시 안정성 갖음. 
  • 디플로이먼트(Deployment) : 레플리카셋을 생성, 필요한 도커 이미지를 제공함.
  • 서비스(Service) : 포드에 접근할 수 있게 함. DNS에 하나의 이름으로 등록, 고정 IP 주소를 사용해 클러스터 전체에서 통신가능함. 외부의 요청을 라우팅 할 수 있음.

라우팅

  • 로드밸런서를 통한 라우팅
    • 쿠버네티스는 상용환경에서 로드 밸런서를 생성할 수 있음. 
    • ex) 아마존환경에서 쿠버네티스는 클러스터의 노드 포트에 접근할 수 있도록 ELB(Elastic Load Balancer)를 설정함. 로드 밸런서로 사용하기 위해 LoadBalancer 서비스 타입이 사용됨.
  • 인그레스 라우팅
    • 쿠버네티스는 인그레스(Ingress) 라는 확장 프로그램을 제공함
    • 인터넷 서비스 접근을 설정하고 변경가능함.
    • 로드 밸런싱을 구현하거나 SSL을 종료하거나, 가상 호스트를 구현할 수 있음.
    • 참고페이지 : https://kubernetes.io/docs/concepts/services-networking/ingress

예시

장점

  • 마이크로서비스의 일반적인 문제(로드 밸런싱, 라우팅, 서비스검색)을 해결함.
  • 코드 의존성이 없음.
  • 쿠버네티스는 운영과 배포를 포함함.
  • 쿠버네티스 플랫폼은 표준을 준수함으로써 매크로 아키텍처를 정의함.    

결론

  • 쿠버네티스는 동기 마이크로서비스의 문제점을 해결함.
  • 쿠버네티스는 각 포드의 IP 레벨에서 각 포드에 유입된 쿠버네티스 서비스의 IP 주소 트래픽을 분산시킴으로 로드 밸런싱을 보장함.
  • 서비스의 로드 밸런서 또는 노드 포트를 통해 라우팅을 처리함.
  • 컨테이너 재시작과 로드 밸런싱을 통해 복원력을 얻을 수 있음.
  • 히스트릭스와 같은 라이브러리를 사용하면, 타임아웃 또는 서킷 브레이커를 구현하는데 유용할 수 있음.
  • 엔보이(Envoy) 와 같은 프록시는 히스트릭스의 대안일 수 있음.
  • 참고페이지 : https://github.com/lyft/envoy
  • 하나의 패키지 내에서 쿠버네티스는 클러스터의 서비스 탐색, 로드 밸런싱, 복원력, 확장성을 포함한 마이크로서비스 환경을 완벽하게 지원함.
728x90
300x250