Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

Eventualmente será necessário ir mais a fundo na investigação de algum problema. Para isso lançamos mão do kubectl, que é a ferramenta oficial do Kubernetes para realizar qualquer operação no cluster.

...

 O Kubectl foi projetada para gerenciar objetos e clusters Kubernetes. Ele fornece uma interface de linha de comando para executar operações comuns, como criar e escalar Deployments, alternar contextos e acessar um shell em um container em execução.


Informações

O acesso ao cluster via kubectl está limitado à algumas máquinas, sendo assim é necessário solicitar acesso ao time de cloud TKS e SRE.

Deck of Cards
idkubectl
Card
id01
labelInstalando o Kubectl

kubectl pode ser instalado em uma variedade de plataformas Linux, macOS e Windows. Encontre o seu sistema operacional preferido abaixo.

Card
id02
labelConfigurando o Kubectl

Para testar se o kubectl pode se autenticar e acessar seu cluster Kubernetes, use cluster-info:


Bloco de código
languagebash
kubectl cluster-info


Se o kubectl puder se autenticar com sucesso no seu cluster, você deverá ver a seguinte saída:

Bloco de código
Output
Kubernetes master is running at https://kubernetes_master_endpoint
CoreDNS is running at https://coredns_endpoint

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.


O kubectl é configurado usando os arquivos de configuração kubeconfig. Por padrão, o kubectl procurará um arquivo chamado config no diretório $HOME/.kube. Para mudar isso, você pode definir a variável de ambiente $KUBECONFIG apontando para um arquivo kubeconfig personalizado ou passar o arquivo personalizado em tempo de execução usando a flag --kubeconfig:

Bloco de código
languagebash
kubectl cluster-info --kubeconfig=caminho_para_seu_arquivo_kubeconfig

Nota: Se você estiver usando um cluster Kubernetes gerenciado, seu provedor de nuvem deverá ter disponibilizado seu arquivo kubeconfig.


Se você não quiser usar a flag --kubeconfig com todos os comandos, e não existe o arquivo ~/.kube/config, crie um diretório chamado ~/.kube no seu diretório home, se ele ainda não existir, e copie o arquivo kubeconfig, renomeando-o para config:

Bloco de código
languagebash
mkdir ~/.kube
cp seu_arquivo_kubeconfig ~/.kube/config

Agora, execute cluster-info novamente para testar sua conexão.

Modificando Sua Configuração do kubectl

Você também pode modificar sua configuração usando o conjunto de comandos kubectl config.

Para visualizar sua configuração do kubectl, use o subcomando view:

Bloco de código
languagebash
kubectl config view

Output
apiVersion: v1
clusters:
- cluster:
    certificate-authority-data: DATA+OMITTED


Modificando Clusters

Para buscar uma lista de clusters definidos no seu kubeconfig, use get-clusters:

Bloco de código
languagebash
kubectl config get-clusters


Para adicionar um cluster à sua configuração, use o subcomando set-cluster:

Bloco de código
languagebash
kubectl config set-cluster novo_cluster --server=endereço_do_servidor --certificate-authority=caminho_para_a_autoridade_de_certificação


Para excluir um cluster da sua configuração, use delete-cluster:

Bloco de código
languagebash
kubectl config delete-cluster

Nota: Isso exclui apenas o cluster da sua configuração e não exclui o cluster Kubernetes real.

Modificando Usuários

Você pode executar operações similares para usuários usando set-credentials:

Bloco de código
languagebash
kubectl config set-credentials username --client-certificate=/caminho/para/arquivo/certificado --client-key=/caminho/para/arquivo/chave


Para excluir um usuário da sua configuração, você pode executar unset:

Bloco de código
languagebash
kubectl config unset users.username


Contextos

Um context ou contexto no Kubernetes é um objeto que contém um conjunto de parâmetros de acesso para o seu cluster. Ele consiste em uma tripla de cluster, namespace e user. Os contextos permitem alternar rapidamente entre diferentes conjuntos de configurações de cluster.

Para ver seu contexto atual, você pode usar current-context:

Bloco de código
languagebash
kubectl config current-context

Output


Para ver uma lista de todos os contextos configurados, execute get-contexts:

Bloco de código
languagebash
kubectl config get-contexts

Output



Para definir um contexto, use set-context:

Bloco de código
languagebash
kubectl config set-context nome_do_contexto --cluster=nome_do_cluster --user=user_name --namespace=namespace


Você pode alternar entre contextos com use-context:

Bloco de código
languagebash
kubectl config use-context nome_do_contexto


E você pode excluir um contexto com delete-context:

Bloco de código
languagebash
kubectl config delete-context nome_do_contexto


Usando Namespaces

Um Namespace no Kubernetes é uma abstração que lhe permite subdividir seu cluster em vários clusters virtuais. Usando Namespaces, você pode dividir os recursos do cluster entre várias equipes e objetos de escopo de maneira apropriada. Por exemplo, você pode ter um Namespace prod para cargas de trabalho de produção e um Namespace dev para cargas de trabalho de desenvolvimento e teste.

Para buscar e imprimir uma lista de todos os Namespaces no cluster, use get namespace:

Bloco de código
languagebash
kubectl get namespace
Bloco de código
languagebash
Output
NAME              STATUS   AGE
default           Active   2d21h
kube-node-lease   Active   2d21h
kube-public       Active   2d21h
kube-system       Active   2d21h


Para definir um Namespace para o seu contexto atual, use set-context --current:

Bloco de código
languagebash
kubectl config set-context --current --namespace=nome_do_namespace


Para criar um Namespace, use create namespace:

Bloco de código
languagebash
kubectl create namespace namespace_name

Output
namespace/sammy created


De maneira similar, para excluir um Namespace, use delete namespace:

Bloco de código
languagebash
kubectl delete namespace namespace_name

Output
namespace/sammy created

Atenção: A exclusão de um Namespace excluirá tudo no Namespace, incluindo a execução de Deployments, Pods e outras cargas de trabalho. Execute este comando apenas se tiver certeza de que deseja eliminar o que está sendo executado no Namespace ou se estiver excluindo um Namespace vazio.


Para buscar todos os Pods em um determinado Namespace ou para realizar outras operações nos recursos de um determinado Namespace, certifique-se de incluir a flag --namespace:

Bloco de código
languagebash
kubectl get pods --namespace=nome_do_namespace
Card
id03
labelUsando o Kubectl





Quando estiver dentro deste host, poderá executar kubectl e realizar qualquer operação no cluster.

Através da documentação https://kubernetes.io/docs/reference/kubectl/overview/ podemos observar que para listar os pods de um cliente, devemos executar o seguinte comando:

kubectl -n CODIGO_CLIENTE get pods

O resultado é similar ao obtido no Kubernetic.

{