Depurando métricas do Block Storage for VPC

Quando você tenta visualizar métricas do Block Storage for VPC no painel de monitoramento, as métricas não são preenchidas.

O preenchimento das métricas pode falhar no painel por uma das razões a seguir:

  • É possível que o PVC que você deseja monitorar não esteja instalado. As métricas são preenchidas somente para PVCs montadas em um pod.
  • Pode haver um problema relacionado ao console, o que pode ser verificado consultando manualmente as métricas de armazenamento na CLI.

Verifique se a PVC está montada. Se o problema persistir, visualize manualmente as métricas na CLI para determinar se a causa está relacionada a problemas com o console.

  1. Efetue login na sua conta. If applicable, target the appropriate resource group. Configure o contexto para o seu cluster.

  2. Descreva o PVC. Se a linha Usado por da saída for preenchida com o nome de um pod, a PVC será montada.

    kubectl describe pvc <pvc_name>
    

    Exemplo de saída

    Name:          my-pvc
    Namespace:     default
    StorageClass:  ibmc-vpc-block-5iops-tier
    Status:        Bound
    Volume:        pvc-a11a11a1-111a-111a-a1a1-aaa111aa1a1a
    Labels:        <none>
    Annotations:   pv.kubernetes.io/bind-completed: yes
                   pv.kubernetes.io/bound-by-controller: yes
                   volume.beta.kubernetes.io/storage-provisioner: vpc.block.csi.ibm.io
    Finalizers:    [kubernetes.io/pvc-protection]
    Capacity:      10Gi
    Access Modes:  RWO
    VolumeMode:    Filesystem
    Used By:       my-pod-11a1a1a1a1-1a11a
    Events:        <none>
    
  3. Se a PVC não for montada em um pod, revise as etapas para configurar o Block Storage for VPC e monte a PVC em um pod. Em seguida, tente visualizar as métricas novamente.

  4. Se o PVC estiver montado, siga as etapas para verificando manualmente as métricas do Block Storage for VPC then [abrir um problema de suporte](/docs/containers?topic=containers-get-help. As etapas para verificação manual na CLI permitem visualizar as métricas, mas não são uma solução para métricas que não são preenchidas no console. No entanto, se você conseguir verificar manualmente as métricas, isso indica que há um problema de console para o qual deve ser aberto um problema.

Visualizando manualmente as métricas de armazenamento na CLI

Se as métricas de armazenamento não estiverem visíveis no painel de monitoramento, será possível visualizar manualmente na CLI. Note que a verificação manual das métricas de armazenamento é uma solução alternativa provisória e não uma solução de monitoramento permanente para visualização de métricas. Após concluir as etapas a seguir, se você conseguir visualizar manualmente as métricas na CLI, mas não no painel, isso indica que há um problema no console, pelo qual você deve [abrir um ticket de suporte] (/docs/containers?topic=containers-get-help.

Depois de concluir as etapas a seguir, certifique-se de remover os recursos criados durante a depuração.

  1. Crie e implemente uma configuração clusterRole customizada. Neste exemplo, o clusterRole é denominado test-metrics-reader.

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRole
    metadata:
    name: test-metrics-reader
    rules:
    - nonResourceURLs:
        - "/metrics"
        verbs:
        - get
    - apiGroups:
        - ""
        resources:
        - nodes/metrics
        verbs:
        - get
    
    kubectl apply -f <file_name>
    
  2. Crie uma conta do serviço. Neste exemplo, a conta do serviço é denominada test-sa.

    kubectl create sa test-sa
    
  3. Inclua um clusterRoleBinding no clusterRole.

    kubectl create clusterrolebinding test-metrics-reader --clusterrole test-metrics-reader --serviceaccount=default:test-sa
    
  4. Liste os nós e observe o nome e o IP do nó para o qual você deseja reunir métricas.

    kubectl get nodes
    

    Exemplo de saída

    NAME          STATUS    ROLES    AGE     VERSION              
    10.111.1.11   Ready     <none>   1d      v1.36+IKS            
    
  5. Crie um arquivo yaml para implementar um pod no nó. Certifique-se de especificar a conta do serviço criada e o endereço IP do nó.

    apiVersion: v1
    kind: Pod
    metadata:
    name: testpod
    spec:
    nodeName: 10.111.1.111
    containers:
    - image: nginx
        name: nginx
    serviceAccountName: test-sa
    
    kubectl apply -f <file_name>
    
  6. Recupere o token da conta do serviço de dentro do pod.

    1. Efetue login no pod.
        kubectl exec testpod -it -- bash
        ```
    1. Execute o comando a seguir para obter o token. Note que não há saída.
    
    ```sh {: pre}
        token=$(cat /var/run/secrets/kubernetes.io/serviceaccount/token)
        ```
    
  7. Enquanto você ainda estiver com login efetuado no pod, execute o comando para visualizar as métricas de armazenamento. Certifique-se de especificar o endereço IP do nó.

    curl -k -H "authorization: bearer <token> https://<node_IP>:10250/metrics | grep kubelet_volume_stats
    
  8. Visualize as métricas na saída do terminal. Talvez você precise esperar alguns minutos até que as métricas sejam exibidas. Se ainda não for possível visualizar métricas, [abra um problema de suporte](/docs/containers?topic=containers-get-help.

  9. Depois de concluir a visualização das métricas e determinar se o problema está relacionado ao painel ou ao agente de métricas, exclua as configurações e os recursos criados nas etapas anteriores.

Não ignore esta etapa.

  1. Saia do pod.
    exit
    
  2. Exclua o pod.
    kubectl delete pod testpod
    
  3. Exclua o clusterRoleBinding.
    kubectl delete clusterrolebinding test-metrics-reader
    
  4. Exclua a conta do serviço.
    kubectl delete sa test-sa
    
  5. Exclua a função de cluster.
    kubectl delete clusterrole test-metrics-reader