Dokumen ini menjelaskan cara menerapkan model jaringan mode datar dengan dukungan Border Gateway Protocol (BGP). Saat Anda menerapkan model jaringan dengan dukungan BGP, BGP secara dinamis memastikan bahwa pod di domain Layer 2 yang berbeda dapat berkomunikasi satu sama lain. Jaringan mode datar dengan BGP terkadang disebut IP datar dinamis.
Untuk mengetahui informasi selengkapnya tentang model jaringan mode datar, lihat Model jaringan mode datar vs. mode pulau.
Cara menerapkan jaringan mode datar yang menggunakan BGP
Jaringan mode datar dengan BGP diaktifkan saat Anda membuat cluster baru. Anda tidak dapat mengaktifkan fitur ini untuk cluster yang sudah ada. Setelah fitur ini diaktifkan, Anda dapat membuat perubahan pada beberapa setelan konfigurasi.
Untuk menerapkan cluster pada model jaringan mode datar dengan dukungan BGP:
- Edit file konfigurasi cluster: - Tetapkan kolom spec.clusterNetwork.advancedNetworkingketrue.
- Jika Anda ingin mengaktifkan jaringan mode datar untuk IPv4, tetapkan kolom - spec.clusterNetwork.flatIPv4ke- true.- Untuk alternatif, lihat Cluster stack ganda (Pulau IPv4, IP Flat Dinamis IPv6), yang mengonfigurasi cluster Anda dengan jaringan mode flat hanya untuk IPv6. 
 - apiVersion: baremetal.cluster.gke.io/v1 kind: Cluster metadata: name: bm namespace: cluster-bm spec: type: user ... clusterNetwork: advancedNetworking: true flatIPv4: true ...- Jika - spec.clusterNetwork.flatIPv4ditetapkan ke- true, kolom- spec.clusterNetwork.pods.cidrBlocksakan diabaikan dan dapat dihilangkan. Namun, Anda perlu menambahkan manifes- ClusterCIDRConfigsdi file konfigurasi cluster (per-node, per-nodepool, dan/atau per-cluster).
- Tetapkan kolom 
- Tambahkan manifes - NetworkGatewayGroupke file konfigurasi cluster:- Tentukan IP mengambang yang akan digunakan untuk peering BGP. Pastikan nama resource adalah - defaultdan namespace-nya adalah namespace cluster.- --- apiVersion: networking.gke.io/v1 kind: NetworkGatewayGroup metadata: name: default namespace: cluster-bm spec: floatingIPs: - 10.0.1.100 - 10.0.2.100- Resource kustom - NetworkGatewayGroupmengelola daftar satu atau beberapa alamat IP mengambang. Sesi peering BGP dimulai dari alamat IP mengambang yang Anda tentukan di resource kustom- NetworkGatewayGroup.
- Tambahkan manifes - FlatIPModeke file konfigurasi cluster:- Nama resource - FlatIPModeharus- defaultdan namespace-nya adalah namespace cluster. Nilai- peerSelector- flatip-peer: "true"cocok dengan label di objek BGPPeer- bgppeer1dan- bgppeer2(ditentukan di langkah berikutnya), sehingga kedua peer digunakan untuk jaringan mode datar.- Manifes - FlatIPModeberikut ditujukan untuk jaringan mode datar single-stack IPv4 dengan BGP. Untuk konfigurasi alternatif, lihat Contoh konfigurasi.- --- apiVersion: baremetal.cluster.gke.io/v1alpha1 kind: FlatIPMode metadata: name: default namespace: cluster-bm spec: enableBGPIPv4: true enableBGPIPv6: false peerSelector: flatip-peer: "true"
- Tambahkan satu atau beberapa manifes - BGPPeerke file konfigurasi cluster:- Anda memilih nama untuk resource, tetapi semua resource - BGPPeerharus berada di namespace cluster.- --- 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
- Tambahkan manifes - ClusterCIDRConfigke file konfigurasi cluster:- Resource - CusterCIDRConfigjuga harus berada di namespace cluster.- 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- ClusterCIDRConfig adalah resource kustom yang menentukan rentang CIDR Pod yang akan dialokasikan ke node secara dinamis. CNI menggunakan rentang CIDR Pod yang dialokasikan di Node untuk mengalokasikan alamat IP ke setiap Pod yang berjalan di Node. - ClusterCIDRConfigjuga digunakan untuk jaringan stack ganda. Untuk mengetahui informasi selengkapnya tentang resource kustom- ClusterCIDRConfig, termasuk contoh penggunaannya, lihat Memahami resource kustom ClusterCIDRConfig.
- Membuat cluster: - bmctl create cluster- Untuk mengetahui informasi selengkapnya tentang cara membuat cluster, lihat Ringkasan pembuatan cluster. - Jika lingkungan Anda mendukung BGP multi-protokol (MP-BGP), rute IPv4 dan IPv6 dapat diiklankan melalui sesi IPv4 ini. Untuk contoh konfigurasi yang berbeda, termasuk contoh yang menggunakan MP-BGP, lihat Contoh konfigurasi. 
Mengubah konfigurasi jaringan mode datar berbasis BGP
Setelah Anda membuat cluster yang dikonfigurasi untuk menggunakan model jaringan mode datar dengan BGP, beberapa setelan konfigurasi dapat diperbarui. Gunakan file kubeconfig cluster admin saat Anda melakukan update berikutnya pada resource terkait BGP
(NetworkGatewayGroup, FlatIPMode, dan BGPPeer). Cluster admin
kemudian merekonsiliasi perubahan ke cluster pengguna. Jika Anda mengedit resource ini langsung di cluster pengguna, cluster admin akan mengganti perubahan Anda dalam rekonsiliasi berikutnya.
Contoh konfigurasi
Bagian berikut mencakup contoh konfigurasi cluster untuk berbagai variasi model jaringan mode datar dengan BGP. File konfigurasi contoh tidak lengkap. Sebagian besar setelan cluster yang tidak relevan dengan jaringan mode datar dengan BGP telah dihilangkan.
Cluster IPv4 stack tunggal
Contoh file konfigurasi cluster berikut menunjukkan setelan untuk mengonfigurasi cluster IPv4 stack tunggal dengan jaringan mode datar dengan BGP:
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
  name: bm
  namespace: cluster-bm
spec:
  ...
  clusterNetwork:
    advancedNetworking: true
    flatIPv4: true
    services:
      cidrBlocks:
      - 10.96.0.0/12
  ...
---
apiVersion: baremetal.cluster.gke.io/v1alpha1
kind: ClusterCIDRConfig          
metadata:
  name: cluster-wide-1
  namespace: cluster-bm          # Must match the cluster namespace
spec:
  ipv4:
    cidr: "222.2.0.0/16"
    perNodeMaskSize: 24
---
apiVersion: networking.gke.io/v1
kind: NetworkGatewayGroup
metadata:
  name: default
  namespace: cluster-bm           # Must match the cluster namespace
spec:
  floatingIPs:
  - 10.0.1.100
  - 10.0.3.100
---
apiVersion: baremetal.cluster.gke.io/v1alpha1
kind: FlatIPMode
metadata:
  name: default
  namespace: cluster-bm            # Must match the cluster namespace
spec:
  enableBGPIPv4: true
  enableBGPIPv6: false
  peerSelector:
    flatipmode-peer: "true"
---
apiVersion: networking.gke.io/v1
kind: BGPPeer
metadata:
  name: bgppeer1
  namespace: cluster-bm            # Must match the cluster namespace
  labels:
    flatipmode-peer: "true"
spec:
  localASN: 65001
  peerASN: 65002
  peerIP: 10.0.1.254
  sessions: 2
---
apiVersion: networking.gke.io/v1
kind: BGPPeer
metadata:
  name: bgppeer2
  namespace: cluster-bm            # Must match the cluster namespace
  labels:
    flatipmode-peer: "true"
spec:
  localASN: 65001
  peerASN: 65002
  peerIP: 10.0.3.254
  sessions: 2
Cluster stack ganda (IPv4 Island, IPv6 Dynamic Flat IP)
Contoh file konfigurasi cluster berikut menunjukkan setelan untuk mengonfigurasi cluster stack ganda (IPv4/IPv6) dengan jaringan mode datar dengan BGP hanya untuk IPv6:
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
  name: bm
  namespace: cluster-bm
spec:
  ...
  clusterNetwork:
    advancedNetworking: true
    flatIPv4: false
    pods:
      cidrBlocks:
      - 192.168.0.0/16
    services:
      cidrBlocks:
      - 10.96.0.0/12
      # Additional IPv6 CIDR block determines if the cluster is dual-stack
      - 2620:0:1000:2630:5:2::/112
  ... 
---
apiVersion: baremetal.cluster.gke.io/v1alpha1
kind: ClusterCIDRConfig          
metadata:
  name: cluster-wide-1
  namespace: cluster-bm          # Must match the cluster namespace
spec:
  ipv4:
    cidr: "192.168.0.0/16"
    perNodeMaskSize: 24
  ipv6:
    cidr: "2222:3::/112"
    perNodeMaskSize: 120
---
apiVersion: networking.gke.io/v1
kind: NetworkGatewayGroup
metadata:
  name: default
  namespace: cluster-bm           # Must match the cluster namespace
spec:
  floatingIPs:
  - 10.0.1.100
  - 10.0.3.100
---
apiVersion: baremetal.cluster.gke.io/v1alpha1
kind: FlatIPMode
metadata:
  name: default
  namespace: cluster-bm            # Must match the cluster namespace
spec:
  enableBGPIPv4: false
  enableBGPIPv6: true
  peerSelector:
    flatipmode-peer: "true"
---
apiVersion: networking.gke.io/v1
kind: BGPPeer
metadata:
  name: bgppeer1
  namespace: cluster-bm            # Must match the cluster namespace
  labels:
    flatipmode-peer: "true"
spec:
  localASN: 65001
  peerASN: 65002
  peerIP: 10.0.1.254
  sessions: 2
---
apiVersion: networking.gke.io/v1
kind: BGPPeer
metadata:
  name: bgppeer2
  namespace: cluster-bm            # Must match the cluster namespace
  labels:
    flatipmode-peer: "true"
spec:
  localASN: 65001
  peerASN: 65002
  peerIP: 10.0.3.254
  sessions: 2
Cluster stack ganda (IPv4 Dynamic Flat IP, IPv6 Dynamic Flat IP)
Contoh file konfigurasi cluster berikut menunjukkan setelan untuk mengonfigurasi cluster stack ganda dengan jaringan mode datar dengan BGP:
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
  name: bm
  namespace: cluster-bm
spec:
  ...
  clusterNetwork:
    advancedNetworking: true
    flatIPv4: true
    pods:
      cidrBlocks:
      - 192.168.0.0/16
    services:
      cidrBlocks:
      - 10.96.0.0/12
      # Additional IPv6 CIDR block determines if the cluster is dual-stack
      - 2620:0:1000:2630:5:2::/112
  ... 
---
apiVersion: baremetal.cluster.gke.io/v1alpha1
kind: ClusterCIDRConfig          
metadata:
  name: cluster-wide-1
  namespace: cluster-bm          # Must match the cluster namespace
spec:
  ipv4:
    cidr: "222.2.0.0/16"
    perNodeMaskSize: 24
  ipv6:
    cidr: "2222:3::/112"
    perNodeMaskSize: 120
---
apiVersion: networking.gke.io/v1
kind: NetworkGatewayGroup
metadata:
  name: default
  namespace: cluster-bm           # Must match the cluster namespace
spec:
  floatingIPs:
  - 10.0.1.100
  - 10.0.3.100
---
apiVersion: baremetal.cluster.gke.io/v1alpha1
kind: FlatIPMode
metadata:
  name: default
  namespace: cluster-bm            # Must match the cluster namespace
spec:
  enableBGPIPv4: true
  enableBGPIPv6: true
  peerSelector:
    flatipmode-peer: "true"
---
apiVersion: networking.gke.io/v1
kind: BGPPeer
metadata:
  name: bgppeer1
  namespace: cluster-bm            # Must match the cluster namespace
  labels:
    flatipmode-peer: "true"
spec:
  localASN: 65001
  peerASN: 65002
  peerIP: 10.0.1.254
  sessions: 2
---
apiVersion: networking.gke.io/v1
kind: BGPPeer
metadata:
  name: bgppeer2
  namespace: cluster-bm            # Must match the cluster namespace
  labels:
    flatipmode-peer: "true"
spec:
  localASN: 65001
  peerASN: 65002
  peerIP: 10.0.3.254
  sessions: 2
Pemecahan masalah
Untuk membantu Anda memecahkan masalah terkait jaringan mode datar dengan BGP, bagian ini menyertakan petunjuk untuk memeriksa konfigurasi Anda:
- Verifikasi apakah objek - FlatIPModesdibuat di namespace cluster pada cluster admin:- kubectl get flatipmodes -A --kubeconfig ADMIN_KUBECONFIG- Responsnya akan terlihat seperti ini: - NAMESPACE NAME AGE cluster-bm default 2d17h
- Verifikasi apakah objek - flatipmodes.networking.gke.iodibuat di cluster pengguna:- Objek - flatipmodes.networking.gke.iomemiliki cakupan cluster.- kubectl get flatipmodes.networking.gke.io --kubeconfig USER_KUBECONFIG- Responsnya akan terlihat seperti ini: - NAME AGE default 2d17h
- Dapatkan resource - BGPSessionsuntuk melihat sesi saat ini:- kubectl get bgpsessions -A --kubeconfig USER_KUBECONFIG- Responsnya akan terlihat seperti ini: - NAMESPACE NAME LOCAL ASN PEER ASN LOCAL IP PEER IP STATE LAST REPORT kube-system 10.0.1.254-node-01 65500 65000 10.0.1.100 10.0.1.254 Established 2s kube-system 10.0.1.254-node-02 65500 65000 10.0.3.100 10.0.1.254 NotEstablished 2s kube-system 10.0.3.254-node-01 65500 65000 10.0.1.100 10.0.3.254 NotEstablished 2s kube-system 10.0.3.254-node-02 65500 65000 10.0.3.100 10.0.3.254 Established 2s
- Dapatkan resource - BGPAdvertisedRouteuntuk melihat rute yang saat ini diiklankan:- kubectl get bgpadvertisedroutes -A --kubeconfig USER_KUBECONFIG- Responsnya kurang lebih akan seperti ini: - NAMESPACE NAME PREFIX METRIC kube-system route-via-222-22-208-240 222.2.0.0/24 kube-system route-via-222-22-209-240 222.2.1.0/24- Nama rute menunjukkan next hop. Misalnya, - route-via-222-22-208-240dari respons contoh sebelumnya menunjukkan bahwa next hop untuk prefix- 222.2.0.0/24yang diiklankan adalah- 222.22.208.240.