Kubeflow – KFServing 설치

KFServing는 Kubeflow의 구성 요소로 포함되어 있습니다. 별도로 설치가 필요 없이 사용할 수 있습니다. 물론 Kubeflow 없이 독립적으로 설치해서 사용할 수도 있습니다.

전제 조건

KFServing을 사용하려면, 쿠버네티스 클러스터에 Knative Serving 및 Istio가 설치되어 있어야 합니다. Knative는 Istio Ingress Gateway를 사용하여 요청을 Knative 서비스로 라우팅합니다. Kubeflow 및 KFServing 팀이 테스트 한 정확한 버전을 사용하려면 개발자 안내서의 전제 조건을 참조하십시오

Knative를 빠르게 실행하거나 서비스 메시가 필요하지 않은 경우, 서비스 메시(sidecar injection 없이 Istio를 설치하는 것이 좋습니다.

현재는 Knative Serving 만 필요합니다. cluster-local-gateway 는 클러스터 내부 트래픽을 위한 통로로 사용합니다. cluster-local-gateway를 설치하려면 여기의 지침을 따르십시오

KFServing 웹훅 인증서를 제공합니다.

KFServing 설치

Kubeflow와 함께 KFServing 설치

KFServing 은 Kubeflow를 설치할때 기본적으로 설치됩니다. Kubeflow 매니페스트에 KFServing을 설치하는 부분이 포함되어 있습니다. Kubeflow와 함께 설치되는 KFServing의 경우 KFServing 컨트롤러는 kubeflow  네임스페이스에 배포됩니다. Kubeflow의 쿠버네티스 최소 요주 버전이 1.14이므로 개체 선택기(object selector)를 지원하지 않을 수 있습니다. 그래서 Kubeflow 설치시 ENABLE_WEBHOOK_NAMESPACE_SELECTOR 가 기본적으로 활성화 되어 있어야합니다.

Kubeflow의 대시보드나 프로필 컨트롤러(Profile Controller)를 사용하여, 사용자 네임스페이스를 만드는 경우에는 KFServing에서 모델을 배포할 수 있도록 serving.kubeflow.org/inferenceservice: enabled 레이블이 자동으로 추가됩니다. 만약 네임스페이스를 직접 생성하는 경우에는 해당 네임스페이스에 serving.kubeflow.org/inferenceservice: enabled 레이블을 추가해야만, KFServing의  InferenceService 를 사용할 수 있습니다.

독립형 KFServing 설치

쿠버네티스 클러스터에 KFServing을 독립적으로 설치하면, 우선 위의 전제 조건을 충족시켜야 합니다. 전제 조건이 충족되면 다음 명령어를 사용하여 KFServing을 설치할 수 있습니다. 다음 명령어는 GitHub 리포지토리의 yaml 파일을 사용하여 KFServing 0.3.0을 설치합니다.

TAG=v0.3.0
CONFIG_URI=https://raw.githubusercontent.com/kubeflow/kfserving/master/install/$TAG/kfserving.yaml

kubectl apply -f ${CONFIG_URI}

KFServing을 독립형으로 설치했을 경우에는 KFServing 컨트롤러는 kfserving-system 네임스페이스에 배포됩니다.

KFServing은 pod mutator와 mutating admission webhooks 을 사용하여 KFServing의 스토리지 이니셜라이저(storage initializer) 컴포넌트를 주입합니다. 기본적으론 네임스페이스에 control-plane 레이블이 지정되어 있지 않으면, 해당 네임스페이스의 포드들은 pod mutator를 통과합니다. 그렇기 때문에 KFServing의 pod mutator의 웹훅이 필요 없는 포드가 실행될때 문제가 발생할 수 있습니다.

쿠버네티스 1.14 사용자의 경우 serving.kubeflow.org/inferenceservice: enabled 레이블이 추가된 네임스페이스의 포드에 ENABLE_WEBHOOK_NAMESPACE_SELECTOR 환경변수를 추가하여, KFServing pod mutator를 통과하도록 하는게 좋습니다.

env:
- name: ENABLE_WEBHOOK_NAMESPACE_SELECTOR
  value: enabled

쿠버네티스 1.15+ 사용자의 경우 KFServing InferenceService 포드만 pod mutator 를 통과 할 수 있도록 객체 선택기(object selector)를 켜는 것이 좋습니다.

kubectl patch mutatingwebhookconfiguration inferenceservice.serving.kubeflow.org --patch '{"webhooks":[{"name": "inferenceservice.kfserving-webhook-server.pod-mutator","objectSelector":{"matchExpressions":[{"key":"serving.kubeflow.org/inferenceservice", "operator": "Exists"}]}}]}'

“Kubeflow – KFServing 설치”에 대한 한개의 댓글

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다