Guia de Instalação e Configuração do KServe no Kubernetes

Introdução ao KServe

O KServe é uma plataforma de inferência de Machine Learning (ML) serverless e padronizada, projetada para ser executada em clusters Kubernetes. Ele oferece uma interface de alta abstração para implantação de modelos de produção, suportando diversos frameworks como TensorFlow, XGBoost, Scikit-Learn, PyTorch e HuggingFace. A solução simplifica tarefas complexas como auto-escalonamento (incluindo escala para zero), verificações de integridade, configurações de rede e implantações do tipo Canary.

O ecossistema do KServe é construído principalmente com as seguintes linguagens:

  • Go: Utilizada para o gerenciamento de recursos do Kubernetes e serviços de backend.
  • Python: Focada na lógica de inferência de modelos e pré/pós-processamento de dados.
  • Shell: Empregada em scripts de automação e processos de CI/CD.

Arquitetura e Componentes Essenciais

Para fornecer funcionalidades avançadas de inferência, o KServe integra tecnologias robustas:

  • Kubernetes: Orquestrador de contêineres que serve como base da infraestrutura.
  • Knative Serving: Responsável pelo modelo serverless e pelo escalonamento dinâmico baseado na demanda.
  • Istio: Service Mesh utilizaod para roteamento inteligente de tráfego e segurança de rede.
  • ModelMesh: Componente opcional para servir modelos em larga escala com alta densidade.

Pré-requisitos do Sistema

Antes de iniciar a instalação, certifique-se de possuir o seguinte ambiente configurado:

  1. Um cluster Kubernetes funcional (v1.24+ recomendado).
  2. Ferramenta de linha de comando kubectl configurada para acessar o cluster.
  3. Helm (versão 3 ou superior) instalado para gerenciamento de pacotes.

Procedimento de Instalação Passo a Passo

1. Clonagem do Repositório Oficial

Inicie baixando os arquivos de configuração necessários diretamente do repositório do projeto:

git clone https://github.com/kserve/kserve.git
cd kserve

2. Preparação do Ambiente Serverless (Knative)

O KServe depende do Knative para gerenciar o ciclo de vida serverless. Instale os Custom Resource Definitions (CRDs) e os componentes principais:

# Instalação dos CRDs do Knative Serving
kubectl apply -f https://github.com/knative/serving/releases/download/v0.26.0/serving-crds.yaml

# Instalação dos componentes core do Knative
kubectl apply -f https://github.com/knative/serving/releases/download/v0.26.0/serving-core.yaml

3. Configuração de Rede com Istio

O Istio gerencia o tráfego de entrada e as políticas de rede para as instâncias de enferência:

# Aplicando manifestos do Istio específicos para Knative
kubectl apply -f https://github.com/knative/net-istio/releases/download/v0.26.0/istio.yaml
kubectl apply -f https://github.com/knative/net-istio/releases/download/v0.26.0/net-istio.yaml

4. Instalação do KServe via Helm

Com as dependências instaladas, utilize o Helm para implantar o controlador do KServe:

helm install kserve-control-plane ./helm/kserve-helm-chart -n kserve --create-namespace

5. Validação do Status

Monitore os pods no namespace dedicado para graantir que todos os serviços estejam ativos:

kubectl get pods -n kserve

Implantando seu Primeiro Modelo

A configuração de modelos no KServe é feita através do recurso customizado InferenceService. Abaixo, um exemplo de como definir um preditor baseado em Scikit-Learn:

apiVersion: "serving.kserve.io/v1beta1"
kind: "InferenceService"
metadata:
  name: "servico-sklearn-exemplo"
spec:
  predictor:
    sklearn:
      storageUri: "gs://kfserving-examples/models/sklearn/1.0/model"

Para aplicar a configuração acima, salve o conteúdo em um arquivo chamado sklearn-deploy.yaml e execute:

kubectl apply -f sklearn-deploy.yaml

O KServe criará automaticamente uma URL de endpoint para o modelo, gerenciando o provisionamento dos pods e o roteamento de tráfego de forma transparente.

Tags: KServe kubernetes machine learning MLOps Knative

Publicado em 7-14 19:15