Olá, Minikube!

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.

Objetivos

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

Antes de você começar

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:

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.

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.

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
    

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 complementos 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.

Próximos passos

Última modificação December 15, 2024 at 6:24 PM PST: Merge pull request #49087 from Arhell/es-link (2c4497f)