Você está vendo a documentação do Kubernetes versão: v1.25
Kubernetes v1.25 a documentação não é mais mantida ativamente. A versão que você está visualizando no momento é uma cópia estática. Para obter a documentação atualizada, consulte última versão.
Olá, Minikube!
Este tutorial mostra como executar uma aplicação exemplo no Kubernetes utilizando o Minikube e o Katacoda. O Katacoda disponibiliza um ambiente Kubernetes gratuito e acessível via navegador.
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.
Criando um cluster do Minikube
- Clique no botão abaixo para iniciar o terminal do Katacoda. 
minikube start.- Abra o painel do Kubernetes em um navegador: - minikube dashboard
- Apenas no ambiente do Katacoda: Na parte superior do terminal, clique em Preview Port 30000. 
Criando um Deployment
Um Pod 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 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.
- Usando o comando - kubectl createpara criar um Deployment que gerencia um Pod. O Pod executa um contêiner baseado na imagem docker disponibilizada.- kubectl create deployment hello-node --image=k8s.gcr.io/echoserver:1.4
- Visualizando 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
- Visualizando 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
- Visualizando os eventos do cluster: - kubectl get events
- Visualizando a configuração do - kubectl:- kubectl config view
kubectl, veja o kubectl overview.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 Kubernetes.
- Expondo o Pod usando o comando - kubectl expose:- kubectl expose deployment hello-node --type=LoadBalancer --port=8080- O parâmetro - --type=LoadBalancerindica 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 exposepara expor uma porta diferente, os clientes não conseguirão se conectar a essa outra porta.
- Visualizando 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 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 - LoadBalancertorna o serviço acessível por meio do comando- minikube service.
- Executar o comando a seguir: - minikube service hello-node
- (Apenas no ambiente do Katacoda) Clicar no sinal de mais e então clicar em Select port to view on Host 1. 
- (Apenas no ambiente do Katacoda) Observe o número da porta com 5 dígitos exibido ao lado de - 8080na 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 complementos que podem ser habilitados, desabilitados e executados no ambiente Kubernetes local.
- Listando 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
- Habilitando um complemento, por exemplo, - metrics-server:- minikube addons enable metrics-server- A saída será semelhante a: - metrics-server was successfully enabled
- Visualizando os Pods e os Serviços 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
- Desabilitando o complemento - metrics-server:- 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:
kubectl delete service hello-node
kubectl delete deployment hello-node
(Opcional) Pare a máquina virtual (VM) do Minikube:
minikube stop
(Opcional) Remova a VM do Minikube:
minikube delete
Próximos passos
- Aprender mais sobre Deployment objects.
- Aprender mais sobre Deploying applications.
- Aprender mais sobre Service objects.