Implantação do JupyterHub
Esta seção descreve as tarefas que você deve concluir para implantar o JupyterHub no seu cluster Kubernetes.
|
É possível implantar o JupyterHub em plataformas diferentes do Kubernetes. A implantação do JupyterHub em plataformas diferentes do Kubernetes está fora do escopo desta solução. |
Pré-requisitos
Antes de executar o exercício de implantação descrito nesta seção, presumimos que você já tenha executado as seguintes tarefas:
-
Você já tem um cluster Kubernetes funcional.
-
Você já instalou e configurou o NetApp Trident no seu cluster Kubernetes. Para mais detalhes sobre o Trident, consulte o"Documentação do Trident" .
Instalar o Helm
O JupyterHub é implantado usando o Helm, um gerenciador de pacotes popular para Kubernetes. Antes de implantar o JupyterHub, você deve instalar o Helm no seu nó de controle do Kubernetes. Para instalar o Helm, siga as instruções "instruções de instalação" na documentação oficial do Helm.
Definir classe de armazenamento padrão do Kubernetes
Antes de implantar o JupyterHub, você deve designar um StorageClass padrão dentro do seu cluster Kubernetes. Para designar uma StorageClass padrão em seu cluster, siga as instruções descritas no"Implantação do Kubeflow" seção. Se você já designou uma StorageClass padrão dentro do seu cluster, pode pular esta etapa.
Implantar o JupyterHub
Depois de concluir as etapas acima, você estará pronto para implantar o JupyterHub. A implantação do JupyterHub requer as seguintes etapas:
Configurar a implantação do JupyterHub
Antes da implantação, é uma boa prática otimizar a implantação do JupyterHub para seu respectivo ambiente. Você pode criar um arquivo config.yaml e utilizá-lo durante a implantação usando o gráfico Helm.
Um exemplo de arquivo config.yaml pode ser encontrado em https://github.com/jupyterhub/zero-to-jupyterhub-k8s/blob/HEAD/jupyterhub/values.yaml
|
Neste arquivo config.yaml, você pode definir o parâmetro (singleuser.storage.dynamic.storageClass) para o NetApp Trident StorageClass. Esta é a classe de armazenamento que será usada para provisionar os volumes para espaços de trabalho de usuários individuais. |
Adicionando volumes compartilhados
Se quiser usar um volume compartilhado para todos os usuários do JupyterHub, você pode ajustar seu config.yaml adequadamente. Por exemplo, se você tiver um PersistentVolumeClaim compartilhado chamado jupyterhub-shared-volume, você pode montá-lo como /home/shared em todos os pods de usuário como:
singleuser:
storage:
extraVolumes:
- name: jupyterhub-shared
persistentVolumeClaim:
claimName: jupyterhub-shared-volume
extraVolumeMounts:
- name: jupyterhub-shared
mountPath: /home/shared
|
Esta é uma etapa opcional, você pode ajustar esses parâmetros conforme suas necessidades. |
Implantar o JupyterHub com o Helm Chart
Informe ao Helm sobre o repositório de gráficos do JupyterHub Helm.
helm repo add jupyterhub https://hub.jupyter.org/helm-chart/
helm repo update
Isso deve mostrar uma saída como esta:
Hang tight while we grab the latest from your chart repositories...
...Skip local chart repository
...Successfully got an update from the "stable" chart repository
...Successfully got an update from the "jupyterhub" chart repository
Update Complete. ⎈ Happy Helming!⎈
Agora instale o gráfico configurado pelo seu config.yaml executando este comando no diretório que contém seu config.yaml:
helm upgrade --cleanup-on-fail \
--install my-jupyterhub jupyterhub/jupyterhub \
--namespace my-namespace \
--create-namespace \
--values config.yaml
|
Neste exemplo: |
<helm-release-name> é definido como my-jupyterhub, que será o nome da sua versão do JupyterHub. <k8s-namespace> é definido como my-namespace, que é o namespace onde você deseja instalar o JupyterHub. O sinalizador --create-namespace é usado para criar o namespace se ele ainda não existir. O sinalizador --values especifica o arquivo config.yaml que contém as opções de configuração desejadas.
Verificar implantação
Enquanto a etapa 2 estiver em execução, você poderá ver os pods sendo criados a partir do seguinte comando:
kubectl get pod --namespace <k8s-namespace>
Aguarde até que o hub e o pod proxy entrem no estado Em execução.
NAME READY STATUS RESTARTS AGE
hub-5d4ffd57cf-k68z8 1/1 Running 0 37s
proxy-7cb9bc4cc-9bdlp 1/1 Running 0 37s
Acesse o JupyterHub
Encontre o IP que podemos usar para acessar o JupyterHub. Execute o seguinte comando até que o EXTERNAL-IP do serviço proxy-public esteja disponível, como na saída de exemplo.
|
Usamos o serviço NodePort em nosso arquivo config.yaml, você pode ajustar para seu ambiente com base em sua configuração (por exemplo, LoadBalancer). |
kubectl --namespace <k8s-namespace> get service proxy-public
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
proxy-public NodePort 10.51.248.230 104.196.41.97 80:30000/TCP 1m
Para usar o JupyterHub, insira o IP externo do serviço proxy-público em um navegador.