Como usar o Dataplane V2


Nesta página, explicamos como usar o Dataplane V2 com o Google Kubernetes Engine (GKE).

Sobre o Dataplane V2

O Dataplane V2 é baseado no eBPF e permite que os nós do Linux processem pacotes de rede de maneira flexível e eficiente no kernel. Ele inclui a aplicação de políticas de rede integradas e registro de políticas de rede sem nenhum complemento de terceiros.

Para usar a geração de registros de políticas de rede, ative o Dataplane V2 no cluster do GKE. Para instruções, consulte a seção Como criar um cluster com o Dataplane V2.

Limitações

  • O Dataplane V2 só pode ser ativado em novos clusters. Os clusters atuais não podem ser atualizados para usar o Dataplane V2.
  • Os nós do Windows não são compatíveis com o Dataplane V2.

Limitações Beta

  • Ainda que o Dataplane V2 esteja na versão Beta, a compatibilidade com versões anteriores não é garantida. Poderá ser necessário recriar um cluster usando o Dataplane V2 quando uma nova versão dele estiver disponível.
  • Sabe-se que alguns recursos do Kubernetes e do GKE não funcionam na versão Beta:
    • Os serviços do Kubernetes que definem ExternalTrafficPolicy:local e têm o suporte de pods em execução com hostNetwork:true não podem receber tráfego de clientes fora do cluster.
    • As políticas de rede do Kubernetes que usam FromCIDR com intervalos CIDR que selecionam alguns, mas nem todos os IPs de nó, não funcionam.
    • Alguns recursos, incluindo o DNSCache NodeLocal, não são compatíveis.
  • Não há uma interface do Console do Google Cloud para o Dataplane V2.

Como criar um cluster do GKE com o Dataplane V2

É possível ativar o Dataplane V2 ao criar novos clusters com o GKE 1.17.9 e posterior.

gcloud

Para criar um novo cluster com o Dataplane v2, use o seguinte comando:

gcloud beta container clusters create cluster-name \
    --enable-dataplane-v2 \
    --enable-ip-alias \
    --cluster-version version \
    --release-channel channel-name \
    {--region region-name | --zone zone-name}

Substitua:

  • cluster-name: o nome do novo cluster;
  • version: a versão do cluster, que precisa ser GKE 1.17.9 ou posterior.
  • channel-name: um canal de lançamento que inclui a versão 1.17.9 ou posterior do GKE.
  • region-name ou zone-name: o local do cluster. Esses argumentos são mutuamente exclusivos. Consulte Tipos de clusters para mais informações.

API

Para criar um novo cluster com o Dataplane V2, especifique o campo datapathProvider no objeto networkConfig em sua solicitação create do cluster.

No seguinte snippet JSON, mostramos a configuração necessária para ativar o Dataplane V2:

"cluster":{
  "initialClusterVersion":"version",
  "ipAllocationPolicy":{
     "useIpAliases":true
  },
  "networkConfig":{
     "datapathProvider":"ADVANCED_DATAPATH"
  },
  "releaseChannel":{
     "channel":"channel-name"
  }
}

Substitua:

  • version: a versão do cluster, que precisa ser GKE 1.17.9 ou posterior.
  • channel-name: um canal de lançamento que inclui a versão 1.17.9 ou posterior do GKE.

Solução de problemas

  1. Verifique o estado dos pods do sistema:

    kubectl -n kube-system get pods
    

    Se o Dataplane V2 estiver em execução, você verá pods com o prefixo anetd- em execução no estado HEALTHY. Anetd é o controlador de rede do Dataplane V2.

  2. Se o problema for com a aplicação da política de serviços ou rede, verifique os registros do pod anetd:

    kubectl -n kube-system describe pod anetd-pod
    kubectl -n kube-system logs anetd-pod
    

    Substitua anetd-pod pelo nome de um pod anetd identificado anteriormente.

  3. Se a criação do pod falhar, verifique os registros do kubelet para dicas:

    gcloud compute ssh node -- sudo journalctl -u kubelet
    

    Substitua node pelo nome da instância de VM.

A seguir