代码示范【FabEdge v0.8.0】配置 connector 公开端口

news2024/11/23 21:43:36

FabEdge项目简介:

FabEdge是博云在2021年8月发起,基于Kubernetes 构建的专注于边缘计算场景的容器网络方案,支持 KubeEdge 、SuperEdge、OpenYurt 等主流边缘计算框架。旨在解决边缘计算场景下容器网络配置管理复杂、网络割裂互不通信、缺少拓扑感知能力、无法提供就近访问等问题,适用于物联网,车联网、智慧城市、智慧园区等多种边缘场景

此后产品不断迭代,在2022年3月8日,博云正式将FabEdge捐献给CNCF社区,并通过相关评定,成为 CNCF 沙箱中首个边缘容器网络项目。目前FabEdge社区已有200多位开发者。

FabEdge最近正式发布了 V0.8.0 版本,该版本增强了边缘侧的服务访问能力,改善了边缘节点的连通性。

边缘侧服务访问能力增强

这次更新主要是改善KubeEdge集群边缘侧的服务访问能力,因为默认情况下KubeEdge集群不会有kube-proxy运行,也不能访问coredns。

FabEdge以前内部实现了一个fab-proxy来实现服务代理,并在边缘侧使用nodelocaldns提供服务域名解析,但是fab-proxy能力有限,且不能及时响应服务信息变更,nodelocaldns的也不适合边缘场景,为了解决以上问题,FabEdge此次更新将kube-proxy和coredns整合至fabedge-agent内,并利用edgecore的metaServer组件向fabedge-agent内的kube-proxy和coredns组件提供数据,从而为边缘节点上运行的容器提供了服务域名解析能力和服务代理。

允许配置connector节点的公开端口

FabEdge v0.8.0添加了connector公开端⼝配置的能⼒。之前FabEdge利用strongswan来创建VPN隧道实现云边通信,strongswan默认的端口为500和4500,connector节点的strongswan占用的端口通常需要做公网端口映射,映射出来的端口很可能不是500和4500,这样限制了FabEdge的使用场景。

这次更新之后,用户可以直接设置connector节点的公开端口,让strongswan可以通过非500和非4500端口建立隧道。但边缘侧暂时不能也没有必要进行端口配置,边缘侧的此类问题可以通过打洞(本次也有更新)功能来解决。

示例

配置connector节点公开端口

环境信息

* kubernetes v1.22.5

* kubeedge v1.12.2

* flannel v0.19.2

* fabedge v0.8.0

kubernetes集群节点信息如下:

其中beijing节点要作为connector节点,它和node1位于同一个局域网,edge1、 edge2位于另一个局域网。

想让边缘侧访问云端,需要为beijing节点做端口映射,这里我们选择将4500 映射为45000。

具体的映射方法需要读者根据环境调整,本文的beijing节点使用vagrant创建的,其实际映射配置为:

```ruby

# stongswan的通信端口,注意这里的协议为UDP

config.vm.network "forwarded_port", guest: 4500, host: 45000, protocol: "udp"

```

笔者开发时也会因为环境限制偶尔使用iptables来实现端口映射,具体规则为:

```shell

$ iptables -t nat -A PREROUTING -p udp --dport 45000 -j REDIRECT --to-ports 4500

```

这里再强调一次,使用strongswan的客户端使用非500端口进行IKE及通信时,服务端的实际目标端口为4500。

安装FabEdge

本文采用quickstart.sh脚本来安装,重点介绍一些参数配置,具体的安装文档参考[快速安装](https://github.com/FabEdge/fabedge/blob/main/docs/get-started_zh.md)。

1. 用helm添加fabedge repo: 

   ```shell

   $ helm repo add fabedge https://fabedge.github.io/helm-chart

   ```

2. 执行安装命令:

   ```shell

   $ curl https://fabedge.github.io/helm-chart/scripts/quickstart.sh | bash -s -- \

   --cluster-name beijing  \

   --cluster-role host \

   --cluster-zone beijing  \

   --cluster-region beijing \

   --connectors beijing \

   --edges edge1,edge2 \

   --connector-public-addresses 10.40.20.181 \

   --connector-public-port 45000 \

   --chart fabedge/fabedge

   ```

注意,上面的**connector-public-addresses**参数没有配置为beijing节点的内网地址192.168.56.11 ,而是beijing节点对外的地址**10.40.20.181**,端口也是我们之前映射的**45000**端口。

如果您选择手动安装FabEdge, 相应的配置可以参考以下内容:

      ```yaml

   cluster:

     name: beijing

     role: host

     region: beijing

     zone: beijing

     cniType: "flannel" 

     connectorPublicPort: 45000

     connectorPublicAddresses:

     - 10.22.45.16

     clusterCIDR:

     - 10.233.64.0/18

     serviceClusterIPRange:

     - 10.233.0.0/18

   agent:

     args:

以下两个参数仅需要在kubeedge环境打开

       ENABLE_PROXY: "true" 

       ENABLE_DNS: "true"

   ```

验证

来检查一下edge1, edge2跟connector创建的隧道信息:

```shell

$ fabctl swanctl list-sa edge1

========================== fabedge-agent-xfntz =================================

beijing.connector: #2, ESTABLISHED, IKEv2, aedd33719dd60b73_i* 1290e9570d67a570_r

  local  'C=CN, O=fabedge.io, CN=beijing.edge1' @ 10.22.46.30[4500]

  remote 'C=CN, O=fabedge.io, CN=beijing.connector' @ 10.40.20.181[45000]

  AES_CBC-128/HMAC_SHA2_256_128/PRF_HMAC_SHA2_256/CURVE_25519

  established 2682s ago, rekeying in 10461s

  beijing.connector-p2p: #1, reqid 1, INSTALLED, TUNNEL-in-UDP, ESP:AES_GCM_16-128

    installed 2682s ago, rekeying in 599s, expires in 1279s

    in  c056eddc,      0 bytes,     0 packets

    out cba5947a,      0 bytes,     0 packets

    local  10.233.66.0/24

    remote 10.233.0.0/18 10.233.64.0/24 10.233.65.0/24

  beijing.connector-p2n: #2, reqid 2, INSTALLED, TUNNEL-in-UDP, ESP:AES_GCM_16-128

    installed 2681s ago, rekeying in 583s, expires in 1279s

    in  c60aff0c,      0 bytes,     0 packets

    out cc298e3f,      0 bytes,     0 packets

    local  10.233.66.0/24

    remote 192.168.56.11/32 192.168.56.12/32

  beijing.connector-n2p: #3, reqid 3, INSTALLED, TUNNEL-in-UDP, ESP:AES_GCM_16-128

    installed 2681s ago, rekeying in 663s, expires in 1279s

    in  cc583570,      0 bytes,     0 packets

    out c6a00d2f,      0 bytes,     0 packets

    local  10.22.46.30/32

    remote 10.233.0.0/18 10.233.64.0/24 10.233.65.0/24

$ fabctl swanctl list-sa edge2

========================== fabedge-agent-gb5qd =================================

beijing.connector: #1, ESTABLISHED, IKEv2, 68cc6b323a3d9fe1_i* a572ff308882d651_r

  local  'C=CN, O=fabedge.io, CN=beijing.edge2' @ 10.22.46.28[4500]

  remote 'C=CN, O=fabedge.io, CN=beijing.connector' @ 10.40.20.181[45000]

  AES_CBC-128/HMAC_SHA2_256_128/PRF_HMAC_SHA2_256/CURVE_25519

  established 2683s ago, rekeying in 10862s

  beijing.connector-p2p: #1, reqid 1, INSTALLED, TUNNEL-in-UDP, ESP:AES_GCM_16-128

    installed 2683s ago, rekeying in 625s, expires in 1277s

    in  c801df3f,      0 bytes,     0 packets

    out cea754ac,      0 bytes,     0 packets

    local  10.233.67.0/24

    remote 10.233.0.0/18 10.233.64.0/24 10.233.65.0/24

  beijing.connector-p2n: #2, reqid 2, INSTALLED, TUNNEL-in-UDP, ESP:AES_GCM_16-128

    installed 2683s ago, rekeying in 655s, expires in 1277s

    in  cf9528de,      0 bytes,     0 packets

    out c0785f9e,      0 bytes,     0 packets

    local  10.233.67.0/24

    remote 192.168.56.11/32 192.168.56.12/32

  beijing.connector-n2p: #3, reqid 3, INSTALLED, TUNNEL-in-UDP, ESP:AES_GCM_16-128

    installed 2683s ago, rekeying in 703s, expires in 1277s

    in  c6284776,      0 bytes,     0 packets

    out c0eefea6,      0 bytes,     0 packets

    local  10.22.46.28/32

    remote 10.233.0.0/18 10.233.64.0/24 10.233.65.0/24

```

上面的输出结果包含这么一行:

```

remote 'C=CN, O=fabedge.io, CN=beijing.connector' @ 10.40.20.181[45000]

```

这就意味着edge1, edge2上的strongswan连接云端的strongswan时使用了10.40.20.181:45000这个地址,证明我们的配置成功了。下面让我们看看这个配置会影响edge1, edge2之间的通信吗?

先为edge1, edge2创建一个community:

```shell

cat > all-edges.yaml << EOF

apiVersion: fabedge.io/v1alpha1

kind: Community

metadata:

  name: all-edges

spec:

  members:

    - beijing.edge1

    - beijing.edge2

EOF

kubectl apply -f all-edges.yaml

```

然后检查edge1, edge2彼此之间的隧道信息:

```shell

$ fabctl swanctl list-sa edge1

========================== fabedge-agent-xfntz =================================

beijing.edge2: #4, ESTABLISHED, IKEv2, da14230995406a58_i* df83821754f9c263_r

  local  'C=CN, O=fabedge.io, CN=beijing.edge1' @ 10.22.46.30[4500]

  remote 'C=CN, O=fabedge.io, CN=beijing.edge2' @ 10.22.46.28[4500]

  AES_CBC-128/HMAC_SHA2_256_128/PRF_HMAC_SHA2_256/CURVE_25519

  established 62s ago, rekeying in 12926s

  beijing.edge2-p2p: #4, reqid 4, INSTALLED, TUNNEL, ESP:AES_GCM_16-128

    installed 62s ago, rekeying in 3245s, expires in 3898s

    in  cfeeafca,      0 bytes,     0 packets

    out c8c1f7aa,      0 bytes,     0 packets

    local  10.233.66.0/24

    remote 10.233.67.0/24

  beijing.edge2-p2n: #5, reqid 5, INSTALLED, TUNNEL, ESP:AES_GCM_16-128

    installed 62s ago, rekeying in 3233s, expires in 3898s

    in  cfefe387,      0 bytes,     0 packets

    out ccc83258,      0 bytes,     0 packets

    local  10.233.66.0/24

    remote 10.22.46.28/32

  beijing.edge2-n2p: #6, reqid 6, INSTALLED, TUNNEL, ESP:AES_GCM_16-128

    installed 62s ago, rekeying in 3420s, expires in 3898s

    in  c7f1a30b,      0 bytes,     0 packets

    out cabd83c9,      0 bytes,     0 packets

    local  10.22.46.30/32

    remote 10.233.67.0/24

$ fabctl swanctl list-sa edge2

========================== fabedge-agent-gb5qd =================================

beijing.edge1: #3, ESTABLISHED, IKEv2, da14230995406a58_i df83821754f9c263_r*

  local  'C=CN, O=fabedge.io, CN=beijing.edge2' @ 10.22.46.28[4500]

  remote 'C=CN, O=fabedge.io, CN=beijing.edge1' @ 10.22.46.30[4500]

  AES_CBC-128/HMAC_SHA2_256_128/PRF_HMAC_SHA2_256/CURVE_25519

  established 213s ago, rekeying in 13060s

  beijing.edge1-p2p: #4, reqid 4, INSTALLED, TUNNEL, ESP:AES_GCM_16-128

    installed 213s ago, rekeying in 3137s, expires in 3747s

    in  c8c1f7aa,      0 bytes,     0 packets

    out cfeeafca,      0 bytes,     0 packets

    local  10.233.67.0/24

    remote 10.233.66.0/24

  beijing.edge1-n2p: #5, reqid 5, INSTALLED, TUNNEL, ESP:AES_GCM_16-128

    installed 213s ago, rekeying in 3040s, expires in 3747s

    in  ccc83258,      0 bytes,     0 packets

    out cfefe387,      0 bytes,     0 packets

    local  10.22.46.28/32

    remote 10.233.66.0/24

  beijing.edge1-p2n: #6, reqid 6, INSTALLED, TUNNEL, ESP:AES_GCM_16-128

    installed 213s ago, rekeying in 3209s, expires in 3747s

    in  cabd83c9,      0 bytes,     0 packets

    out c7f1a30b,      0 bytes,     0 packets

    local  10.233.67.0/24

    remote 10.22.46.30/32

```

从上面的输出结果可以看出:edge1与edge2之间的隧道依然利用4500通信,不受connector配置的影响。如果希望边缘节点之间通过500, 4500端口外的值通信要怎么办?

答案是不能且没必要,因为边缘网络比较复杂,为每个边缘节点的strongswan都进行端口映射是个很麻烦的事,而且有些节点本身就在一个局域网,它们之间用500, 4500通信,却为外部通信配置不同的端口也会引入复杂的配置工作。但有些时候,边缘节点就是需要跨网通信,不能配置端口又该怎么做,那就需要使用FabEdge v0.8.0引入的新特性:打洞,见下文。

以上介绍了配置connector公开端口的方法和效果,需要一提的是,一旦使用500, 4500外的端口进行通信,strongswan就会利用non-esp格式,这种格式会一定程度上影响性能,所以能使用500, 4500的情况下最好还是使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/588579.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

hadoop单机版部署

1.下载hadoop wget --no-check-certificate https://mirrors.bfsu.edu.cn/apache/hadoop/common/hadoop-3.3.1/hadoop-3.3.1.tar.gz 2.解压重命名 tar -zxvf hadoop-3.3.1.tar.gz mv hadoop-3.3.1.tar.gz hadoop 3.编辑hosts vim /etc/hosts 172.17.1.1 hadoop925 4.进入配置…

4.Apache网页优化

文章目录 Apache网页优化网页压缩网页缓存隐藏版本信息Apache防盗链 Apache网页优化 Apache网页优化 网页压缩网页缓存 Apache安全优化 隐藏版本信息配置防盗链 网页压缩 配置Apache的网页压缩功能&#xff0c;是使用gzip压缩算法来对网页内容进行压缩后再传输到客户端浏览器…

LNMT架构之反向代理负载均衡

目录 一、实验前提环境配置 &#xff08;一&#xff09;关闭防火墙&#xff0c;安装本地yum &#xff08;二&#xff09;部署tomcat &#xff08;三&#xff09;部署Mariadb &#xff08;四&#xff09;部署nginx 二、反向代理负载均衡 方法一&#xff1a;&#xff08;轮…

【算法学习系列】07 - 无序数组中的局部最小值问题

文章目录 说明约束条件简单说下思路解决方案随机无序数组样本生成器算法实现验证代码进行大样本随机测试验证算法正确性 说明 在算法中&#xff0c;局部最小值是指一个函数在一个局部范围内的最小值。 具体而言&#xff0c;如果一个函数在一个小区间内的取值都比该区间内的其他…

C++:STL--priority_queue

文章目录 一.STL设计思想:容器适配器STL--stack的代码设计STL--queue的代码设计stack和queue的默认容器适配器deque的数据结构解析deque的存储结构示意图 二.C仿函数仿函数示例 三.STL--priority_queue(优先级队列)1.C优先级队列的数据结构2.priority_queue的实现框架比较函数(…

chatgpt赋能python:Python中创建画布的函数——matplotlib

Python中创建画布的函数——matplotlib Python作为一种强大的编程语言&#xff0c;拥有许多重要且广泛应用的模块和库。其中&#xff0c;matplotlib是一种用于制作高质量的图形和图表的库&#xff0c;而创建画布的函数便是其基础功能之一。 什么是matplotlib&#xff1f; Ma…

C语言---初始C语言

1、初始C语言 1、编译器主要有&#xff1a;Clang、GCC、WIN-TC、MSVC、Turbo C等 什么是编译&#xff1f; test.c----------------------------->test.exe 这个过程需要经过编译、链接等过程&#xff0c;而众多编译器实现的功能就是把我们写的test.c进行编译。 2、VS20…

如何把“困在”内网的数据释放,进行安全的流转传输呢?

互联网大时代&#xff0c;数据的生产使用与互联网紧密相关&#xff0c;但数据安全和网络安全却既有联系又互不相同。数据安全和网络安全的突出区别是核心主体不同&#xff0c;数据安全关注的数据全生命周期的安全&#xff0c;而网络安全则是侧重保障网络体系和网络环境的安全性…

硬卷完了!低代码打怪升级进阶成神之路(2023年最新版)

一、背景 应用开发周期长一直是IT部门和业务部门面临的问题。 IT部门总是被新的应用需求弄得不堪重负。他们不可能完成业务部门想要完成的每一个项目。同时&#xff0c;业务部门的用户厌倦了等待&#xff0c;并开始完全绕过IT部门。 今天&#xff0c;我们来探索一下“低代码开发…

制药企业高效过滤器检漏参考法规、方法及操作步骤

对制药企业来讲&#xff0c;高效过滤器检漏主要是现场检漏&#xff0c;通过DOP法来发现滤器本身及运输、安装过程中可能存在的问题。常使用气溶胶光度计及多分散气溶胶进行检漏。依据的标准是2010药品GMP指南(测试方法采用ISO14644-3)。 对于制药企业来说&#xff0c;高效过滤器…

自动驾驶TPM技术杂谈 ———— 边缘检测

文章目录 介绍边缘检测与微分运算离散信号的差分滤波Robert算子Prewitt算子Sobel算子拉普拉斯算子 介绍 计算机视觉&#xff08;Computer Vision&#xff0c;CV&#xff09;是一门使用计算机模拟生物视觉的学科&#xff0c;目的是使用计算机代替人眼实现对目标的识别、分类、跟…

3.2. 数学类(Math、BigInteger、BigDecimal)

1. Math类 Math类提供了一些基本的数学函数&#xff0c;如求平方根、绝对值、三角函数等。它是一个final类&#xff0c;并且所有的方法都是static的&#xff0c;因此无需创建对象&#xff0c;直接使用类名调用方法即可。 以下是Math类的一些常用方法&#xff1a; abs(double…

抖音seo源码-抖音搜索源码-抖音下拉词-抖音关键词排名系统搭建

为了优化抖音平台上的内容&#xff0c;开发抖音关键词排名系统成为了必要的措施。该系统可以针对搜索结果和下拉词进行分析&#xff0c;为用户提供更准确的搜索结果。为实现这一目标&#xff0c;开发团队进行了大量的市场调查和用户研究。 在开发过程中&#xff0c;团队利用了…

mysql8+忘记密码的详细解决方法

mysql8忘记密码的详细解决方法 不同的版本&#xff0c;可能处理的方式不一样&#xff0c;这里说一下8以上的版本处理密码忘记的问题&#xff0c;windows系统。 一.问题&#xff1a; 太久没用mysql &#xff0c;忘记了原先的root密码 二&#xff1a;解决 1.关闭mysql服务,我的…

代码随想录算法训练营第四十八天 | 力扣 198.打家劫舍, 213.打家劫舍II, 337.打家劫舍III

198.打家劫舍 题目 198. 打家劫舍 你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋。每间房内都藏有一定的现金&#xff0c;影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统&#xff0c;如果两间相邻的房屋在同一晚上被小偷闯入&#xff0c;系统会自动报警…

word文档生成PDF文档时候自动生成书签方法

0 Preface/Foreword 在日常工作中&#xff0c;经常需要写技术文档&#xff0c;为了排版美观&#xff0c;一般会选择word&#xff0c;这样就可以生成目录。 word文件可以很方便生产PDF文档&#xff0c;方便分享给同事。 在阅读PDF文档时&#xff0c;看到有些PDF文档在左侧有一…

Kafka入门(安装和SpringBoot整合)

文章目录 一、Docker安装Kafka1. 创建网络2. 安装zookeeper3. 安装Kafka 二、Kafka介绍1. Kafka简介 三、SpringBoot整合Kafka1. 引入pom依赖2. application.propertise配置3. Hello Kafka(Producer)4. Consumer Kafka5. 带回调的生产者6. 自定义分区器7. kafka事务提交8. 指定…

如何将 O2OA (翱途) 集成到阿里钉钉

O2OA 平台拥有配套的原生开发的安卓和 IOS 移动 APP&#xff0c;可以以微应用的方式集成到阿里钉钉&#xff0c;同步钉钉的企业通讯录作为本地组织人员架构&#xff0c;并且可以将待办等通知直接推送到钉钉进行消息提醒。本篇主要介绍如何将 O2OA 集成到阿里钉钉实现钉钉办公。…

欧科云链(01499.HK)成格林威治经济论坛钻石级行业独家合作伙伴

5月30日讯&#xff0c;欧科云链控股有限公司&#xff08;“欧科云链控股”&#xff0c;1499.HK&#xff09;官宣成为全球高端经济峰会格林威治经济论坛(Greenwich Economic Forum&#xff0c;下称GEF论坛)的钻石级行业独家合作伙伴。该论坛将于6月15日至16日&#xff0c;首次在…

【维生素C语言】附录:Github 使用教学

&#x1f451; 全新Python高级软件实践专栏&#xff1a; 一起玩蛇啊 &#x1f449; 《一起玩蛇》&#x1f40d; &#x1f4ad; 写在前面&#xff1a;本章我们将介绍 Git 的基本使用方法&#xff0c;包括注册 GitHub 账号、设置 Git、创建本地存储库、复制本地存储库、导入远程…