isPowerfulBlog

[Kubernetes] Knative란? 본문

Infra

[Kubernetes] Knative란?

왕밤빵도라에몽 2023. 6. 4. 12:29

Severless란?

  • 클라우드 컴퓨팅 모델 중 하나로 개발자가 서버를 직접 관리할 필요가 없는 아키텍처
  • 동적으로 서버의 자원을 할당
    요청이 들어오면 그 때 자원 할당하여 처리, 이후 다시 대기 상태로 돌아옴

Knative란?

  • 서버리스 워크로드를 쿠버네티스 클러스터에서 실행할 수 있도록 지원하는 툴
  • 쿠버네티스 내에서 컨테이너화된 애플리케이션 구축, 배포, 관리 툴과 유틸리티 제공
  • 쿠버네티스 위에서 구동 -> 특정 클라우드에 종속성 X
  • 온프레미스 환경에서도 설치 가능

등장 배경

  • 서버리스 서비스들의 특정 클라우드 플랫폼에 대한 의존성 문제를 해결하기 위함
    아마존 클라우드의 람다(Lambda)나, 구글 클라우드의 펑션(Function)등이 이에 해당한다.
    그런데 이러한 서버리스 서비스들은 특정 클라우드 플랫폼에 의존성을 가지고 있는데,
    이러한 문제를 해결하기 위해서 나온 오픈소스 서버리스 솔루션이 Knative

기능

  • Build
  • Serving
  • Eventing

Build

  • 소스 코드를 컨테이너로 바꾸는 프로세스 자동화

Serving

  • 로드밸런싱
  • 오토스케일링
  • 배포

쿠버네티스와 마찬가지로 yaml 파일 정의해서 컨테이너, 서비스 정의하여 배포
-> 하지만 로드밸런서, ingress 등 추가 설정 X
간단하게 서비스 컨테이너 이름만 정의, 컨테이너만 정의

image

Service

  • 하나의 서버리스 애플리케이션을 나타냄

Route

  • 들어오는 트래픽을 적절한 서버리스 워크로드로 라우팅하는 역할
  • 최신 버전의 revision으로 라우팅할 수 도 있지만, 카나리 테스트처럼 여러 revision으로 라우팅할 수도 있음

Configuration

  • 컨테이너 이미지, 환경 변수 및 기타 구성 옵션을 포함하여 서버리스 애플리케이션의 원하는 상태를 정의

Revision

  • 워크로드에 대한 각 수정 사항에 대한 코드 및 구성의 특정 시점 스냅샷
  • Configuration의 히스토리, configuration을 생성할때마다 새로운 revision 생성 -> 롤백 가능

Eventing

  • 컨테이너 기반 서비스 및 기능 트리거

Reference

https://knative.dev/docs
https://bcho.tistory.com/1322
https://www.ibm.com/kr-ko/topics/knative
https://www.youtube.com/watch?v=69OfdJ5BIzs