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

283 lines
9.9 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

---
title: Olá, Minikube!
content_type: tutorial
weight: 5
menu:
main:
title: "Iniciar"
weight: 10
post: >
<p>Pronto para meter a mão na massa? Vamos criar um cluster Kubernetes simples e executar uma aplicação exemplo.</p>
card:
name: tutorials
weight: 10
---
<!-- overview -->
Este tutorial mostra como executar uma aplicação exemplo no Kubernetes utilizando o [Minikube](https://minikube.sigs.k8s.io) e o [Katacoda](https://www.katacoda.com). O Katacoda disponibiliza um ambiente Kubernetes gratuito e acessível via navegador.
{{< note >}}
Você também consegue seguir os passos desse tutorial instalando o Minikube localmente. Para instruções de instalação, acesse: [iniciando com minikube](https://minikube.sigs.k8s.io/docs/start/).
{{< /note >}}
## Objetivos
* Instalar uma aplicação exemplo no minikube.
* Executar a aplicação.
* Visualizar os logs da aplicação.
## Antes de você iniciar
Este tutorial disponibiliza uma imagem de contêiner que utiliza o NGINX para retornar todas as requisições.
<!-- lessoncontent -->
## Criando um cluster do Minikube
1. Clique no botão abaixo **para iniciar o terminal do Katacoda**.
{{< kat-button >}}
{{< note >}}
Se você instalou o Minikube localmente, execute: `minikube start`. Antes de executar `minikube dashboard`, abra um novo terminal, execute `minikube dashboard` nele, e retorne para o terminal anterior.
{{< /note >}}
2. Abra o painel do Kubernetes em um navegador:
```shell
minikube dashboard
```
3. Apenas no ambiente do Katacoda: Na parte superior to painel do terminal, clique no sinal de mais (+), e selecione **Select port to view on Host 1**.
4. Apenas no ambiente do Katacoda: Digite `30000`, e clique em **Display
Port**.
{{< note >}}
O comando `dashboard` habilita o complemento (_addon_) de dashboard e abre o proxy no navegador padrão.
Voce pode criar recursos no Kubernetes, como Deployment e Service, pela dashboard.
Se você está executando em um ambiente como administrador (_root_), veja [Acessando a Dashboard via URL](#acessando-a-dashboard-via-url).
Por padrão, a dashboard só é accesível internamente pela rede virtual do Kubernetes.
O comando `dashboard` cria um proxy temporário que permite que a dashboard seja acessada externamente à rede virtual do Kubernetes.
Para parar o proxy, execute `Ctrl+C` para terminar o processo.
A dashboard permanece sendo executada no cluster Kubernetes depois do comando ter sido terminado.
Você pode executar o comando `dashboard` novamente para criar outro proxy para accessar a dashboard
{{< /note >}}
## Acessando a Dashboard via URL
Caso não queira abrir o navegador, execute o comando `dashboard` com a flag `--url` para ver a URL:
```shell
minikube dashboard --url
```
## Criando um Deployment
Um [*Pod*](/docs/concepts/workloads/pods/) Kubernetes consiste em um ou mais contêineres agrupados para fins de administração e gerenciamento de rede. O Pod desse tutorial possui apenas um contêiner. Um [*Deployment*](/docs/concepts/workloads/controllers/deployment/) Kubernetes verifica a saúde do seu Pod e reinicia o contêiner do Pod caso o mesmo 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 docker disponibilizada.
```shell
kubectl create deployment hello-node --image=k8s.gcr.io/echoserver:1.4
```
2. Visualizando o Deployment:
```shell
kubectl get deployments
```
A saída será semelhante a:
```
NAME READY UP-TO-DATE AVAILABLE AGE
hello-node 1/1 1 1 1m
```
3. Visualizando o Pod:
```shell
kubectl get pods
```
A saída será semelhante a:
```
NAME READY STATUS RESTARTS AGE
hello-node-5f76cf6ccf-br9b5 1/1 Running 0 1m
```
4. Visualizando os eventos do cluster:
```shell
kubectl get events
```
5. Visualizando a configuração do `kubectl`:
```shell
kubectl config view
```
{{< note >}}
Para mais informações sobre o comando `kubectl`, veja o [kubectl overview](/docs/reference/kubectl/overview/).
{{< /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 [*serviço*](/docs/concepts/services-networking/service/) Kubernetes.
1. Expondo o Pod usando o comando `kubectl expose`:
```shell
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 `k8s.gcr.io/echoserver` "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. Visualizando o serviço que você acabou de criar:
```shell
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 Cloud 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. Executar o comando a seguir:
```shell
minikube service hello-node
```
4. (**Apenas no ambiente do Katacoda**) Clicar no sinal de mais e então clicar em **Select port to view on Host 1**.
5. (**Apenas no ambiente do Katacoda**) Observe o número da porta com 5 dígitos exibido ao lado de `8080` na saída do serviço. Este número de porta é gerado aleatoriamente e pode ser diferente para você. Digite seu número na caixa de texto do número da porta e clique em **Display Port**. Usando o exemplo anterior, você digitaria `30369`.
Isso abre uma janela do navegador, acessa o seu aplicativo e mostra o retorno da requisição.
## Habilitando Complementos (addons)
O 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. Listando os complementos suportados atualmente:
```shell
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. Habilitando um complemento, por exemplo, `metrics-server`:
```shell
minikube addons enable metrics-server
```
A saída será semelhante a:
```
metrics-server was successfully enabled
```
3. Visualizando os Pods e os Serviços que você acabou de criar:
```shell
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. Desabilitando o complemento `metrics-server`:
```shell
minikube addons disable metrics-server
```
A saída será semelhante a:
```
metrics-server was successfully disabled
```
## Removendo os recursos do Minikube
Agora você pode remover todos os recursos criados no seu cluster:
```shell
kubectl delete service hello-node
kubectl delete deployment hello-node
```
(**Opcional**) Pare a máquina virtual (VM) do Minikube:
```shell
minikube stop
```
(**Opcional**) Remova a VM do Minikube:
```shell
minikube delete
```
## Próximos passos
* Aprender mais sobre [Deployment objects](/docs/concepts/workloads/controllers/deployment/).
* Aprender mais sobre [Deploying applications](/docs/tasks/run-application/run-stateless-application-deployment/).
* Aprender mais sobre [Service objects](/docs/concepts/services-networking/service/).