本文分享自华为云社区《KubeEdge v1.17.0发布!数据处理能力与易用性全面提升-云社区-华为云》,作者:云容器的未来。
KubeEdge社区v1.17.0正式发布。新版本为边缘节点和设备带来更多新功能,同时继续提高易用性。
KubeEdge v1.17.0 中的新功能:
支持边缘Pod使用InClusterConfig访问Kube-APIServerMapper。支持流式数据上报。支持边缘子模块自动启动。引入keadm ctl 命令以支持在边缘查询和重启pod。易用性提升:基于Keadm的部署能力得到增强。 Mapper框架添加MySQL数据库升级。 K8s 依赖。 v1.28 新特性概述支持边缘Pod 使用InClusterConfig 访问Kube-APIServer Kubernetes 支持Pod 使用InClusterConfig 机制直接访问Kube-APIServer。但在边缘场景中,边缘Pod和Kube-APIServer通常不在同一个网络环境中,无法直接访问。在新版本1.17.0中,通过启用MetaServer和DynamicController模块,边缘Pod也可以使用InClusterConfig机制直接访问Kube-APIServer。此功能在此版本中作为Alpha 功能发布。如果要使用,需要打开边缘List-Watch开关,并配置requireAuthorization的featureGates。
当keadm init 启动CloudCore 时,指定cloudCore.featureGates.requireAuthorization=true 和cloudCore.modules.dynamicController.enable=true。启动EdgeCore后,按如下方式修改edgecore.yaml并重新启动EdgeCore。 apiVersion: edgecore.config.kubeedge.io/v1alpha2kind: EdgeCorefeatureGates: requireAuthorization: truemodules: metaManager: metaServer: enable: true 更多信息请参考:https://github.com/kubeedge/kubeedge/pull/5524https://github。 com/kubeedge/kubeedge/pull/5541
Mapper支持流式数据报告。在1.17版本中,针对当前Mapper只能处理离散设备数据,无法处理流式数据的问题,Mapper为Mapper-Framework提供了处理视频流数据的能力。新版本中可以支持KubeEdge管理边缘摄像头设备,获取摄像头采集的视频流,并将视频流保存为帧文件或视频文件,增强了KubeEdge的边缘设备管理能力。
Edge摄像头设备管理1.17版本提供了基于Onvif协议的内置Mapper来实现Onvif设备驱动功能。它可以根据用户配置文件中的定义连接摄像头设备,获取设备的认证文件和RTSP视频流,并管理Onvif摄像头设备。 KubeEdge 集群。 Onvif 设备的设备实例配置文件示例如下:
apiVersion: devices.kubeedge.io/v1beta1kind: Devicemetadata: name: onvif-device-01 namespace: defaultspec: deviceModelRef: name: onvif-model # 需要与onvif-model.yaml中定义的模型名称相同protocol: protocolName: onvif configData33 360 url: 192.168.168.64:80 # 替换替换为您自己的onvif相机的地址userName: admin # 替换为您自己的onvif相机的用户名password: /etc/secret/password # 根据您的secret.yaml填写字段nodeName: edge-node # 替换为您的边缘节点nameproperties: - name: getURIvisitors:protocolName:onvifconfigData:url:192.168.168.64:80userName:adminpassword:/etc/secret/passworddataType:string视频流数据处理新版本增强Mapper-Framework数据平面能力,内置流数据处理功能。用户可以在设备实例文件中进行配置,截取边缘摄像头设备上报的视频流,并将其保存为视频剪辑文件和视频帧文件。用于流数据处理的设备实例文件示例如下:
apiVersion: devices.kubeedge.io/v1beta1kind: Devicemetadata: name: onvif-device-01.properties: - name: saveFrame # 将视频流转换为帧访问者: protocolName: onvif configData: format: jpg # 帧文件格式outputDir: /tmp/case /#输出帧文件的目录frameCount: 30 # 输出帧数frameInterval: 1000000# 帧之间的时间间隔(单位为纳秒) dataType: stream - name: saveVideo # 将视频流转换为视频片段visitors: protocolName: onvif configData: frameCount: 1000 # 视频片段包含的帧数format: mp4 #视频剪辑格式outputDir: /tmp/case/# 输出视频剪辑的目录videoNum: 2 # 视频剪辑的数量dataType: Stream 更多信息请参考:https://github.com/kubeedge/kubeedge/pull/5448https://github.com/kubeedge/kubeedge/拉/5514https://github.com/kubeedge/mappers-go/pull/127
支持边缘子模块自动启动。由于配置或可恢复的环境问题(例如进程启动顺序),EdgeCore 启动失败。例如,当containerd.socket未准备好时,Edged无法启动Kubelet将导致EdgeCore直接退出。在新版本中,我们改进了Beehive框架,支持边缘子模块重启。用户可以通过启动moduleRestart featureGates 将EdgeCore 的子模块设置为自动重启,而不是整个EdgeCore 退出。该功能在本版本中作为Alpha功能发布,如果需要使用,需要配置moduleRestart的featureGates。
apiVersion: edgecore.config.kubeedge.io/v1alpha2kind: EdgeCorefeatureGates: moduleRestart: true 更多信息请参考:https://github.com/kubeedge/kubeedge/pull/5513https://github.com/kubeedge/kubeedge/pull/5514
引入keadm ctl 命令以支持在边缘查询和重启pod。当边缘节点离线时,我们无法通过kubectl查看边缘节点上的pod。在1.17中,我们可以在边缘节点上使用keadm ctl get/restart pod [flag]来检查pod。查询或者重启。如果需要使用该功能,需要开启metaserver开关。
keadm ctl get pod 的可选参数如下: [root@centos-2 bin]# keadm ctl get pod -h获取边缘节点中的podUsage: keadm ctl get pod [flags]Flags: -A, --all-namespaces 如果存在,列出所有命名空间中请求的对象。即使使用--namespace -h, --help help for pod -n, --namespace string 指定命名空间,当前上下文中的命名空间也会被忽略-o, --output string 输出格式。 之一(json、yaml、名称、go-template、go-template-file、template、templatefile、jsonpath、jsonpath-as-json、jsonpath-file、custom-columns、custom-columns- file、wide)-l, --selector string 要过滤的选择器(标签查询),支持'='、'==' 和'!='。(例如-l key1=value1,key2=value2)keadm ctl 重启pod 的可选参数为如下: [root@centos-2 bin]# keadm ctl restart pod -hRestart 边缘节点中的podUsage: keadm ctl restart pod [flags]Flags: -h, --help help for pod -n, --namespace string 指定命名空间(默认'default')Demo演示:
[root@centos-2 bin]# alias kectl='keadm ctl'[root@centos-2 bin]# kectl get pod -owide -ANAMESPACE NAME READY STATUS RESTARTS AGE IP NODENOMINATED NODE READINESS GATESdefault nginx-deployment-58b54fbd94-f5q7p 1 /1 运行1 (20m 前) 22m 10.88.0.2 centos-2 kubeedge edge-eclipse-mosquitto-scvrk 1/1 运行1 (16m 前) 28m 192.168.94.106 centos-2 [root@centos-2 bin]# kectl restart pod-n kubeedge边缘-eclipse-mosquitto-scvrk393cbcac4b484a4a28eee7dd2d63b33137a10a84d5f6eed6402b9a23efc6aef0af4059137ced56b365da7e1c43d3ea218e3090ab7644a105 651 ca4661ddf26f0[root@centos-2 bin]# kectl get pod -owide -ANAMESPACE NAME READY STATUS RESTARTS AGE IP NODENOMINATED NODE READINESS GATESdefault nginx-deployment-58b54fbd94-f5q7p 1/1 Running 1 ( 21m 前) 23m 10.88.0.2 centos-2 kubeedge edge-eclipse-mosquitto-scvrk 1/1 运行2 (10s 前) 29m 192.168.94.106 centos-2 更多信息请参考:https://github.com/kubeedge/kubeedge /拉/5535https://github.com/kubeedge/kubeedge/pull/5504
易用性提升:基于Keadm增强的部署能力,将命令keadmgenerate改为keadmmanifest; [root@centos-2 bin]# keadm --help|grep 清单清单检查并生成清单。example:[root@centos-1 keepalived]# keadm 清单--advertise-address=--profile version=v1.17.0 添加keadm 中加入一个镜像仓库参数: image-repository,支持自定义镜像仓库; [root@centos-2 bin]# keadm join -h|grep image-repository --image-repository string 使用此键决定从哪个镜像仓库拉取镜像example:[root@centos-2 bin]# keadm join --cloudcore -ipport :10000 --kubeedge-版本=1.17。 0 --remote-runtime-endpoint=unix:///run/cri-dockerd.sock --image-repository my.harbor.cn/kubeedge --token xxxx 将keadm reset命令拆分为三级,拆分为keadm reset cloud和keadm重置edge,keadm重置仍然保留,并且cloudcore和edgecore在使用时都会被卸载。新的三级命令keadm Reset cloud 和keadm Reset Edge 分别仅卸载cloudcore 和Edgecore。 [root@centos-2 bin]# keadm reset --help.可用命令: cloudTeardowns CloudCore组件edge Teardowns EdgeCore componentFlags: --force 重置节点而不提示确认-h, --help help for Reset --kube-config string 使用此键设置kube-config 路径,例如: $HOME/.kube/config (default '/root/.kube/config')[root@centos-2 bin]# keadm reset cloud --help.Flags: --force 重置节点而不提示确认-h, --help help for cloud --kube-config string 使用此键设置kube-config 路径,例如: $HOME/.kube/config (默认'/root/. kube/config')[root@centos-2 bin]# keadm reset edge --help.Flags: --force 重置节点而不提示确认-h, --help 边缘的帮助。更多信息请参考:https://github.com/kubeedge/kubeedge/issues/5317https://github.com/kubeedge/kubeedge/pull/5462https://github.com/kubeedge/kubeedge/pull/5463https://github.com/kubeedge/kubeedge/pull/5540
Mapper框架添加了MySQL数据库。在Mapper-Framework 1.17中,数据推送模块增加了MySQL数据库。如果用户想使用MySQL作为某个属性的PushMethod,可以在设备实例对应的属性下进行如下配置:
apiVersion: devices.kubeedge.io/v1beta1kind: Device.spec: properties: - name: xxx . pushMethod: dbMethod: mysql: mysqlClientConfig:addr: 127.0.0.1:3306 #连接mysql数据库的url.database3 3360 kubeedge #数据库名称userName: root #用户名提供更多信息参考:https://github.com/kubeedge/kubeedge/pull/5376
将K8s依赖升级到新版本v1.28。将依赖的Kubernetes 版本升级到v1.28.6。您可以在云端和边缘使用新版本的功能。更多信息请参考:https://github.com/kubeedge/kubeedge/pull/5412
版本升级注意事项从v1.17.0 开始,使用keadm 安装KubeEdge 时,建议使用--kubeedge-version=指定具体版本。 --profile version=将逐渐弃用。
致谢感谢KubeEdge 社区技术指导委员会(TSC) 和所有SIG 成员对v1.17 开发的支持和贡献。未来,KubeEdge将在新场景探索与支持、稳定性、安全性、可扩展性等方面不断发展和进化!
相关链接发布说明:https://github.com/kubeedge/kubeedge/blob/master/CHANGELOG/CHANGELOG-1.17.md 关注#HUAWEICloudDeveloperAlliance#点击下方第一时间了解华为云新技术~华为云博客_大数据博客_AI博客_云计算博客_开发者中心-华为云