다음 다이어그램은 Knative serving 리소스 모델을 보여줍니다.
이 다이어그램은 두 개의 Knative serving 서비스(Service A
및 Service B
)가 포함된 Google Cloud 프로젝트를 보여줍니다. 각 서비스에는 여러 버전이 있습니다.
이 다이어그램에서 볼 수 있듯이 Service A
에는 수신되는 요청이 많기 때문에 여러 컨테이너 인스턴스가 시작되고 실행되고 있습니다. Service B
에는 현재 수신되는 요청이 없으므로 아직 컨테이너 인스턴스가 시작되지 않았습니다.
Knative serving 서비스
이 서비스는 Knative serving의 기본 리소스입니다. 각 서비스는 특정 GKE 클러스터 네임스페이스에 있습니다.
특정 Google Cloud 프로젝트는 여러 리전 또는 GKE 클러스터에서 여러 서비스를 실행할 수 있습니다.
각 서비스는 고유한 엔드포인트를 노출하고 기본 인프라를 자동으로 확장하여 수신 요청을 처리합니다.
Knative serving 버전
서비스에 배포할 때마다 버전이 생성됩니다. 버전은 특정 컨테이너 이미지 외에 환경 변수, 메모리 한도, 동시 실행 값과 같은 환경 설정으로 구성됩니다.
버전은 변경할 수 없습니다. 버전이 생성된 후에는 이를 수정할 수 없습니다. 예를 들어 새 Knative serving 서비스에 컨테이너 이미지를 배포하면 첫 번째 버전이 생성됩니다. 그런 다음 동일한 서비스에 다른 컨테이너 이미지를 배포하면 두 번째 버전이 생성됩니다. 이후에 환경 변수를 설정하면 세 번째 버전이 생성됩니다.
요청은 최근에 생성된 정상적인 서비스 버전으로 최대한 빨리 자동으로 라우팅됩니다. 필요에 따라 서로 다른 버전 간에 트래픽을 분할할 수 있습니다.
Knative serving 컨테이너 인스턴스
요청을 수신하는 각 버전은 이러한 모든 요청을 처리하는 데 필요한 컨테이너 인스턴스 수로 자동 확장됩니다. 즉, 컨테이너 인스턴스 한 개가 동시에 여러 요청을 처리할 수 있습니다. 동시 실행 설정을 사용하면 특정 컨테이너 인스턴스에 동시에 전송할 수 있는 최대 요청 수를 설정할 수 있습니다.