KubeEdge 1.20.0 现已发布。新版本针对大规模、离线等边缘场景对边缘节点和应用的管理、运维等能力进行了增强,同时新增了多语言 Mapper-Framework 的支持。
新增特性:
-
支持批量节点操作
-
多语言 Mapper-Framework 支持
-
边缘 keadm ctl 新增 pods logs/exec/describe 和 Devices get/edit/describe 能力
-
解耦边缘应用与节点组,支持使用 Node LabelSelector
-
边云通道支持 IPv6
-
升级 k8s 依赖到 1.30
支持批量节点操作
在之前的版本中,keadm 工具仅支持单个节点的安装与管理,然而在边缘场景中,节点数量通常比较庞大,单个节点的管理难以满足大规模场景的需求。
在 1.20.0 版本中,提供了批量节点操作和运维的能力。基于这个能力,用户仅需要使用一个配置文件,即可通过一个控制节点(控制节点可以登录所有边缘节点)对所有边缘节点进行批量操作和维护。keadm 当前版本支持的批量能力包括 join, reset 和 upgrade。
keadm:
download:
enable: true
url: ""
keadmVersion: ""
archGroup:
- amd64
offlinePackageDir: ""
cmdTplArgs:
cmd: ""
token: ""
nodes:
- nodeName: edge-node
arch: amd64
keadmCmd: ""
copyFrom: ""
ssh:
ip: ""
username: root
port: 22
auth:
type: password
passwordAuth:
password: ""
maxRunNum: 5
keadm:
download:
enable: true
url: https://github.com/kubeedge/kubeedge/releases/download/v1.20.0
keadmVersion: v1.20.0
archGroup:
- amd64
offlinePackageDir: /tmp/kubeedge/keadm/package/amd64
cmdTplArgs:
cmd: join--cgroupdriver=cgroupfs--cloudcore-ipport=192.168.1.102:10000--hub-protocol=websocket--certport=10002--image-repository=docker.m.daocloud.io/kubeedge--kubeedge-version=v1.20.0--remote-runtime-endpoint=unix:///run/containerd/containerd.sock
token: xxx
nodes:
- nodeName: ubuntu1
arch: amd64
keadmCmd: '{{.cmd}} --edgenode-name=containerd-node1 --token={{.token}}'
copyFrom: /root/test-keadm-batchjoin
ssh:
ip: 192.168.1.103
username: root
auth:
type: privateKey
privateKeyAuth:
privateKeyPath: /root/ssh/id_rsa
- nodeName: ubuntu2
arch: amd64
keadmCmd: join--edgenode-name=containerd-node2--cgroupdriver=cgroupfs--cloudcore-ipport=192.168.1.102:10000--hub-protocol=websocket--certport=10002--image-repository=docker.m.daocloud.io/kubeedge--kubeedge-version=v1.20.0--remote-runtime-endpoint=unix:///run/containerd/containerd.sock
copyFrom: /root/test-keadm-batchjoin
ssh:
ip:192.168.1.104
username: root
auth:
type: password
passwordAuth:
password: *****
maxRunNum: 5
keadmbatch-c config.yaml
更多信息可参考:
多语言 Mapper-Framework 支持
由于边缘 IoT 设备通信协议的多样性,用户可能需要使用 Mapper-Framework 生成自定义 Mapper 插件来纳管边缘设备。当前 Mapper-Framework 只能生成 go 语言版本的 Mapper 工程,对于部分不熟悉 go 语言的开发者来说使用门槛仍然较高。因此在新版本中,KubeEdge 提供了 Java 版本的 Mapper-Framework,用户可以访问 KubeEdge 主仓库的 feature-multilingual-mapper 分支,利用 Mapper-Framework 生成 Java 版的自定义 Mapper 工程。
更多信息可参考:
边缘 keadm ctl
新增 pods logs/exec/describe 和 Devices get/edit/describe 能力
在 v1.17.0 版本中,新增了 keadm ctl 子命令,支持在离线场景下对边缘 pod 进行查询和重启。在 v1.20 中对该命令做了进一步增强,支持 pod 的 logs/exec/describe 等功能,用户在边缘可对 pod 进行日志查询、pod 资源详细信息查询、进入容器内部等操作。同时还新增了对 device 的操作,支持 device 的 get/edit/describe 的功能,可以在边缘获取 device 列表、device 的详细信息查询、在边缘离线场景下对 device 进行编辑操作。
如下所示,新增的 keadm ctl 子命令功能均在 MetaServer 中开放了 Restful 接口,并与 K8s ApiServer 对应的接口完全兼容。
[root@edgenode1 ~]
Commands operating on the data plane at edge
Usage:
keadm ctl [command]
Available Commands:
...
describe Show details of a specific resource
edit Edit a specific resource
exec Execute command in edge pod
get Get resources in edge node
logs Get pod logs in edge node
...
更多信息可参考:
解耦边缘应用与节点组,支持使用 Node LabelSelector
EdgeApplication 可以通过节点组覆盖部署定义(如副本、镜像、命令和环境),Pod 流量在节点组内闭环(EdgeApplication 管理的 Deployment 共用一个 Service)。但在实际场景中,需要批量操作的节点范围与需要相互协作的节点范围并不相同。例如在智慧园区的场景中,每个城市都有很多个智慧园区,需要应用的流量在一个智慧园区内闭环,但应用批量管理的范围可能是城市级,也可能是省级。
在 EdgeApplication CRD 中为节点标签选择器添加了一个新的 targetNodeLabels 字段,该字段将允许应用程序根据节点标签进行部署,并且覆盖特定的字段,YAML 定义如下:
apiVersion: apps.kubeedge.io/v1alpha1
kind: EdgeApplication
metadata:
name: edge-app
namespace: default
spec:
workloadTemplate: {...}
workloadScope:
# New field: targetNodeLabels
targetNodeLabels:
- labelselector:
- matchExpressions:
- key: "region"
operator: In
values:
- "HangZhou"
overriders: {...}
更多信息可参考:
边云通道支持 IPv6
在官网的文档中提供了一份配置指南,介绍了 KubeEdge 如何在 Kubernetes 集群中让云边 hub 隧道支持 IPv6。
文档地址:https://kubeedge.io/docs/advanced/support_ipv6
升级 K8s 依赖到 v1.30
新版本将依赖的 Kubernetes 版本升级到 v1.30.7,你可以在云和边缘使用新版本的特性。
更多信息可参考:https://github.com/kubeedge/kubeedge/pull/5997
版本升级注意事项
从 v1.20 开始,EdgeCore 的配置项 edged.rootDirectory 的默认值将会由 /var/lib/edged 切换至 /var/lib/kubelet。如果您需要继续使用原有路径,可以在使用 keadm 安装 EdgeCore 时设置 --set edged.rootDirectory=/var/lib/edged。
(责任编辑:IT) |