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.


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

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

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


kubectl cluster-info


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

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:

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:

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:

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:

kubectl config get-clusters


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

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:

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:

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:

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:

kubectl config current-context

Output



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

kubectl config get-contexts

Output



Para definir um contexto, use set-context:

kubectl config set-context nome_do_contexto --cluster=nome_do_cluster --user=user_name --namespace=namespace


Você pode alternar entre contextos com use-context:

kubectl config use-context nome_do_contexto


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

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:

kubectl get namespace
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:

kubectl config set-context --current --namespace=nome_do_namespace


Para criar um Namespace, use create namespace:

kubectl create namespace namespace_name

Output
namespace/sammy created


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

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:

kubectl get pods --namespace=nome_do_namespace




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.

{