11.2 Configuracão

A instalação Kubeflow mais recomendada é através de um dos provedores de pacotes listados na documentação oficial. Mas para melhor entendimento dos componentes e instalação local vamos usar o método avançado via manifests.

11.2.1 Pré requisitos

Verifique a versão do seu cluster Kubernetes:

kubectl version

Para a versão 1.8.1 do Kubeflow a versão do kubernetes precisa ser maior que 1.22.

O utilitário kustomize também é necessário para gerenciar os templates de manifests do Kubeflow. O Kubeflow é compátivel com a versão 5.4.2. A seguir esta o comando para instalação no Linux, modifique a URL de acordo com o seu sistema operacional.

mkdir ~/tmp
mkdir ~/bin
wget https://github.com/kubernetes-sigs/kustomize/releases/download/kustomize%2Fv5.4.2/kustomize_v5.4.2_linux_amd64.tar.gz -O ~/tmp/kustomize.tar.gz
tar xvf ~/tmp/kustomize.tar.gz -C ~/bin/
export PATH=$PATH:~/bin
chmod a+x ~/bin/kustomize
kustomize version

11.2.2 Instalação via manifests

O Kubeflow pode ser instalado via manifest. Estes manifests são a base para todos os provedores de pacotes. Para iniciar a instalação faça o clone do repositório:

git clone -b v1.8.1 https://github.com/kubeflow/manifests.git

Agora a partir do diretório dos manifests vamos iniciar a instalação.

11.2.2.2 cert-manager

Um dos componentes do Kubeflow é um gerenciador de certificados, o cert-manager. Para instala-lo basta executar o seguinte passo:

kustomize build common/cert-manager/cert-manager/base | kubectl apply -f -
kubectl wait --for=condition=ready pod -l 'app in (cert-manager,webhook)' --timeout=180s -n cert-manager
kubectl wait --for=jsonpath='{.subsets[0].addresses[0].targetRef.kind}'=Pod endpoints -l 'app in (cert-manager,webhook)' --timeout=180s -n cert-manager

Verifique se os Pods foram criados corretamente:

kubectl get pods -n cert-manager

11.2.2.3 istio

O Kubeflow utiliza um service mesh para facilitar o fluxo e gateway entre os serviços, o istio. Para criar a infra para o istio execute os comandos abaixo:

kustomize build common/istio-1-17/istio-crds/base | kubectl apply -f -
kustomize build common/istio-1-17/istio-namespace/base | kubectl apply -f -
kustomize build common/istio-1-17/istio-install/base | kubectl apply -f -

echo "Waiting for all Istio Pods to become ready..."
kubectl wait --for=condition=Ready pods --all -n istio-system --timeout 300s

Verifique criação dos PODs do istio:

kubectl get pods -n istio-system

11.2.2.4 Dex

O Dex ajuda na autenticação do Kubeflow com integração com diferentes backends de autenticação como Google, Github e Active Directory. Segue o passo para instação:

kustomize build common/dex/overlays/istio | kubectl apply -f -

Verifique a situação dos PODs do Dex:

kubectl get pods -n auth

11.2.2.5 Arrikto oidc-authservice

O Arrikto oidc-authservice extende o Istio com a capacidade de também ser um cliente OIDC.

kustomize build common/oidc-client/oidc-authservice/base | kubectl apply -f -

Verificar instalação do oidc-authservice:

kubectl get pods -n istio-system

11.2.2.6 Knative

O Knative é uma solução de aplicações Serverless e eventuais para Kubernetes.

kustomize build common/knative/knative-serving/overlays/gateways | kubectl apply -f -
kustomize build common/istio-1-16/cluster-local-gateway/base | kubectl apply -f -
kustomize build common/knative/knative-eventing/base | kubectl apply -f -

Verfique execução dos PODs:

kubectl get pods -n knative-eventing
kubectl get pods -n knative-serving

11.2.2.1 Kubeflow namespace and Roles

O primeiro passo é criar a namespace e roles do Kubeflow:

kustomize build common/kubeflow-namespace/base | kubectl apply -f -
kustomize build common/kubeflow-roles/base | kubectl apply -f -

11.2.2.1 Kubeflow istio resource

Criação do isto resource do Kubeflow:

kustomize build common/istio-1-17/kubeflow-istio-resources/base | kubectl apply -f -

Verificar instalação do istio resource para o kubeflow:

kubectl get pods -n istio-system

11.2.2.7 Kubeflow pipelines

O Kubeflow pipelines é um componente do Kubeflow para criar os pipeline de modelo. Dentro dele podemos encontrar outros componente como:

  • minio: O minio é utilizado para armazenar os artefatos gerados no pipeline.

  • Aargo: O Argo é utilizado para a gestão de workflows.

  • mysql: Nesta instalação o Mysql é utilizado para a persistência da base de metadados.

  • ml-pipeline: São os backends do Kubeflow pipeline.

  • metadata controller: Backend para gerir os metadados dos pipelines.

Todos esses componentes estão encapsulados em um unico manifest:

kustomize build apps/pipeline/upstream/env/cert-manager/platform-agnostic-multi-user | kubectl apply -f -

Verifique a situação dos PODs:

kubectl get pods -n kubeflow

A incialização dos PODs pode demorar alguns minutos até que todos eles sinalizem o status "Running".

11.2.2.8 KServe / KFServing

O Kserve é um servidor de execução de inferências assim como o MLServe.

Para instalar o Kserve execute o comando abaixo:

kustomize build contrib/kserve/kserve | kubectl apply -f -
kustomize build contrib/kserve/models-web-app/overlays/kubeflow | kubectl apply -f -

Verifique a execução dos PODs de Kserve:

kubectl get pods -n kserve
kubectl get pods -n kubeflow | grep kserve

11.2.2.9 Katib

O Katib é um componente do Kubeflow para hiperparametrização e AutoML.

kustomize build apps/katib/upstream/installs/katib-with-kubeflow | kubectl apply -f -

Verifique a inicialização dos PODs

kubectl get pods -n kubeflow | grep katib

11.2.2.10 Central Dashboard

O Central Dashbaord é a WebUI do Kubeflow.

kustomize build apps/centraldashboard/upstream/overlays/kserve | kubectl apply -f -

Verifique a execução do POD de Kserve:

kubectl get pods -n kubeflow | grep dashboard

11.2.2.11 Admission Webhook

Componente do Kubeflow para integração via WebHook:

kustomize build apps/admission-webhook/upstream/overlays/cert-manager | kubectl apply -f -

Verifique a execução dos PODs:

kubectl get pods -n kubeflow | grep admission

11.2.2.12 Notebooks

O Kubeflow notebook gerencia a criação de aplicações de Notebooks:

kustomize build apps/jupyter/notebook-controller/upstream/overlays/kubeflow | kubectl apply -f -

Também vamos instalar a aplicação Jupyter:

kustomize build apps/jupyter/jupyter-web-app/upstream/overlays/istio | kubectl apply -f -

Verifique a execução dos PODs:

kubectl get pods -n kubeflow | egrep jupyter\|notebook

11.2.2.13 PVC Viwer Controller

É o controlador para gerenciar a crição de volumes persistentes no kubernetes para suportar os volumes do kubeflow.

kustomize build apps/pvcviewer-controller/upstream/default | kubectl apply -f -

11.2.2.14 Profiles + KFAM

Este componente é o gestor de perfis do Kubeflow:

kustomize build apps/profiles/upstream/overlays/kubeflow | kubectl apply -f -

Verifique a execução do POD:

kubectl get pods -n kubeflow | grep profiles

11.2.2.15 Volumes Web App

Este componente extende a WebUI do Kubeflow para a gestão dos volumes persistentes.

kustomize build apps/volumes-web-app/upstream/overlays/istio | kubectl apply -f -

Verifique a execução do POD:

kubectl get pods -n kubeflow | grep volumes

11.2.2.16 Tensorboard

Este componente integra o tensorbord para acompanhar as métricas de modelos que utilizam o tensorflow:

kustomize build apps/tensorboard/tensorboards-web-app/upstream/overlays/istio | kubectl apply -f -
kustomize build apps/tensorboard/tensorboard-controller/upstream/overlays/kubeflow | kubectl apply -f -

Verifique a execução dos PODs:

kubectl get pods -n kubeflow  | grep tensor

11.2.2.17 Training Operator

Os Trainig Operators ajudam no treinamento com bibliotecas padrões como Tensorflow, Pytorch e outros.

kustomize build apps/training-operator/upstream/overlays/standalone | kubectl apply -f -

Verifique a execução dos PODs:

kubectl get pods -n kubeflow  | grep training-operator

11.2.2.18 User Namespace

Por fim é necessário criar uma namespace e a infra de usuario para trabalharmos com o Kubeflow:

kustomize build common/user-namespace/base | kubectl apply -f -

Verifique a execução dos PODs:

kubectl get pods -n kubeflow-user-example-com

11.2.2.19 Acessando o Kubeflow

Agora que a instalação esta terminada, para acessar o Kubeflow é necessário criar um port-foward com a sua máquina local:

kubectl port-forward svc/istio-ingressgateway -n istio-system 8080:80

Acesse a url http://localhost:8080. O usuário padrão é user@example.com e a senha padrão é 12341234.

11.2.2.20 Minikube and Kubeflow

Para uma execução local é possível utilizar o minikube. A inicialização local do kubeflow gera multiplos serviços e multiplos pods, por isso é necessário aumentar o limite de open files do kernel para contornar este problema:

sudo sysctl fs.inotify.max_user_instances=1280
sudo sysctl fs.inotify.max_user_watches=655360

Last updated