Instalando JupyterHub com Rancher para Machine Learning em Kubernetes

A inteligência artificial (IA) e o aprendizado de máquina (ML) são campos em rápida expansão, exigindo ambientes de computação distribuída robustos. O Kubernetes, com sua capacidade de gerenciar cargas de trabalho em larga escala, é ideal para essas tarefas. JupyterHub, uma plataforma multiusuário para hospedar ambientes Jupyter Notebook, é uma ferramenta essencial para cientistas de dados e pesquisadores de ML. Este guia detalha como configurar o JupyterHub em um cluster Kubernetes gerenciado pelo Rancher, criando um espaço de trabalho escalável para desenvolvimento de IA/ML.

O que é o JupyterHub?

O JupyterHub é um servidor multiusuário que permite a vários usuários executar e gerenciar instâncias de Jupyter Notebook. Ele simplifica o acesso a recursos computacionais e de dados em ambientes de nuvem ou data center, sem sobrecarregar os usuários com tarefas de instalação e manutenção. Administradores podem gerenciar eficientemente os recursos compartilhados, enquanto os usuários desfrutam de um ambiente de desenvolvimento familiar e acessível.

Kubernetes para Cargas de Trabalho de IA/ML

O Kubernetes é particularmente eficaz no gerenciamento de ambientes de computação distribuída. Seu design declarativo e a descoberta de serviços facilitam a alocação de recursos para cargas de trabalho computacionalmente intensivas, como as de IA/ML. O Kubernetes permite a migração de cargas de trabalho entre infraestruturas físicas com mais facilidade, atendendo à necessidade de escalabilidade em projetos de IA/ML.

Configurando o JupyterHub com Rancher

Presume-se que você já possua um cluster Kubernetes gerenciado pelo Rancher. O armazenamento persistente é um requisito fundamental para o JupyterHub. Para fins de demonstração, utilizaremos o provedor NFS experimental disponível no Rancher App Catalog. Navegue até o App Catalog no Rancher, procure pelo provedor NFS, aceite as configurações padrão e inicie-o. Caso já possua uma solução de armazenamento persistente, sinta-se à vontade para utilizá-la.

Após configurar o armazenamento e definir uma classe de armazenamento padrão, prossiga com a implantação do JupyterHub utilizando o Helm 3. Certifique-se de ter o cliente Helm 3 instalado ou utilize o Rancher Catalog para gerenciar os Helm charts.

Primeiro, crie um namespace dedicado para o JupyterHub. Na interface do Rancher, navegue até o cluster, selecione "Projects/Namespaces" e crie um novo namespace, por exemplo, "jhub".

Em seguida, adicione o repositório Helm do JupyterHub ao seu catálogo. Se estiver usando o Rancher Catalog, adicione o repositório através da UI:

helm repo add jupyterhub https://jupyterhub.github.io/helm-chart/
helm repo update

Crie um arquivo de configuração, config.yaml, com as seguintes configurações:

proxy:
  secretToken: "<seu-token-secreto>"
ingress:
  enabled: true
  hosts:
    - "<seu-nome-de-host>"

Gere um token secrreto executando openssl rand -hex 32 e substitua <seu-token-secreto> pela saída. Substitua <seu-nome-de-host> por um nome DNS acessível para sua interface JupyterHub.

Instale o chart do JupyterHub com o seguinte comando, garantindo que o arquivo config.yaml esteja no seu diretório de trabalho atual:

RELEASE=jhub
NAMESPACE=jhub
helm upgrade --install $RELEASE jupyterhub/jupyterhub \
  --namespace $NAMESPACE \
  --version=0.8.2 \
  --values config.yaml

O Helm iniciará a implentação dos componentes necessários. Após a conclusão, você poderá acessar a interface do JupyterHub através do nome de host configurado. Verifique o status dos pods na seção "Workloads" do Rancher UI.

A interface de login será exibida ao acessar o nome de host configurado.

JupyterHub Login Screen

Em algumas versões do Kubernetes (como 1.16), pode ser necessário aplicar um patch para corrigir a interação do JupyterHub com a API do Kubernetes. Execute o seguinte comando:

kubectl patch deploy -n $NAMESPACE hub --type json --patch '[{"op": "replace", "path": "/spec/template/spec/containers/0/command", "value": ["bash", "-c", "\nmkdir -p ~/hotfix\ncp -r /usr/local/lib/python3.6/dist-packages/kubespawner ~/hotfix\nls -R ~/hotfix\npatch ~/hotfix/kubespawner/spawner.py << EOT\n72c72\n<             key=lambda x: x.last_timestamp,\n---\n>             key=lambda x: x.last_timestamp and x.last_timestamp.timestamp() or 0.,\nEOT\n\nPYTHONPATH=$HOME/hotfix jupyterhub --config /srv/jupyterhub_config.py --upgrade-db\n"]}]'

Com isso, seu ambiente JupyterHub estará operacional no Rancher. Por padrão, o JupyterHub utiliza autenticação PAM, permitindo o login com usuários Linux válidos no sistema. Após o login, você poderá criar novos notebooks.

JupyterHub Create Notebook

Para explorar outras opções de autenticação, como a autenticação via GitHub, atualize o arquivo config.yaml com as configurações apropriadas e execute novamente o comando helm upgrade.

Conclusão

Este guia demonstrou como instalar o JupyterHub usando o Rancher em um cluster Kubernetes, fornecendo uma base escalável para cargas de trabalho de ciência de dados e aprendizado de máquina. Considere fatores adicionais para uma instalação completa, mas este procedimento fornece um ponto de partida rápido para suas jornadas de IA/ML.

Tags: kubernetes rancher jupyterhub machine learning IA

Publicado em 7-27 11:31