Primeiros passos com Kubectl para gerenciar clusters do Kubernetes

Kubernetes é um mecanismo de orquestração de contêineres que permite implantar cargas de trabalho em contêineres de maneira escalonável. O utilitário oficial de linha de comando, kubectl, fornece controle sobre seus clusters e os recursos dentro deles.
Instalando o Kubectl
kubectl é compatível com Linux, macOS e Windows. Vários formatos de distribuição são oferecidos dependendo da plataforma. Binários pré-compilados são produzidos para todos os sistemas operacionais suportados e disponibilizados por meio de links diretos para download.
Você também encontrará kubectl nos gerenciadores de pacotes Snap, Homebrew, Chocolatey e Scoop. Ele pode ser instalado via apt e yum adicionando o repositório do Google Cloud ao seu sistema. Por fim, o kubectl também é fornecido com o Google Cloud SDK – se você já tiver instalado, execute gcloud components install kubectl para fazer o download da ferramenta.
Você deve consultar o guia oficial de instalação para ver as opções disponíveis para o seu sistema. As etapas de instalação podem mudar com o tempo, portanto, revise a documentação antes de reinstalar o kubectl.
Configuração
A configuração é armazenada no diretório . kube em sua pasta pessoal. O arquivo de configuração padrão é ~ / . kube / config.
Você pode adicionar outros arquivos a esta pasta. Eles serão mesclados na configuração final usada durante o tempo de execução. Se você deseja usar um arquivo de configuração específico ou um conjunto diferente de arquivos, você precisa definir o sinalizador --kubeconfig ou a variável de ambiente KUBECONFIG.
kubectl --kubeconfig = / example / file get pods # OU KUBECONFIG = / example / file kubectl get pods
Todos os caminhos escritos nos arquivos de configuração são resolvidos em relação ao próprio local do arquivo. Os caminhos passados para sinalizadores de linha de comando são resolvidos em relação ao seu diretório de trabalho. Você pode ver a configuração final que será usada pelo kubectl executando kubectl config view.
Sinalizadores de linha de comando são suportados para algumas configurações. Eles permitem que você substitua seus arquivos de configuração. Os sinalizadores disponíveis incluem --server (URL do cluster), --username (nome de usuário para conectar como), --password, --token (token de API) e --namespace (selecione o namespace do cluster para interagir).
Contextos
Nos arquivos de configuração, você pode definir vários contextos “. ” Eles permitem que você agrupe os “ parâmetros de acesso usados com freqüência, ” como URL de cluster e contas de usuário, sob uma referência nomeada.
Para definir as configurações por contexto, use kubectl config set-context my-context --cluster = my-app --namespace = production. Este exemplo criaria um novo contexto chamado my-context que define as configurações padrão para o cluster Kubernetes e o namespace para trabalhar.
Os contextos são aplicados usando o comando kubectl config use-context my-context. Quaisquer outras invocações de kubectl usariam os parâmetros do contexto my-context, de modo que você estaria conectado ao cluster my-app no namespace de produção.
O uso eficaz de contextos simplifica consideravelmente as interações com kubectl. Sem eles, você deve criar manualmente arquivos de configuração exclusivos que são alternados usando a sinalização KUBECONFIG ou variável de ambiente.
Interagindo com seu cluster
A maioria dos comandos kubectl usa o mesmo formato básico:
nome do tipo de comando kubectl
O comando é a operação que você deseja realizar – geralmente cria, obtém, descreve ou apaga. O tipo é o tipo de recurso com o qual você vai interagir, como pod ou implantação. Você pode usar a forma singular ou plural.
O componente de nome deve ser o nome do recurso que você está referenciando. Você pode especificar vários nomes, separados por espaços, para obter a saída em massa. Também é possível usar o sinalizador -f para especificar o caminho para um arquivo JSON ou YAML contendo uma lista de nomes de recursos.
Aqui estão alguns comandos de exemplo, todos os quais funcionam em relação ao contexto selecionado atualmente:
- kubectl get pods – Obtenha os detalhes de todos os seus pods
- kubectl get pod my-pod – Obtenha os detalhes do pod chamado my-pod
- kubectl get pod my-pod another-pod – Obtenha os detalhes dos pods chamados my-pod e another-pod
- kubectl get pod / my-pod deployment / my-deployment – Recupere os detalhes do pod chamado my-pod e a implantação chamada my-deployment – esta variação de sintaxe permite que você recupere vários tipos de recursos com um comando
- kubectl delete pod my-pod – Exclua o pod chamado my-pod
- kubectl logs my-pod – Obtenha a saída de registro do pod my-pod
- kubectl apply -f ./manifest. yml – Aplique um patch ao seu cluster do manifesto do Kubernetes armazenado em manifest. yml

Os comandos estão disponíveis para todos os tipos de recursos oferecidos pelo seu cluster Kubernetes. Isso se estende até mesmo às definições de recursos personalizados; eles se integram à API Kubernetes e obtêm seus próprios endpoints RESTful que o kubectl pode acessar.
Uma referência completa do kubectlcommand está disponível na documentação do Kubernetes. Há também uma folha de dicas de comandos comumente usados ao trabalhar com tipos de recursos típicos.
Formatos de saída
A saída geralmente é emitida como uma lista ou tabela formatada. Isso apresenta as informações em um estilo legível por humanos, que você pode folhear rapidamente.
Várias opções alternativas de saída estão disponíveis. Você pode mudar para um formatador diferente usando o sinalizador -o (ou --output).
O estilo de saída json exibe a representação JSON do recurso da API Kubernetes que você está acessando. Da mesma forma, yaml fornece os dados do recurso como uma representação YAML.
Ao usar o estilo legível por humanos, você pode especificar as colunas da tabela a serem incluídas usando o estilo de colunas personalizadas. Forneça uma lista separada por vírgulas de nomes de coluna e pares de referência de valor:
kubectl get pods -o custom-columns = NAME: . metadata. name, NAMESPACE: . metadata. namespace
Isso exibiria o nome e o namespace de cada pod nas colunas rotuladas NAME e NAMESPACE respectivamente. Em vez de escrever colunas inline em seu comando, você pode defini-las em um arquivo e passá-lo para --custom-columns-file.
Há suporte integrado para classificar a saída pelo valor de um campo específico. Use --sort-by, passando a referência do campo:
kubectl get pods --sort-by = . metadata. name
A classificação oferece suporte a expressões JSONPath. Eles também podem ser usados para construir consultas filtradas usando o formatador jsonpath. JSONPath é uma linguagem de consulta para objetos JSON que permite manipular mais diretamente as consultas da API Kubernetes no kubectl.
Usando dentro de scripts
kubectl se destina tanto à interação humana direta quanto à invocação programática por meio de scripts. Existem algumas práticas recomendadas que você deve seguir ao criar scripts de kubectl para garantir uma saída previsível.
Qualifica totalmente as referências aos tipos de recursos para que eles &’ sejam fixados em uma versão específica – por exemplo. pods.v1. core / my-job em vez de pods my-job. Isso minimiza o risco de as atualizações do Kubernetes quebrarem seu script.
A configuração do acesso deve ser passada diretamente do seu script para o kubectl, garantindo que você não dependa do ambiente externo. Isso reduz ainda mais o risco de quebra devido às atualizações do kubectl – recursos, como contextos, podem mudar com o tempo, embora seja menos provável que os argumentos centrais da linha de comando mudem.
Finalmente, certifique-se de desabilitar a saída legível e usar o formatador JSON ou YAML. Isso fornece dados orientados à máquina de script com os quais trabalhar, de modo que você não precisará analisar as tabelas sozinho.
Conclusão
kubectl é a solução ideal para gerenciar um cluster Kubernetes. É uma ferramenta abrangente com suporte total para os recursos da plataforma.
A amplitude de funcionalidade torna a lista de comandos extensa, mas a separação clara entre o tipo de ação, tipo de recurso e nome do recurso ajuda a manter o uso simples e memorável. Em caso de dúvida, você pode instalar o autocompletar do shell para ajudá-lo a encontrar um comando apropriado.
Nenhum comentário