Kubernetes (k8s)

임정민·2024년 6월 24일
3

MLOps 공부

목록 보기
6/7
post-thumbnail

Kubernetes 소개

1. 쿠버네티스란?

  • 도커는 컨테이너 생성 도구 및 간단한 운영 도구
  • 쿠버네티스는 서버 배포 및 운영 관리 도구

2. 기능

클러스터링(여러개 서버 통합관리)

  • 쿠버네티스를 쓰지 않더라도 필요한 서버 관리

  • 쿠버네티스 없이 관리한다면 각각의 IP를 갖는 서버에 직접 접속해서 관리해주어야함
  • 1 ~ 2개 서버는 직접 관리할 수 있지만 수백 ~ 수천개가 된다면 관리하기 어려움
  • 클러스터링한다면 쿠버네티스 입장에서는 여러 서버들이 하나의 큰 컴퓨터 1대로 관리됌

  • node : 물리적인 1개의 서버
  • control-plane(master) : 전체적으로 운영 관리하는 서버, worker로도 사용 가능
  • worker : 실제 일하는 서버

실행된 서버 선택

  • 다양한 프로세스 중 반드시 GPU , 스토리지 혹은 CPU 서버에 배치되어야하는 프로세스 일 수 있지만 이를 지정할 수 있음

*Scheduling(스케줄링)

  • 설정에 따라 프로세스별 노드 배치 우선순위를 선정할 수 있음 (1.GPU 2.CPU ...)
  • 또한 노드 관계없이 골고루 배치할 수도 있음

  • 서버 가동률을 효율적으로 관리할 수 있음

  • Running하고 있는 프로세스들을 볼 수 있음
  • 'ubuntu', 'sub-node' 물리적으로 다른 2개의 서버에 각각 배치됌
  • 5개의 프로세스는 'sub-node', 5개의 프로세스는 'ubuntu'

*Scaling(스케일링)

  • kubectl 명령어로 프로세스를 스케일링 할 수 있음 (sub-node에 배치됌)

  • ubuntu node에 1개의 프로세스가 새로 배치됌

로드 밸런싱

  • WS에 트래픽이 왔을 때 적절히 분배시켜야함
  • 쿠버네티스를 사용하지 않는다면 프로세스, 노드가 늘어나고 줄어듬에 따라 로드 밸런싱을 직접하기 어려움
  • 하지만 쿠버네티스로 클러스터링되어 있다면, node(서버)에 배치된 같은 프로세스에 적절히 분배할 수 있음

  • 동일한 요청을 했을 때, 로드 밸런싱되어 여러 프로세스에 배치됌

스케일 아웃/인

  • 기본

  • 스케일 아웃 (컨테이너를 늘림)

  • 스케일 인 (컨테이너를 줄임)

  • 스케일 아웃 (노드를 늘림)

컨테이너 배포/복구 (Roll-out/back)

  • 버전 1.0 배포 후, 버전 1.1을 어느 프로세스에 배포할지 지정할 수 있음

  • 버전 1.1이 문제가 있다면 복구할 수 있음

  • 비정상적인 상황에서 서버가 다운된다면 쿠버네티스가 되살림

  • kill 해서 종료한 프로세스들을 다시 살림

profile
https://github.com/min731

0개의 댓글

관련 채용 정보