Esta página descreve os recursos de rede do Google Distributed Cloud conectado, incluindo sub-redes, sessões de peering BGP e balanceamento de carga.
Os procedimentos nesta página só se aplicam a racks conectados do Distributed Cloud, exceto o balanceamento de carga, que se aplica a racks e servidores conectados do Distributed Cloud.
Ativar a API Distributed Cloud Edge Network
Antes de configurar a rede em uma implantação conectada do Distributed Cloud, ative a API Distributed Cloud Edge Network. Para isso, siga as etapas desta seção. Por padrão, os servidores conectados do Distributed Cloud são enviados com a API Distributed Cloud Edge Network já ativada.
Console
No Google Cloud console, acesse a página da API Distributed Cloud Edge Network.
Clique em Ativar.
gcloud
Use o comando a seguir:
gcloud services enable edgenetwork.googleapis.com
Configurar a rede no Distributed Cloud conectado
Esta seção descreve como configurar os componentes de rede na implantação conectada do Distributed Cloud.
As seguintes limitações se aplicam aos servidores conectados do Distributed Cloud:
- Só é possível configurar sub-redes e
- As sub-redes só oferecem suporte a IDs de VLAN. As sub-redes baseadas em CIDR não são compatíveis.
Uma configuração de rede típica para o Distributed Cloud conectado consiste nas seguintes etapas:
Opcional: inicialize a configuração de rede da zona de destino, se necessário.
Criar uma rede.
Crie uma ou mais sub-redes na rede.
Estabeleça sessões de peering BGP de saída com seus roteadores PE usando os anexos de interconexão correspondentes.
Estabeleça sessões de peering BGP de entrada com os pods que executam suas cargas de trabalho usando as sub-redes correspondentes.
Opcional: estabeleça sessões de peering BGP de loopback para alta disponibilidade.
Teste sua configuração.
Conecte seus pods à rede.
Opcional: inicialize a configuração de rede da zona do Distributed Cloud
Você precisa inicializar a configuração de rede da zona conectada do Distributed Cloud nos seguintes casos:
- Imediatamente após a instalação do hardware conectado do Distributed Cloud no local.
- Você fez upgrade para a versão 1.3.0 ou mais recente do Distributed Cloud conectado em uma implantação conectada do Distributed Cloud, mas não participou da prévia privada da API Distributed Cloud Edge Network.
A inicialização da configuração de rede de uma zona cria um roteador padrão chamado default e uma rede padrão chamada default. Ela também configura o roteador default para fazer peering com todas as interconexões solicitadas ao fazer o pedido do hardware conectado do Distributed Cloud, criando anexos de interconexão correspondentes. Essa configuração fornece à implantação conectada do Distributed Cloud conectividade de uplink básica à rede local.
A inicialização da configuração de rede de uma zona é um procedimento único. Para instruções completas, consulte Inicializar a configuração de rede de uma zona.
Criar uma rede
Para criar uma rede, siga as instruções em Criar uma rede. Você também precisa criar pelo menos uma sub-rede na rede para permitir que os nós conectados do Distributed Cloud se conectem à rede.
Criar uma ou mais sub-redes
Para criar uma sub-rede, siga as instruções em Criar uma sub-rede. Você precisa criar pelo menos uma sub-rede na rede para permitir que os nós acessem a rede. A VLAN correspondente a cada sub-rede criada fica disponível automaticamente para todos os nós na zona.
Para servidores conectados do Distributed Cloud, só é possível configurar sub-redes usando IDs de VLAN. As sub-redes baseadas em CIDR não são compatíveis.
Estabelecer sessões de peering BGP de saída
Quando você cria uma rede e as sub-redes correspondentes, elas são locais para a zona conectada do Distributed Cloud. Para ativar a conectividade de saída, estabeleça pelo menos uma sessão de peering BGP de saída entre a rede e os roteadores de borda de peering.
Para estabelecer uma sessão de peering BGP de saída, faça o seguinte:
Liste as interconexões disponíveis na sua zona e selecione a interconexão de destino para essa sessão de peering.
Crie um ou mais anexos de interconexão na interconexão selecionada. Os anexos de interconexão vinculam o roteador criado na próxima etapa à interconexão selecionada.
Crie um roteador. Esse roteador encaminha o tráfego entre a interconexão e a rede usando os anexos de interconexão criados na etapa anterior.
Adicione uma interface ao roteador para cada anexo de interconexão criado anteriormente neste procedimento. Para cada interface, use o endereço IP do switch de rack superior (ToR, na sigla em inglês) correspondente no rack conectado do Distributed Cloud. Para instruções, consulte Estabelecer uma sessão de peering de saída.
Adicione um par para cada interface criada no roteador na etapa anterior.
Estabelecer sessões de peering BGP de entrada
Para ativar a conectividade de entrada para suas cargas de trabalho da rede local, estabeleça uma ou mais sessões de peering BGP de entrada entre os roteadores de borda de peering e a sub-rede a que seus pods pertencem. O endereço IP do gateway de cada sub-rede é o endereço IP do switch ToR correspondente no rack conectado do Distributed Cloud.
Para estabelecer uma sessão de peering BGP de entrada, faça o seguinte:
Adicione uma interface ao roteador na rede de destino para cada sub-rede que você quer provisionar com conectividade de entrada. Para instruções, consulte Estabelecer uma sessão de peering de entrada.
Adicione um par para cada interface criada no roteador na etapa anterior.
Opcional: estabelecer sessões de peering BGP de loopback
Para ativar a conectividade de alta disponibilidade entre as cargas de trabalho e a rede local, estabeleça uma sessão de peering BGP de loopback entre o pod de destino e os dois switches ToR no rack conectado do Distributed Cloud. Uma sessão de peering de loopback estabelece duas sessões de peering independentes para o pod, uma com cada switch ToR.
Para estabelecer uma sessão de peering BGP de loopback, faça o seguinte:
Adicione uma interface de loopback ao roteador na rede de destino. Para instruções, consulte Estabelecer uma sessão de peering de loopback.
Adicione um par para a interface de loopback.
Testar a configuração
Para testar a configuração dos componentes de rede criados, faça o seguinte:
Conecte seus pods à rede
Para conectar seus pods à rede e configurar funções de rede avançadas, siga as instruções em Operador de função de rede.
Balanceamento de carga
O Distributed Cloud é fornecido com uma solução de balanceamento de carga de rede agrupada com base no MetalLB no modo da camada 2. É possível usar essa solução para expor serviços executados na zona do Distributed Cloud ao mundo externo usando endereços IP virtuais (VIPs) da seguinte maneira:
- O administrador de rede planeja a topologia de rede e especifica a sub-rede de endereço IPv4 virtual necessária ao fazer o pedido do Distributed Cloud. O Google configura o hardware do Distributed Cloud de acordo com isso antes da entrega.
Tenha o seguinte em mente:
- Essa sub-rede VIP é compartilhada entre todos os clusters do Kubernetes executados na zona do Distributed Cloud.
- Uma rota para a sub-rede VIP solicitada é anunciada pelas sessões BGP entre a zona do Distributed Cloud e a rede local.
- O primeiro (ID da rede), o segundo (gateway padrão) e o último (endereço de transmissão ) endereços na sub-rede são reservados para a funcionalidade principal do sistema. Não atribua esses endereços aos pools de endereços das configurações do MetalLB.
- Cada cluster precisa usar um intervalo de VIP separado que esteja dentro da sub-rede VIP configurada.
- Ao criar um cluster na zona do Distributed Cloud, o administrador do cluster especifica os pools de endereços de pod e serviço ClusterIP usando a notação CIDR. O administrador de rede fornece a sub-rede VIP
LoadBalancerapropriada ao administrador do cluster. Depois que o cluster é criado, o administrador do cluster configura os pools de VIP correspondentes. Para clusters de plano de controle remoto, edite o ConfigMap
metallb-configno namespacemetallb-systemusando o comandokubectl editoukubectl replace. Não use o comandokubectl apply, porque o Distributed Cloud substitui as mudanças se você fizer isso.O exemplo a seguir ilustra essa configuração:
# metallb-config.yaml apiVersion: v1 kind: ConfigMap metadata: namespace: metallb-system name: metallb-config data: config: | address-pools: - name: default protocol: layer2 addresses: - 192.168.1.2-192.168.1.254Para clusters de plano de controle local, especifique os pools de VIP usando a flag
--external-lb-ipv4-address-poolsao criar o cluster. Para mais informações, consulte Modo de capacidade de sobrevivência.O administrador do cluster cria os serviços Kubernetes
LoadBalancerapropriados.
Os nós do Distributed Cloud em um único pool de nós compartilham um domínio comum da camada 2 e, portanto, também são nós de balanceamento de carga do MetalLB. Os nós do plano de controle do Distributed Cloud executados em Google Cloud não funcionam como nós de balanceamento de carga.
Ingresso do Distributed Cloud
Além do balanceamento de carga, o Distributed Cloud conectado também oferece suporte a recursos Ingress do Kubernetes. Um recurso Ingress do Kubernetes controla o fluxo de tráfego HTTP(S) para os serviços do Kubernetes executados nos clusters conectados do Distributed Cloud. O exemplo a seguir ilustra um recurso Ingress típico:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: my-ingress
spec:
rules:
- http:
paths:
- backend:
service:
name: my-service
port:
number: 80
path: /foo
pathType: Prefix
Quando configurado, o tráfego de rede flui pelo serviço istio-ingress, que, por padrão, recebe um endereço IP aleatório dos pools de VIP especificados na configuração do MetalLB. É possível selecionar um endereço IP específico ou um endereço IP virtual na configuração do MetalLB usando o campo loadBalancerIP na definição do serviço istio-ingress. Exemplo:
apiVersion: v1
kind: Service
metadata:
labels:
istio: ingress-gke-system
release: istio
name: istio-ingress
namespace: gke-system
spec:
loadBalancerIP: <targetLoadBalancerIPaddress>
Essa funcionalidade não está disponível em servidores conectados do Distributed Cloud.
Desativar o recurso Ingress padrão do Distributed Cloud
Por padrão, ao criar um cluster conectado do Distributed Cloud, o Distributed Cloud configura automaticamente o serviço istio-ingress para o cluster. Você tem a opção de criar um cluster conectado do Distributed Cloud sem o serviço istio-ingress. Para isso, siga as etapas abaixo:
gcloud
Crie um arquivo de configuração YAML chamado
SystemsAddonConfig.yamlcom o seguinte conteúdo:systemAddonsConfig: ingress: disabled: true
Transmita o arquivo
SystemsAddonConfig.yamlusando a flag--system-addons-configno comando de criação do cluster. É necessário usar a versãogcloud alphapara usar esse recurso. Exemplo:gcloud alpha edge-cloud container clusters create MyGDCECluster1 --location us-west1 \ --system-addons-config=SystemsAddonConfig.yamlPara mais informações sobre como criar um cluster do Distributed Cloud, consulte Criar um cluster.
API
Adicione o seguinte conteúdo JSON ao payload JSON na solicitação de criação do cluster:
"systemAddonConfig" { "ingress" { "disabled": true } }Envie a solicitação de criação do cluster conforme descrito em Criar um cluster.
Suporte a SCTP
O Distributed Cloud conectado oferece suporte ao Stream Control Transmission Protocol (SCTP) na interface de rede principal para redes internas e externas. O suporte a SCTP inclui os tipos de serviço NodePort, LoadBalancer e ClusterIP. Os pods podem usar o SCTP para se comunicar com outros pods e recursos externos. O exemplo a seguir ilustra como configurar o IPERF como um serviço ClusterIP usando o SCTP:
apiVersion: v1
kind: Pod
metadata:
name: iperf3-sctp-server-client
labels:
app.kubernetes.io/name: iperf3-sctp-server-client
spec:
containers:
- name: iperf3-sctp-server
args: ['-s', '-p 31390']
ports:
- containerPort: 31390
protocol: SCTP
name: server-sctp
- name: iperf3-sctp-client
...
---
apiVersion: v1
kind: Service
metadata:
name: iperf3-sctp-svc
spec:
selector:
app.kubernetes.io/name: iperf3-sctp-server-client
ports:
- port: 31390
protocol: SCTP
targetPort: server-sctp
Essa funcionalidade não está disponível em servidores conectados do Distributed Cloud.
Módulos do kernel SCTP
A partir da versão 1.5.0, o Distributed Cloud conectado configura o módulo do kernel do SO de borda sctp como carregável. Isso permite carregar suas próprias pilhas de protocolo SCTP no espaço do usuário do kernel.
Além disso, o Distributed Cloud conectado carrega os seguintes módulos no kernel por padrão:
| Nome do módulo | Nome da configuração |
|---|---|
fou |
CONFIG_NET_FOU |
nf_conntrack_proto_gre |
CONFIG_NF_CT_PROTO_GRE |
nf_conntrack_proto_sctp |
CONFIG_NF_CT_PROTO_SCTP |
inotify |
CONFIG_INOTIFY_USER |
xt_redirect |
CONFIG_NETFILTER_XT_TARGET_REDIRECT |
xt_u32 |
CONFIG_NETFILTER_XT_MATCH_U32 |
xt_multiport |
CONFIG_NETFILTER_XT_MATCH_MULTIPORT |
xt_statistic |
CONFIG_NETFILTER_XT_MATCH_STATISTIC |
xt_owner |
CONFIG_NETFILTER_XT_MATCH_OWNER |
xt_conntrack |
CONFIG_NETFILTER_XT_MATCH_CONNTRACK |
xt_mark |
CONFIG_NETFILTER_XT_MARK |
ip6table_mangle |
CONFIG_IP6_NF_MANGLE |
ip6_tables |
CONFIG_IP6_NF_IPTABLES |
ip6table_filter |
CONFIG_IP6_NF_FILTER |
ip6t_reject |
CONFIG_IP6_NF_TARGET_REJECT |
iptable_mangle |
CONFIG_IP_NF_MANGLE |
ip_tables |
CONFIG_IP_NF_IPTABLES |
iptable_filter |
CONFIG_IP_NF_FILTER |
Recurso ClusterDNS
O Distributed Cloud conectado oferece suporte ao recurso ClusterDNS do Google Distributed Cloud para configurar servidores de nomes upstream para domínios específicos usando a seção spec.domains. Para mais informações sobre como configurar esse
recurso, consulte
spec.domains.
Essa funcionalidade não está disponível em servidores conectados do Distributed Cloud.