쿠버네티스란

데브코스

목록 보기
108/131

서비스 개발 및 운용 방식

마이크로 서비스 아키텍쳐 (MSA)

  1. 응용 시스템 개발 및 구성을 위한 아키텍처 스타일의 하나
  2. 이에 비교하여 전통적인 방식의 아키텍처를 모놀리식(monolithic) 아키텍처라고 부르기도 함.
  3. 애플리케이션이 서비스 모음으로 개발되어 각 마이크로 서비스는 특정한 기능을 수용하고 개별 작업을 처리,
    이 서비스들이 서로 연결되어 전체 응용을 구성.

쿠버네티스(Kubernetes) 란

1. 줄여서 k8s 라고 표기하는 것을 자주 보게 됨

2. 컨테이너 오케스트레이션 솔루션

  • 다수의 컨테이너들을 관리하면서
  • 자동 배포, 배포된 컨테이너의 동작 보증, 부하에 따른 동적 확장 등의 기능을 담당

3. 도커와 잘 어울리는 실행 환경 구성 도구

  • 도커 컨테이너들을 클러스터 내에 실행하고 관리하는 데 적합
  • 지속적 통합과 인도(CI/CD)에 유효하게 적용할 수 있음
  • 컨테이너는 포드(POD)라고 불리는 k8s 오브젝트와 연관하여 실행(포드 위에서 실행한다고 대강 표현)

k8s 클러스터의 구성 요소

1. 클러스터는 하나 이상의 노드(들)로 구성됨

2. 마스터 노드 (컨트롤 플레인)

  • kubectl (반드시 마스터 노드에 있어야 하는 것은 아니지만)
  • API서버, ETCD - 클러스터의 중심 역할을 하는 구성 요소들
  • 컨트롤러 매니저, 스케줄러

3. 워커 노드

  • 컨테이너 런타임(Container Runtime Interface) - 포드를 이루는 컨테이너의 실행을 담당
  • kubelet - 포드의 구성 내용을 받아 CRI에 전달하고 컨테이너들의 동작 상태를 모니터링


k8s가 제공하는 기능

1.컨테이너 밸런싱 (container balancing)

  • 포드의 부하 균등화를 수행 - 몇 개의 응용을 복제할 것인지를 알려주면 나머지는 k8s가 처리

2. 트래픽 로드 밸런싱(traffic load balancing)

  • 응용의 복제본이 둘 이상 있다면 k8s가 트래픽 부하 균등화를 수행하여 클러스터 내부에 적절히 분배

3. 동적 수평 스케일링(HPA : horizontal pod autoscaling)

  • 인스턴스 수를 동적으로 확장하거나 감축하여 동적 요구사항에 대응하면서 시스템 자원을 효율적으로 활용

4. 오류 복구(error recovery)

  • 포드와 노드를 지속적으로 모니터링하고 장애가 발생하면 새 포드를 실행하여 지정된 복제본의 수를 유지

5. 롤링 업데이트 (rolling update)

  • 지연 시간을 적용하고 순차적으로 업데이트 배포함으로써 문제가 발생하더라도 서비스를 정상 유지할 수 있음

6. 스토리지 오케스트레이션(storage orchestration)

  • 원하는 응용에 다양한 스토리지 시스템(Amazon EBS, Google GCE Persistent Disk 등) 을 마운트할 수 있음

7. 서비스 디스커버리

  • 태생적으로 수명이 짧은 포드의 동적 성질을 관리하기 위하여 자체 DNS기반으로 서비스를 동적 바인딩할 수 있는 기능을 제공

k8s pod의 생명 주기

1. Kubectl을 통해서 api서버에 포드의 생성을 요청

  • (업데이트가 있을 때마다) api서버는 etcd에 기록하고 클러스터의 상태를 최신으로 유지(하려고 함)

2. 컨트롤러 매니저는 포드를 생성하고, 이 상태를 api 서버에 전달

  • 아직 어떤 워커 노드에 포드를 적용할지는 결정하지 않은 상태

3. 스케줄러는 포드가 생성되었다는 정보를 인지하고, 이 포드를 어떤 워커 노드에 적용할지를 결정해서 해당 노드에 포드의 실행을 요청

4. 해당 노드의 kubelet이 CRI에 요청하여 포드가 만들어지고 사용 가능한 상태가 됨

5. k8s는 절차적인 구조가 아닌 선언적인 구조를 가지고 있음

  • 각 요소가 추구하는 상태를 선언하면 현재 상태와 비교하고 지속적으로 맞추어 가려고 노력하는 구조

profile
Dive Head First | Work Super Hard | Attract Great People

0개의 댓글