En este documento, se describe cómo implementar un modelo de red de modo plano compatible con el Protocolo de puerta de enlace fronteriza (BGP). Cuando implementas un modelo de red compatible con BGP, BGP garantiza de forma dinámica que los Pods en diferentes dominios L2 se pueden comunicar entre sí.
Para obtener más información sobre los modelos de red de modo plano, consulta modelos de red de modo plano frente a modo isla.
Cómo implementar una red de modo plano que usa BGP
Para implementar un clúster en un modelo de red de modo plano compatible con BGP, realiza los siguientes cambios en el archivo cluster.yaml
del clúster:
- Configura el campo
spec.clusterNetwork.advancedNetworking
comotrue
en el recurso del clúster. - Configura el campo
spec.clusterNetwork.flatIPv4
comotrue
en el recurso del clúster. - Cuando
spec.clusterNetwork.flatIPv4
se configura comotrue
, el campospec.clusterNetwork.pods.cidrBlocks
se ignora y se puede omitir. Sin embargo, deberás definir una secciónClusterCIDRConfigs
en el archivo yaml (por nodo, por grupo de nodos o por clúster). Consulta el archivocluster.yaml
de ejemplo a continuación para obtener más información. - Agrega un recurso
NetworkGatewayGroup
al archivocluster.yaml
y especifica las IP flotantes que se usarán para el intercambio de tráfico de BGP. Asegúrate de que el nombre seadefault
y que el espacio de nombres sea el del clúster. - Agrega los recursos
FlatIPMode
yBGPPeer
al archivocluster.yaml
. El nombre del recursoFlatIPMode
debe serdefault
, y todos los recursos deben estar en el espacio de nombres del clúster.
Para la vista previa, solo se admiten pares y sesiones de BGP IPv4. Sin embargo, si tu entorno admite BGP multiprotocolo (MP-BGP), se pueden anunciar rutas IPv4 e IPv6 a través de estas sesiones de IPv4. No se admite la configuración de par de BGP de IPv6.
En el siguiente extracto de un archivo cluster.yaml
, se muestra cómo implementar herramientas de redes de modo plano con compatibilidad con BGP. Ten en cuenta que las direcciones IP que aparecen en este extracto son solo ejemplos, y deberás reemplazarlas por tus propias direcciones IP:
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
name: bm
namespace: cluster-bm
spec:
...
clusterNetwork:
advancedNetworking: true
flatIPv4: true
... (other cluster config omitted)
apiVersion: networking.gke.io/v1
kind: NetworkGatewayGroup
metadata:
name: default
namespace: cluster-bm
spec:
floatingIPs:
- 10.0.1.100
- 10.0.2.100
....
apiVersion: baremetal.cluster.gke.io/v1alpha1
kind: FlatIPMode
metadata:
name: default
namespace: cluster-bm
spec:
enableBGPIPv4: true
enableBGPIPv6: false
peerSelector:
flatip-peer: "true"
....
apiVersion: networking.gke.io/v1
kind: BGPPeer
metadata:
name: bgppeer1
namespace: cluster-bm
labels:
flatip-peer: "true"
spec:
localASN: 65001
peerASN: 65000
peerIP: 10.0.1.254
sessions: 2
....
apiVersion: networking.gke.io/v1
kind: BGPPeer
metadata:
name: bgppeer2
namespace: cluster-bm
labels:
flatip-peer: "true"
spec:
localASN: 65001
peerASN: 65000
peerIP: 10.0.2.254
sessions: 2
....
apiVersion: baremetal.cluster.gke.io/v1alpha1
kind: ClusterCIDRConfig
metadata:
name: cluster-wide-1
namespace: cluster-bm
spec:
ipv4:
cidr: "192.168.0.0/16"
perNodeMaskSize: 24