Você está vendo a documentação do Kubernetes versão: v1.21
Kubernetes v1.21 a documentação não é mais mantida ativamente. A versão que você está visualizando no momento é uma captura instantânea estática. Para obter 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.
Nota: Você também consegue seguir os passos desse tutorial instalando o Minikube localmente. Para instruções de instalação, acesse: iniciando com minikube.
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.
Nota: Se você instalou o Minikube localmente, execute:minikube start.
Abra o painel do Kubernetes em um navegador:
minikube dashboardApenas 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.4Visualizando o Deployment:
kubectl get deploymentsA saída será semelhante a:
NAME READY UP-TO-DATE AVAILABLE AGE hello-node 1/1 1 1 1mVisualizando o Pod:
kubectl get podsA saída será semelhante a:
NAME READY STATUS RESTARTS AGE hello-node-5f76cf6ccf-br9b5 1/1 Running 0 1mVisualizando os eventos do cluster:
kubectl get eventsVisualizando a configuração do
kubectl:kubectl config view
Nota: Para mais informações sobre o comandokubectl, 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=8080O 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ê usoukubectl 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 servicesA 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 23mEm 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 comandominikube 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ê digitaria30369.
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 listA 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: disabledHabilitando um complemento, por exemplo,
metrics-server:minikube addons enable metrics-serverA saída será semelhante a:
metrics-server was successfully enabledVisualizando os Pods e os Serviços que você acabou de criar:
kubectl get pod,svc -n kube-systemA 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 26sDesabilitando o complemento
metrics-server:minikube addons disable metrics-serverA 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.