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
Crie um ficheiro denominado
example-flowlog.yamlcom 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_NAMEpelo 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-systemoukube-systempara qualquer pod no espaço de nomeskube-system. Para de registar registos uma hora após a criação do objeto.Crie o objeto de registo de fluxo:
kubectl --kubeconfig MANAGEMENT_API_SERVER apply -f example-flowlog.yamlSubstitua
MANAGEMENT_API_SERVERpelo caminho kubeconfig do servidor da API Management zonal.Verifique se o valor
FLOW_LOG_NAMEfoi reconciliado corretamente e se o processo de registo foi iniciado examinando o campoStatus:kubectl --kubeconfig MANAGEMENT_API_SERVER describe -n platform FLOW_LOG_NAMEExemplo 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:53ZEste exemplo de saída contém as seguintes condições:
Propagated: a configuração do registo de fluxo foi enviada para os clustersuser-vm-1,user-vm-2eorg-1-infra.Reconciled: o registo de fluxo foi programado com êxito nos clustersuser-vm-1,user-vm-2eorg-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 TimeeEnd Timeindicam que a tarefa foi iniciada às19:17:53e expira às20:17:53.
Para que este registo de fluxo possa produzir entradas de registo com êxito, todas as condições
Propagated,ReconciledeLoggingtê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
Abra o painel de controlo do registo operacional. Para mais informações, consulte o artigo Consultar registos operacionais.
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:
Clique em Executar consulta. São apresentadas as entradas do registo de fluxo guardadas:

Use os filtros para refinar ainda mais os resultados. Por exemplo, forneça o menu pendente cluster com um valor de
user-vm-1para analisar apenas os fluxos recolhidos do clusteruser-vm-1:
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:

Clique no ícone de atalho
+para filtrar fluxos por um campo de metadados específico.
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:
Labeldefinido comoOn. É sensível a maiúsculas e minúsculas.Operatordefinido como~=. Isto usa um motor de correspondência de expressões regulares.Valuedefinido como/FLOW_LOG_NAME/. O valorFLOW_LOG_NAMEtem de estar rodeado por/.
Filtre os resultados para ver apenas os registos produzidos por flowlog1:

Referências
- Documentação sobre o exportador dinâmico do Hubble: https://docs.cilium.io/en/latest/observability/hubble-exporter/#dynamic-exporter-configuration