Faça a gestão dos registos de fluxo

Use registos de fluxo para guardar metadados de tráfego de rede, incluindo 5 tuplos, no Google Distributed Cloud (GDC) isolado para a pilha de observabilidade sob a forma de registos consultáveis. Use estes registos para:

  • Compreenda os fluxos de tráfego para um serviço específico numa organização.
  • Compreenda e identifique problemas com o estado da rede de uma carga de trabalho do Kubernetes.
  • Valide as políticas de rede do Kubernetes.

O registo de fluxo é uma funcionalidade do GDC baseada no projeto de código aberto Hubble: https://github.com/cilium/hubble. Configure os registos de fluxo através do recurso FlowLog da API Networking.

Antes de começar

  • Tem de obter autorização para gerir ou ver registos de fluxo a partir da consola do GDC. Para gerir registos de fluxo, peça ao administrador de IAM da organização que lhe conceda a função de administrador de registos de fluxo (flowlog-admin). Para ver apenas os registos de fluxo existentes, peça ao administrador de IAM da organização para lhe conceder a função de leitor de registos de fluxo (flowlog-viewer).

    Para ver informações sobre como definir associações de funções a partir da consola do GDC, consulte o artigo Conceda acesso a recursos.

  • Antes de consultar e ver registos de fluxo em painéis de controlo, tem de obter acesso à instância de monitorização. Para mais informações, consulte o artigo Consulte e veja métricas.

Crie um registo de fluxo

Crie um registo de fluxo para guardar metadados de tráfego de rede filtrados por um determinado conjunto de especificações.

Crie um registo de fluxo com filtros de protocolo e espaço de nomes

  1. Crie um ficheiro denominado example-flowlog.yaml com o seguinte conteúdo:

    apiVersion: networking.gdc.goog/v1
    kind: FlowLog
    metadata:
      name: "FLOW_LOG_NAME"
      namespace: "platform"
    spec:
      filters:
        - l4Protocols:
            - tcp
          source:
            namespacePodSelectors:
              - namespace: gpc-system
              - namespace: kube-system
          destination:
            namespacePodSelectors:
              - namespace: kube-system
      lifetime:
        duration: "1h"
    

    Substitua FLOW_LOG_NAME pelo nome escolhido para o registo de fluxo.

    Neste exemplo, o registo de fluxo captura todos os fluxos para os quais uma ligação TCP foi iniciada por qualquer pod no espaço de nomes gpc-system ou kube-system para qualquer pod no espaço de nomes kube-system. Para de registar registos uma hora após a criação do objeto.

  2. Crie o objeto de registo de fluxo:

    kubectl --kubeconfig MANAGEMENT_API_SERVER apply -f example-flowlog.yaml
    

    Substitua MANAGEMENT_API_SERVER pelo caminho kubeconfig do servidor da API Management zonal.

  3. Verifique se o valor FLOW_LOG_NAME foi reconciliado corretamente e se o processo de registo foi iniciado examinando o campo Status:

    kubectl --kubeconfig MANAGEMENT_API_SERVER describe -n platform FLOW_LOG_NAME
    

    Exemplo de estado:

    Status:
      Clusters:
        Cluster:  org-1-infra-cluster
        Conditions:
          Last Transition Time:  2024-01-19T01:46:11Z
          Message:
          Observed Generation:   1
          Reason:                ResourcesPropagated
          Status:                True
          Type:                  Propagated
        Name:                    cilium-flowlog-config
        Namespace:               kube-system
        Node:                    org-1-infra
        Cluster:                 user-vm-1-cluster
        Conditions:
          Last Transition Time:  2024-01-19T01:46:11Z
          Message:
          Observed Generation:   1
          Reason:                ResourcesPropagated
          Status:                True
          Type:                  Propagated
        Name:                    cilium-flowlog-config
        Namespace:               kube-system
        Node:                    user-vm-1
        Cluster:                 user-vm-2-cluster
        Conditions:
          Last Transition Time:  2024-01-19T01:46:11Z
          Message:
          Observed Generation:   1
          Reason:                ResourcesPropagated
          Status:                True
          Type:                  Propagated
        Name:                    cilium-flowlog-config
        Namespace:               kube-system
        Node:                    user-vm-2
      Conditions:
        Last Transition Time:  2024-01-18T19:17:53Z
        Message:
        Observed Generation:   1
        Reason:                Active
        Status:                True
        Type:                  Logging
        Last Transition Time:  2024-01-19T01:46:11Z
        Message:
        Observed Generation:   1
        Reason:                ResourcesPropagated
        Status:                True
        Type:                  Propagated
        Last Transition Time:  2024-01-18T19:17:53Z
        Message:
        Observed Generation:   1
        Reason:                Succeeded
        Status:                True
        Type:                  Reconciled
      Start Time:              2024-01-18T19:17:53Z
      End Time:              2024-01-18T20:17:53Z
    

    Este exemplo de saída contém as seguintes condições:

    • Propagated: a configuração do registo de fluxo foi enviada para os clusters user-vm-1, user-vm-2 e org-1-infra.
    • Reconciled: o registo de fluxo foi programado com êxito nos clusters user-vm-1, user-vm-2 e org-1-infra.
    • Logging: o registo de fluxo não está expirado nem desativado, não encontrou nenhum erro e pode produzir registos se os filtros corresponderem aos fluxos.
    • Os ícones Start Time e End Time indicam que a tarefa foi iniciada às 19:17:53 e expira às 20:17:53.

    Para que este registo de fluxo possa produzir entradas de registo com êxito, todas as condições Propagated, Reconciled e Logging têm de ser verdadeiras.

Modificar registo de fluxo

Para modificar um registo de fluxo existente, modifique a definição do objeto de registo de fluxo criado no ficheiro example-flowlog.yaml e aplique-o novamente:

kubectl --kubeconfig MANAGEMENT_API_SERVER apply -f example-flowlog.yaml

Veja os registos de fluxo no painel de controlo de monitorização

  1. Abra o painel de controlo do registo operacional. Para mais informações, consulte o artigo Consultar registos operacionais.

  2. Defina o valor do menu pendente identifier como network-flow-logs, clique em add json parser e forneça o seguinte valor à consulta: {identifier="network-flow-logs"} | json:

    Defina o identificador

  3. Clique em Executar consulta. São apresentadas as entradas do registo de fluxo guardadas:

    Executar consulta

  4. Use os filtros para refinar ainda mais os resultados. Por exemplo, forneça o menu pendente cluster com um valor de user-vm-1 para analisar apenas os fluxos recolhidos do cluster user-vm-1:

    Refine os filtros

  5. Procure entradas do registo de fluxo, expanda a entrada para ver os detalhes e adicione mais filtros de etiquetas, conforme necessário, através do ícone de atalho. Neste exemplo, queremos filtrar ainda mais os fluxos pelo respetivo endereço IP de origem:

    Entrada do registo de fluxo

  6. Clique no ícone de atalho + para filtrar fluxos por um campo de metadados específico.

    Atalho do filtro de etiquetas

Veja os resultados por nome do registo de fluxo

Quando são criados vários registos de fluxo, pode criar um filtro de etiquetas adicional para ver os resultados de um ou mais registos de fluxo.

Para ver os resultados limitados aos registos produzidos por FLOW_LOG_NAME, crie um filtro de etiquetas com os seguintes valores:

  • Label definido como On. É sensível a maiúsculas e minúsculas.
  • Operator definido como ~=. Isto usa um motor de correspondência de expressões regulares.
  • Value definido como /FLOW_LOG_NAME/. O valor FLOW_LOG_NAME tem de estar rodeado por /.

Filtre os resultados para ver apenas os registos produzidos por flowlog1:

Filtro de etiquetas por nome do fluxo

Referências