Aprenda comandos essenciais do Kubernetes com uma nova folha de dicas
Comece a explorar kubectl, contêineres, pods e muito mais e, em seguida, baixe nossa folha de dicas gratuita para ter sempre os comandos principais ao seu alcance.
A nuvem funciona principalmente em Kubernetes, o Kubernetes funciona principalmente em Linux e o Linux funciona melhor quando tem um administrador de sistema qualificado nos controles. Quer você se considere um arquiteto de nuvem ou apenas um humilde administrador de sistemas, a Internet moderna precisa de usuários que entendam como aplicativos e serviços podem ser criados em contêineres, dimensionados sob demanda e monitorados e gerenciados criteriosamente.
Um dos primeiros passos no admirável mundo dos contêineres é aprender o Kubernetes e seu comando por excelência: kubectl
.
Instalando o kubectl
O comando kubectl
permite executar comandos em clusters Kubernetes. Você usa kubectl
para implantar aplicativos, visualizar logs, inspecionar e gerenciar recursos de cluster e solucionar problemas quando eles surgirem. O "problema" clássico do kubectl
(e do Kubernetes como um todo) é que, para executar comandos em um cluster, primeiro você precisa de um cluster. No entanto, existem soluções fáceis.
Primeiro, você pode criar seu próprio cluster Kubernetes pelo custo de três placas Raspberry Pi e periféricos associados (fontes de alimentação, principalmente). Depois de adquirir o hardware, leia Construa um cluster Kubernetes com o Raspberry Pi, de Chris Collins, e você terá seu próprio cluster com kubectl
instalado.
A outra forma de adquirir um cluster é usar o Minikube, um ambiente de prática para Kubernetes. De todos os métodos para colocar um cluster em funcionamento, este é o mais fácil.
Existem ainda mais opções; por exemplo, você pode fazer um curso sobre Kubernetes para obter acesso a um laboratório que executa um cluster ou pode ganhar tempo na nuvem. Não importa como você obtém acesso a um cluster, contanto que você tenha um ambiente Kubernetes para praticar.
Depois de ter acesso a um cluster, você pode começar a explorar o comando kubectl
.
Noções básicas sobre pods e contêineres
Um contêiner é um sistema Linux leve e parcial dedicado à execução de um aplicativo ou serviço. Um contêiner é restrito por um namespace de kernel, que fornece acesso a componentes vitais do sistema em seu host (o computador que executa o contêiner), evitando que ele envie dados para seu host. Os contêineres são mantidos como imagens de contêiner (ou apenas imagens para abreviar) e definidos por arquivos de texto chamados Containerfiles ou Dockerfiles.
Um pod é uma coleção formal de contêineres e uma maneira fácil para um administrador dimensionar, monitorar e manter qualquer número de contêineres.
Juntos, eles são como os “aplicativos” do Kubernetes. Criar ou adquirir imagens de contêiner é a forma como você executa serviços na nuvem.
Executando um pod
Dois registros confiáveis de imagens de contêiner são Docker Hub e Quay. Você pode pesquisar em um site de registro uma lista de imagens disponíveis. Geralmente há imagens oficiais de grandes projetos fornecidas pelo projeto, bem como imagens comunitárias para projetos especializados, customizados ou de nicho. Uma das imagens mais simples e menores é um contêiner BusyBox, que fornece um ambiente shell mínimo e alguns comandos comuns.
Quer você extraia uma imagem de um registro ou escreva sua própria definição de imagem e extraia-a para seu cluster a partir de um repositório Git, o fluxo de trabalho é o mesmo. Quando você deseja iniciar um pod no Kubernetes:
- Encontre uma imagem que deseja usar no Docker Hub ou Quay
- Puxe a imagem
- Crie um pod
- Implantar o pod
Se quiser usar o contêiner BusyBox de exemplo, você pode executar as três últimas etapas em um único comando:
$ kubectl create deployment my-busybox --image=busybox
Aguarde que o kubectl conclua o processo e, no final, você terá uma instância do BusyBox em execução. O casulo não está exposto ao resto do mundo. Ele está sendo executado silenciosamente em seu cluster em segundo plano.
Para ver quais pods estão em execução no seu cluster:
$ kubectl get pods --all-namespaces
Você também pode obter informações sobre a implantação do pod:
$ kubectl describe deployment my-busybox
Interagindo com um pod
Os contêineres geralmente contêm arquivos de configuração que os automatizam. Por exemplo, instalar o servidor Nginx httpd como um contêiner não deve exigir sua interação. Você inicia o contêiner em execução e ele simplesmente funciona. Isso vale para o primeiro contêiner adicionado a um pod e para todos os contêineres seguintes.
Uma das vantagens do modelo Kubernetes é que você pode dimensionar seus serviços conforme necessário. Caso seu serviço web fique sobrecarregado por tráfego inesperado, você pode iniciar um contêiner idêntico em sua nuvem (usando o subcomando scale
ou autoscale
), dobrando a capacidade do seu serviço de lidar com solicitações recebidas. .
Mesmo assim, às vezes é bom ver alguma prova de que um pod está funcionando conforme o esperado ou poder solucionar algo que parece não estar funcionando corretamente. Para isso, você pode executar comandos arbitrários em um contêiner:
$ kubectl exec my-busybox -- echo "hello cloud"
Alternativamente, você pode abrir um shell em seu contêiner, canalizando sua entrada padrão para ele e sua saída para o stdout do seu terminal:
$ kubectl exec --stdin --tty my-busybox -- /bin/sh
Expondo serviços
Por padrão, os pods não são expostos ao mundo externo após a criação, dando-lhe tempo para testar e verificar antes de serem lançados. Suponha que você queira instalar e implantar o servidor web Nginx como um pod em seu cluster e torná-lo acessível. Como acontece com qualquer serviço, você deve apontar seu pod para uma porta no seu servidor. O subcomando kubectl
expose
pode fazer isso por você:
$ kubectl create deployment \
my-nginx --image=nginx
$ kubectl expose deployment \
my-nginx --type=LoadBalancer --port=8080
Contanto que seu cluster esteja acessível pela Internet, você poderá testar a acessibilidade do seu novo servidor web abrindo um navegador e navegando até seu endereço IP público.
Mais do que apenas vagens
O Kubernetes oferece muito mais do que apenas imagens de serviços comuns. Além de ser um sistema para orquestração de containers, é também uma plataforma para desenvolvimento em nuvem. Você pode escrever e implantar aplicativos, gerenciar e monitorar desempenho e tráfego, implementar estratégias inteligentes de balanceamento de carga e muito mais.
Kubernetes é um sistema poderoso e rapidamente se tornou a base para todos os tipos de nuvens, principalmente a nuvem híbrida aberta. Comece a aprender Kubernetes hoje. E à medida que você aprende mais sobre o Kubernetes, você precisará de alguns lembretes rápidos sobre seus principais conceitos e sintaxe geral, então baixe nossa folha de referências do Kubernetes e mantenha-a por perto.