Cilium + ebpf 系列文章- (六)Cilium-BGP与分发-EXTERNAL-IP

devtools/2024/12/22 9:12:33/

一、首先你安装的Cilium需要支持BGP 

cilium install \--version v1.16.1 \--set ipam.mode=kubernetes \--set routingMode=native \--set ipv4NativeRoutingCIDR="10.0.0.0/8" \--set bgpControlPlane.enabled=true \--set k8s.requireIPv4PodCIDR=true

这个命令用于安装 Cilium,并配置一些特定的参数。以下是每个参数的解释:

  1. cilium install \:这是安装 Cilium 的基本命令。
  2. --version v1.16.1 \:指定要安装的 Cilium 版本为 v1.16.1。
  3. --set ipam.mode=kubernetes \:设置 IP 地址管理(IPAM)模式为 Kubernetes,这意味着 Cilium 将使用 Kubernetes 的 IPAM 机制来分配 IP 地址。
  4. --set routingMode=native \:这意味着 Cilium 将使用主机的原生路由功能来处理网络流量,而不是使用隧道模式。
  5. --set ipv4NativeRoutingCIDR="10.0.0.0/8" \:设置原生 IPv4 路由的 CIDR 范围为 10.0.0.0/8。
  6. --set bgpControlPlane.enabled=true \:启用 BGP 控制平面。
  7. --set k8s.requireIPv4PodCIDR=true:要求 Kubernetes 使用 IPv4 Pod CIDR。

这个命令通过指定这些参数来定制 Cilium 的安装和配置,以满足特定的网络需求。

 验证安装:

cilium status --waitcilium config view | grep enable-bgp

二、使用下面3个CRD资源对象

  随着Cilium 1.16.0中引入的BGP v2控制平面,对等连接策略可以使用三个Kubernetes crd的组合来配置: 
 
CiliumBGPClusterConfig设置对等连接端点,可以引用一个或多个CiliumBGPPeerConfig资源(使用资源名) 
CiliumBGPPeerConfig配置对等连接的行为,可以引用一个或多个CiliumBGPAdvertisement资源(使用选择器) 
ciiliumbgpadvertisement通过BGP发布的cidr。

简单来说:

Ciiliumbgpadvertisement 来管理要发布哪些IP地址。可以是pod也可以是svc的外部地址。

CiliumBGPPeerConfig 这个主要是管理建立邻居的特殊参数。(下一篇有额外解释)

CiliumBGPClusterConfig 这个是配置对端的AS号以及对端建立邻居的IP地址。并且只会在匹配了相应标签的node节点上建立BGP虚拟控制面。

root@server:~# yq $HOME/bgp/*.yaml
---
apiVersion: "cilium.io/v2alpha1"
kind: CiliumBGPAdvertisement
metadata:name: serviceslabels:advertise: generic
spec:advertisements:- advertisementType: "PodCIDR"# - advertisementType: "Service"#   service:#     addresses:#       - LoadBalancerIP#   selector:#     matchLabels:#       color: yellow#     matchExpressions:#       - {key: io.kubernetes.service.namespace, operator: In, values: ["tenant-c"]}---
apiVersion: "cilium.io/v2alpha1"
kind: CiliumBGPClusterConfig
metadata:name: tor
spec:nodeSelector:matchLabels:kubernetes.io/hostname: clab-bgp-cplane-devel-control-planebgpInstances:- name: "instance-65001"localASN: 65001peers:- name: "peer-65000-tor"peerASN: 65000peerAddress: "172.0.0.1"peerConfigRef:name: "peer-config-generic"
---
apiVersion: "cilium.io/v2alpha1"
kind: CiliumBGPPeerConfig
metadata:name: peer-config-generic
spec:families:- afi: ipv4safi: unicastadvertisements:matchLabels:advertise: "generic"

三、分发-EXTERNAL-IP

        1、可以使用CiliumLoadBalancerIPPool来分发LoadBalancer类型Service的IP地址。

root@server:~# yq pool.yaml
# No selector, match all
apiVersion: "cilium.io/v2alpha1"
kind: CiliumLoadBalancerIPPool
metadata:name: "pool"
spec:blocks:- cidr: "20.0.10.0/24"

        *无规则 

root@server:~# yq pool-primary.yaml
# Expression selector
apiVersion: "cilium.io/v2alpha1"
kind: CiliumLoadBalancerIPPool
metadata:name: "pool-primary"
spec:blocks:- cidr: "60.0.10.0/24"serviceSelector:matchExpressions:- {key: color, operator: In, values: [yellow, red, blue]}

        *基于Service的标签匹配来分配

root@server:~# yq pool-yellow.yaml
# Namespace selector
apiVersion: "cilium.io/v2alpha1"
kind: CiliumLoadBalancerIPPool
metadata:name: "pool-yellow"
spec:blocks:- cidr: "50.0.10.0/24"serviceSelector:matchLabels:"io.kubernetes.service.namespace": "tenant-c"

        *基于命名空间来匹配

 

 

 


http://www.ppmy.cn/devtools/121114.html

相关文章

二值图像的面积求取的两种方法及MATLAB实现

一、引言 面积在数字图像处理中经常用到,在MATLAB中,计算二值图像的面积通常可以通过两种主要方法实现:遍历法和直接利用bwarea函数。下面将分别介绍这两种方法的原理和相应的MATLAB代码示例。 二、遍历法计算二值图像面积的原理和MATLAB代码…

【C++】类与对象基础概念解析

恭喜你学习完C语言与数据结构的有关内容,现在让我们开始进行对C的学习吧~ 💝💝💝如果你对C语言或数据结构还存在疑惑,欢迎观看我之前的作品 👉【数据结构】 👉【C语言】 目录 一、引言 二、类…

Logistic Regression 使用不同library系数不一样?Sklearn vs. Statsmodel

Logistic Regression 使用不同library系数不一样?Sklearn vs. Statsmodel I realize that for logistic regression, it has different coefficients generated by Sklearn LogisticRegression() and Statsmodel. Why there’s the difference? Why there’s no …

MySQL存储过程与触发器

数据库是现代应用程序的核心组件之一,而在日常开发和管理中,自动化、逻辑处理和优化性能尤为重要。MySQL 中的存储过程与触发器提供了强大的工具,帮助开发者在数据库内部实现这些目标。存储过程可以让一组 SQL 语句在数据库中以预编译的方式存储,并在需要时调用。触发器则能…

css 选择除第一个子元素之外的所有子元素

在 CSS 中可以使用:not和:first-child的组合来选择除第一个子元素之外的所有子元素。 <!DOCTYPE html><html lang"en"><head><style>ul li:not(:first-child) {color: red;}</style></head><body><ul><li>第…

【从零开始实现stm32无刷电机FOC】【实践】【7.1/7 硬件设计】

目录 stm32电路磁编码器电路电机驱动电路电流采样电路电机选择本文示例硬件说明 为了承载和验证本文的FOC代码工程&#xff0c;本节设计了一个简易的三相无刷电机 硬件套件&#xff0c;主控采用非常常用的stm32f103c8t6单片机&#xff0c;电机编码器采用MT6701&#xff0c;电机…

【AIGC】内容创作——AI文字、图像、音频和视频的创作流程

我的主页&#xff1a;2的n次方_ 近年来&#xff0c;生成式人工智能&#xff08;AIGC&#xff0c;Artificial Intelligence Generated Content&#xff09;技术迅速发展&#xff0c;彻底改变了内容创作的各个领域。无论是文字、图像、音频&#xff0c;还是视频&#xff0c;A…

网通产品硬件设计工程师:汽车蓝牙收发器用网络隔离变压器有哪些选择呢?

Hqst盈盛&#xff08;华强盛&#xff09;电子导读&#xff1a;今天分享的是网通设备有关工程师产品设计时可供选择的两款汽车蓝牙收发器用网络隔离变压器... 下面我们就一起来看看网通设备有关工程师产品设计时可供选择的两款汽车蓝牙收发器用网络隔离变压器&#xff0c;让您的…