공부하고 기록하는, 경제학과 출신 개발자의 노트

학습일지/Knative

Knative로 배포한 애플리케이션의 동작과정

inspirit941 2022. 1. 24. 13:50
반응형

 

  1. 외부의 요청이 External Load balancer로 들어온다. 해당 요청은 Ingress Gateway (Istio)로 포워딩된다.
  2. istio gateway의 목적은 'destination Service'로 요청을 전달하는 것.
  3. k8s에서 애플리케이션을 실행하려면 몇 가지 리소스가 필요하다.
    • Deployment -> it creates a ReplicaSet that creates pods.
    • Horizontal Pod Scaler -> ensure the correct number of Replicas is running.
    • Service -> other pod에서 Access하기 위한 통로.
    • Ingress Gateway to Service -> 클러스터 외부에서 접근하기 위한 경로.

 

kn service create로 만들어진 기본 리소스는 이 중 Deployment, Service, Pod AutoScaler.

  • Ingress Gateway는 특정 subdomain으로 들어온 모든 요청을 application으로 forwarding해 준다.
  • router configuration, istio service 등 다른 리소스도 추가.

이렇게 여러 resource의 조합을 하나로 묶어서 Revision을 생성함. 애플리케이션 배포에 변경사항이 있을 때마다 새로 추가되며, rolling updates / rollbacks / separate 등 여러 기능을 지원한다.

 

 


 

 

knative 애플리케이션의 특징 중 하나는,

  • 해당 revision으로 들어오는 트래픽이 일정 기간동안 없을 경우 자동으로 Scale up to Zero 상태로 변경할 수 있다는 것.
  • 하지만 사용자 입장에서는 이게 zero scale되었는지 알 수 없을 만큼 애플리케이션 사용에 지장이 없다.

 

  • Ingress Gateway에서 트래픽을 받았는데 replicaSet이 unavailable인 경우, ingress gateway는 해당 트래픽을 Activator로 보낸다.
  • Activator는 autoscaler를 호출하고, autoscaler는 deployment 객체의 replicaset을 변경하도록 명령한다.
    • autoScaler는 처음에 podScaler가 생성될 때 구성된 객체.
  • replicaset이 복구되면, activator는 받았던 트래픽을 service로 forwarding한다.

 

 

Configuration

  • Revision 설정과 관련있음
  • contains / maintains the desired state of Application.
  • 설정을 변경한다 -> Configuration 값이 바뀐다 -> New Revision을 생성한다.

 

Revision

  • service, deployment, podscaler와 같은 k8s 애플리케이션 기본 리소스 + optional resource의 조합.
  • knative에게 "which requests goes where" 를 지정해주는 역할.

 

 

 


 

애플리리케이션을 실행하고 kubectl get services,virtualservices

를 입력하면 아래의 리소스를 확인할 수 있다.

 

 

  • k8s Service뿐만 아니라 istio virtualservice도 생성한 것을 확인할 수 있음. 


  • pod autoscaler. 트래픽이 들어오면 pod autoscaler가 작동하는 것을 확인할 수 있다.
    scaler의 디폴트 옵션은 incoming traffic이지만, formula based query 기준으로 작동하도록 변경할 수도 있다. 


    • Router. Mapping Endpoint - 일종의 subDomain 같은 역할. 외부 트래픽을 내부의 application과 연결을 관장한다.
      • 특정 revision 또는 여러 개의 revision이 트래픽을 받도록 설정할 수 있다.

 

 

 

반응형