Inspecionar cargas de trabalho sem estado

Neste documento, explicamos como inspecionar cargas de trabalho sem estado em execução em um cluster do Kubernetes do Google Distributed Cloud (GDC) com isolamento físico. As cargas de trabalho sem estado permitem executar a implantação do aplicativo sem precisar armazenar dados ou o estado do aplicativo. É possível visualizar as cargas de trabalho sem estado com o console do GDC ou a CLI kubectl para monitorar o uso de recursos e a integridade da carga de trabalho.

Este documento é destinado a desenvolvedores do grupo de operadores de aplicativos, que são responsáveis por gerenciar as cargas de trabalho de aplicativos da organização. Para mais informações, consulte Públicos-alvo da documentação do GDC com isolamento físico.

Antes de começar

Para concluir as tarefas neste documento, solicite as permissões necessárias e prepare seu ambiente.

Solicitar papéis do IAM

Você precisa ter papéis específicos para receber as permissões necessárias para visualizar e inspecionar cargas de trabalho sem estado. Os papéis necessários dependem de você estar trabalhando em um cluster compartilhado com escopo de organização ou em um cluster padrão com escopo de projeto. Para mais informações, consulte Configurações de cluster do Kubernetes.

Papéis de cluster compartilhados

Peça ao administrador do projeto do IAM para conceder a você os seguintes papéis no namespace do projeto com base na tarefa a ser executada:

  • Leitor de cargas de trabalho (workload-viewer): confira todas as cargas de trabalho implantadas em um cluster compartilhado.
  • Administrador de namespace (namespace-admin): criar, excluir, editar ou visualizar cargas de trabalho em um namespace de projeto de cluster compartilhado.

Esses papéis estão vinculados ao namespace do projeto.

Papéis de cluster padrão

Para criar, excluir, editar ou visualizar cargas de trabalho em um cluster padrão, peça ao administrador do projeto do IAM para conceder a você o papel de desenvolvedor de cluster (cluster-developer). Esse papel está vinculado ao namespace do projeto.

Preparar o ambiente

Para executar comandos em um cluster do Kubernetes usando a API, verifique se você tem os seguintes recursos:

  • Localize o nome do cluster do Kubernetes ou pergunte a um membro do grupo de administradores da plataforma qual é o nome do cluster.

  • Faça login e gere o arquivo kubeconfig para o cluster do Kubernetes.

  • Use o caminho do kubeconfig do cluster do Kubernetes para substituir KUBERNETES_CLUSTER_KUBECONFIG nestas instruções.

Ver as cargas de trabalho de contêiner de um projeto

Para ver as cargas de trabalho de contêiner do seu projeto, faça o seguinte:

Console

  • No menu de navegação, selecione Kubernetes Engine > Cargas de trabalho.

    É possível ver detalhes das cargas de trabalho do contêiner, como:

    • Nome
    • Tipo
    • Número de pods
    • Cluster do Kubernetes
    • Data da última modificação

    As cargas de trabalho de contêiner são organizadas de acordo com o cluster do Kubernetes a que pertencem. Selecione o menu suspenso Cluster para alternar o contexto do cluster.

kubectl

  • Execute o seguinte comando para listar todos os pods no projeto:

    kubectl get pods -n PROJECT_NAMESPACE
    

    O resultado será o seguinte:

    NAME                        READY   STATUS    RESTARTS   AGE
    nginx-workload-ah-aa-1228   1/1     Running   0          12h
    nginx-workload-ah-ab-6784   1/1     Running   0          11h
    nginx-workload-ah-ac-0045   1/1     Running   0          12h
    

Inspecionar a implantação

Para solicitar informações mais detalhadas sobre os componentes de um recurso Deployment, execute comandos que segmentem diretamente a entidade que você quer inspecionar.

Receber informações do objeto Deployment

Para ver informações detalhadas sobre o objeto Deployment, execute:

kubectl --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG -n NAMESPACE \
    describe deployment DEPLOYMENT_NAME

Substitua:

  • KUBERNETES_CLUSTER_KUBECONFIG: o arquivo kubeconfig do cluster que executa a implantação.

  • NAMESPACE: o namespace. Para clusters compartilhados, precisa ser um namespace de projeto. Para clusters padrão, pode ser qualquer namespace.

  • DEPLOYMENT_NAME: o nome do objeto Deployment.

Mostrar a configuração ativa em formato YAML

Para visualizar o manifesto de um objeto Deployment, execute:

kubectl --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG -n NAMESPACE \
    get deployments DEPLOYMENT_NAME -o yaml

Esse comando exibe a configuração ativa do objeto Deployment no formato YAML.

Listar pods

Para listar os objetos Pod criados pela implantação, execute:

kubectl --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG -n NAMESPACE \
    get pods -l KEY=VALUE

Nesse comando, a flag -l lista todos os objetos Pod com o rótulo de par de chave-valor especificado no cluster especificado.

Substitua:

  • KUBERNETES_CLUSTER_KUBECONFIG: o arquivo kubeconfig do cluster que executa a implantação.

  • NAMESPACE: o namespace. Para clusters compartilhados, precisa ser um namespace de projeto. Para clusters padrão, pode ser qualquer namespace.

  • KEY: a chave do par de chave-valor do rótulo definido na implantação. Por exemplo, se o campo .template.metadata.labels tiver o rótulo app: myapp configurado, a chave será app.

  • VALUE: o valor do rótulo do par de chave-valor definido na implantação. Por exemplo, se o campo .template.metadata.labels tiver o rótulo app: myapp configurado, o valor será my-app.

Por exemplo, se você rotulou o objeto Deployment como app: my-app, execute o seguinte comando para ver os objetos Pod com esse rótulo:

kubectl --kubeconfig /tmp/kubeconfig.yaml -n my-namespace \
    get pods -l app=my-app

Receber informações específicas do pod

Para ver informações sobre um objeto Pod específico, execute:

kubectl --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG -n NAMESPACE \
    describe pod POD_NAME

Substitua:

  • KUBERNETES_CLUSTER_KUBECONFIG: o arquivo kubeconfig do cluster que executa a implantação.

  • NAMESPACE: o namespace. Para clusters compartilhados, precisa ser um namespace de projeto. Para clusters padrão, pode ser qualquer namespace.

  • POD_NAME: o nome do pod gerenciado pela implantação.

A seguir