website/content/pt-br/docs/tutorials/hello-minikube.md

9.4 KiB

title content_type weight card
Olá, Minikube! tutorial 5
name weight
tutorials 10

Este tutorial demonstra como executar uma aplicação exemplo no Kubernetes utilizando o minikube. O tutorial fornece uma imagem de contêiner que utiliza o NGINX para repetir todas as requisições.

{{% heading "objectives" %}}

  • Instalar uma aplicação exemplo no minikube.
  • Executar a aplicação.
  • Visualizar os logs da aplicação.

{{% heading "prerequisites" %}}

Este tutorial assume que você já tem uma instância do minikube configurada. Veja minikube start para instruções de como instalar.

Você também irá precisar instalar o kubectl. Veja instalando ferramentas para instruções de como instalar.

Criando um cluster do minikube

minikube start

Abra o painel (dashboard)

Abra o painel (dashboard) do Kubernetes. Você pode fazer isso de duas formas distintas:

{{< tabs name="dashboard" >}} {{% tab name="Abra um navegador" %}} Abra um novo terminal e rode o comando:

# Inicie um novo terminal e deixe este comando rodando.
minikube dashboard

Agora, retorne para o terminal onde você executou o comando minikube start.

{{< note >}} O comando dashboard habilita o complemento do painel e abre o proxy no navegador padrão. Você pode criar recursos do Kubernetes no painel, como Deployment e Service.

Se você estiver executando num ambiente com o usuário root, veja Abrir o Painel com URL.

Por padrão, o painel só é acessível pela rede virtual interna do Kubernetes. O comando dashboard cria um proxy temporário para tornar o painel acessível por fora da rede virtual do Kubernetes.

Para parar o proxy, utilize o comando Ctrl+C para encerrar o processo. Após o término do comando, o painel permanece executando no cluster do Kubernetes. Você pode executar o comando dashboard novamente para criar outro proxy para acessar o painel. {{< /note >}}

{{% /tab %}} {{% tab name="Copie e cole a URL" %}}

Se você não deseja que o minikube abra um navegador para você, rode o comando dashboard com a opção de linha de comando --url. O minikube irá imprimir uma URL que você poderá abrir no navegador de sua preferência.

Abra um novo terminal e rode o comando:

# Inicie um novo terminal e deixe este comando rodando.
minikube dashboard --url

Agora, retorne para o terminal onde você executou o comando minikube start.

{{% /tab %}} {{< /tabs >}}

Criando um Deployment

Um Pod do Kubernetes consiste em um ou mais contêineres agrupados para fins de administração e gerenciamento de rede. O Pod deste tutorial possui apenas um contêiner. Um Deployment do Kubernetes verifica a integridade do seu Pod e reinicia o contêiner do Pod caso este seja finalizado. Deployments são a maneira recomendada de gerenciar a criação e escalonamento dos Pods.

  1. Usando o comando kubectl create para criar um Deployment que gerencia um Pod. O Pod executa um contêiner baseado na imagem do Docker disponibilizada.

    kubectl create deployment hello-node --image=registry.k8s.io/echoserver:1.4
    
  2. Visualize o Deployment:

    kubectl get deployments
    

    A saída será semelhante a:

    NAME         READY   UP-TO-DATE   AVAILABLE   AGE
    hello-node   1/1     1            1           1m
    
  3. Visualize o Pod:

    kubectl get pods
    

    A saída será semelhante a:

    NAME                          READY     STATUS    RESTARTS   AGE
    hello-node-5f76cf6ccf-br9b5   1/1       Running   0          1m
    
  4. Visualize os eventos do cluster:

    kubectl get events
    
  5. Visualize a configuração do kubectl:

    kubectl config view
    

{{< note >}} Para mais informações sobre o comando kubectl, consulte visão geral do kubectl. {{< /note >}}

Criando um Serviço

Por padrão, um Pod só é acessível utilizando o seu endereço IP interno no cluster Kubernetes. Para dispobiblilizar o contêiner hello-node fora da rede virtual do Kubernetes, você deve expor o Pod como um Service do Kubernetes.

  1. Exponha o Pod usando o comando kubectl expose:

    kubectl expose deployment hello-node --type=LoadBalancer --port=8080
    

    O parâmetro --type=LoadBalancer indica que você deseja expor o seu serviço fora do cluster Kubernetes.

    A aplicação dentro da imagem de teste escuta apenas na porta TCP 8080. Se você usou kubectl expose para expor uma porta diferente, os clientes não conseguirão se conectar a essa outra porta.

  2. Visualize o serviço que você acabou de criar:

    kubectl get services
    

    A saída será semelhante a:

    NAME         TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
    hello-node   LoadBalancer   10.108.144.78   <pending>     8080:30369/TCP   21s
    kubernetes   ClusterIP      10.96.0.1       <none>        443/TCP          23m
    

    Em provedores de nuvem que fornecem serviços de balanceamento de carga para o Kubernetes, um IP externo seria provisionado para acessar o serviço. No minikube, o tipo LoadBalancer torna o serviço acessível por meio do comando minikube service.

  3. Execute o comando a seguir:

    minikube service hello-node
    

    Este comando abre uma janela do navegador que serve o seu aplicativo e exibe o retorno da requisição ao aplicativo.

Habilitando Complementos (addons)

A ferramenta minikube inclui um conjunto integrado de {{< glossary_tooltip text="complementos" term_id="addons" >}} que podem ser habilitados, desabilitados e executados no ambiente Kubernetes local.

  1. Liste os complementos suportados atualmente:

    minikube addons list
    

    A saída será semelhante a:

    addon-manager: enabled
    dashboard: enabled
    default-storageclass: enabled
    efk: disabled
    freshpod: disabled
    gvisor: disabled
    helm-tiller: disabled
    ingress: disabled
    ingress-dns: disabled
    logviewer: disabled
    metrics-server: disabled
    nvidia-driver-installer: disabled
    nvidia-gpu-device-plugin: disabled
    registry: disabled
    registry-creds: disabled
    storage-provisioner: enabled
    storage-provisioner-gluster: disabled
    
  2. Habilite um complemento, por exemplo, metrics-server:

    minikube addons enable metrics-server
    

    A saída será semelhante a:

    The 'metrics-server' addon is enabled
    
  3. Visualize o Pod e o Service que você acabou de criar:

    kubectl get pod,svc -n kube-system
    

    A saída será semelhante a:

    NAME                                        READY     STATUS    RESTARTS   AGE
    pod/coredns-5644d7b6d9-mh9ll                1/1       Running   0          34m
    pod/coredns-5644d7b6d9-pqd2t                1/1       Running   0          34m
    pod/metrics-server-67fb648c5                1/1       Running   0          26s
    pod/etcd-minikube                           1/1       Running   0          34m
    pod/influxdb-grafana-b29w8                  2/2       Running   0          26s
    pod/kube-addon-manager-minikube             1/1       Running   0          34m
    pod/kube-apiserver-minikube                 1/1       Running   0          34m
    pod/kube-controller-manager-minikube        1/1       Running   0          34m
    pod/kube-proxy-rnlps                        1/1       Running   0          34m
    pod/kube-scheduler-minikube                 1/1       Running   0          34m
    pod/storage-provisioner                     1/1       Running   0          34m
    
    NAME                           TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)             AGE
    service/metrics-server         ClusterIP   10.96.241.45    <none>        80/TCP              26s
    service/kube-dns               ClusterIP   10.96.0.10      <none>        53/UDP,53/TCP       34m
    service/monitoring-grafana     NodePort    10.99.24.54     <none>        80:30002/TCP        26s
    service/monitoring-influxdb    ClusterIP   10.111.169.94   <none>        8083/TCP,8086/TCP   26s
    
  4. Desabilite o complemento metrics-server:

    minikube addons disable metrics-server
    

    A saída será semelhante a:

    metrics-server was successfully disabled
    

Limpeza

Agora você pode remover todos os recursos criados no seu cluster:

kubectl delete service hello-node
kubectl delete deployment hello-node

Encerre o cluster do minikube:

minikube stop

(Opcional) Apague a máquina virtual (VM) do minikube:

# Opcional
minikube delete

Se você desejar utilizar o minikube novamente para aprender mais sobre o Kubernetes, você não precisa apagar a VM.

{{% heading "whatsnext" %}}