본문 바로가기
문서 목차
ORKESTRIX설치

Knative Serving

트래픽 기반 자동 스케일링(Zero Scaling) 을 지원하는 서버리스 애플리케이션 실행 환경을 구성합니다. 요청이 없으면 파드 수를 0으로 줄이고, 요청이 들어오면 자동으로 다시 기동합니다.

QUANTUM C&S

트래픽 기반 자동 스케일링(Zero-Scaling)을 지원하는 서버리스 애플리케이션 실행 환경을 구성합니다. 요청이 없으면 파드 수를 0으로 줄이고, 요청이 들어오면 자동으로 다시 기동합니다.

네트워킹 레이어로 Istio를 사용합니다. Istio 설치가 선행되어 있어야 합니다.

설정값

inventory/qks/group_vars/all/all-k8s.yaml:

qks_knative_serving_operator_enabled: true
qks_knative_serving_version: 1.14.0

실행

./install.sh ubuntu plays/qks-knative-serving.yaml

설치 흐름

./install.sh ubuntu plays/qks-knative-serving.yaml
  ├─ 1. Knative Operator 배포
  ├─ 2. KnativeServing 초기화 리소스 생성
  └─ 3. KnativeServing 구성 적용(Istio 네트워킹 레이어 연동)

설치 확인

kubectl get pods -n knative-operator
kubectl get pods -n knative-serving

모든 파드가 Running이어야 합니다(storage-version-migration-* Job은 Completed가 정상).

실제 동작 확인

테스트 서비스를 배포하고 실제 요청 · 자동 스케일링을 확인합니다:

kubectl apply -f - <<EOF
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  name: test-ksvc
  namespace: default
spec:
  template:
    spec:
      containers:
        - image: gcr.io/knative-samples/helloworld-go
          env:
            - name: TARGET
              value: "test"
EOF

kubectl get ksvc test-ksvc   # READY: True 확인

Istio ingressgateway를 통해 실제 요청을 보냅니다:

curl -s -H "Host: test-ksvc.default.example.com" http://<노드IP>:31080/

정상 응답이 오면 서비스가 동작하는 것입니다.

일정 시간 트래픽 없이 대기하면 파드가 자동으로 0개로 줄어듭니다:

kubectl get pods -n default -l serving.knative.dev/service=test-ksvc

파드가 사라진 뒤 다시 위 curl 명령을 실행하면, 새 파드가 자동으로 기동되며 정상 응답합니다. 확인 후 정리:

kubectl delete ksvc test-ksvc -n default

다음 단계