KubeEdge 1.20.0版本发布!边缘管理能力提升,满足更多边缘场景需求!

举报
云容器大未来 发表于 2025/02/14 09:48:43 2025/02/14
8.1k+ 0 0
【摘要】 KubeEdge 发布1.20.0版本。新版本针对大规模、离线等边缘场景对边缘节点和应用的管理、运维等能力进行了增强,同时新增了多语言 Mapper-Framework 的支持。

KubeEdge 发布1.20.0版本现已正式发布。新版本针对大规模、离线等边缘场景对边缘节点和应用的管理、运维等能力进行了增强,同时新增了多语言 Mapper-Framework 的支持。

kubeedge.png

KubeEdge v1.20.0 新增特性:

  • 支持批量节点操作 

  • 多语言 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              # <Optional> Whether to download the keadm package, which can be left unconfigured, default is true. if it is false, the 'offlinePackageDir' will be used.
    url: ""                   # <Optional> The download address of the keadm package, which can be left unconfigured. If this parameter is not configured, the official github repository will be used by default.
  keadmVersion: ""            # <Required> The version of keadm to be installed. for example: v1.19.0
  archGroup:                  # <Required> This parameter can configure one or more of amd64/arm64/arm.
    - amd64
  offlinePackageDir: ""       # <Optional> The path of the offline package. When download.enable is true, this parameter can be left unconfigured.
  cmdTplArgs:                 # <Optional> This parameter is the execution command template, which can be optionally configured and used in conjunction with nodes[x].keadmCmd.
    cmd: ""                   # This is an example parameter, which can be used in conjunction with nodes[x].keadmCmd.
    token: ""                 # This is an example parameter, which can be used in conjunction with nodes[x].keadmCmd.
nodes:
  - nodeName: edge-node       # <Required> Unique name, used to identify the node
    arch: amd64               # <Required> The architecture of the node, which can be configured as amd64/arm64/arm
    keadmCmd: ""              # <Required> The command to be executed on the node, can used in conjunction with keadm.cmdTplArgs. for example: "{{.cmd}} --edgenode-name=containerd-node1 --token={{.token}}"
    copyFrom: ""              # <Optional> The path of the file to be copied from the local machine to the node, which can be left unconfigured.
    ssh:
      ip: ""                  # <Required> The IP address of the node.
      username: root          # <Required> The username of the node, need administrator permissions.
      port: 22                # <Optional> The port number of the node, the default is 22.
      auth:                   # Log in to the node with a private key or password, only one of them can be configured.
        type: password        # <Required> The value can be configured as 'password' or 'privateKey'.
        passwordAuth:         # It can be configured as 'passwordAuth' or 'privateKeyAuth'.
          password: ""        # <Required> The key can be configured as 'password' or 'privateKeyPath'.
maxRunNum: 5                  # <Optional> The maximum number of concurrent executions, which can be left unconfigured. The default is 5.`

# 配置文件参考用例 (各字段具体值请根据实际环境进行配置)
keadm:
  download:
    enable: true
    url: https://github.com/kubeedge/kubeedge/releases/download/v1.20.0 # If this parameter is not configured, the official github repository will be used by default
  keadmVersion: v1.20.0
  archGroup: # This parameter can configure one or more of amd64\arm64\arm
    - amd64
  offlinePackageDir: /tmp/kubeedge/keadm/package/amd64 # When download.enable is true, this parameter can be left unconfigured
  cmdTplArgs: # This parameter is the execution command template, which can be optionally configured and used in conjunction with nodes[x].keadmCmd
    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   # Unique name
    arch: amd64
    keadmCmd: '{{.cmd}} --edgenode-name=containerd-node1 --token={{.token}}' # Used in conjunction with keadm.cmdTplArgs
    copyFrom: /root/test-keadm-batchjoin # The file directory that needs to be remotely accessed to the joining node
    ssh:
      ip: 192.168.1.103
      username: root
      auth:
        type: privateKey   # Log in to the node using a private key
        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 # Used alone
    copyFrom: /root/test-keadm-batchjoin
    ssh:
      ip:192.168.1.104
      username: root
      auth:
        type: password
        passwordAuth:
          password: *****
maxRunNum: 5

# 用法 (保存以上文件,例如保存为 config.yaml)
# 在控制节点下载最新版本 keadm, 执行以下命令进行使用
keadmbatch-c config.yaml

更多信息可参考:

https://github.com/kubeedge/kubeedge/pull/5988

https://github.com/kubeedge/kubeedge/pull/5968

https://github.com/kubeedge/website/pull/657


多语言 Mapper-Framework 支持

由于边缘 IoT 设备通信协议的多样性,用户可能需要使用 Mapper-Framework 生成自定义 Mapper 插件来纳管边缘设备。当前 Mapper-Framework 只能生成 go 语言版本的 Mapper 工程,对于部分不熟悉 go 语言的开发者来说使用门槛仍然较高。因此在新版本中,KubeEdge 提供了 Java 版本的 Mapper-Framework,用户可以访问 KubeEdge 主仓库的feature-multilingual-mapper分支,利用 Mapper-Framework 生成 Java 版的自定义 Mapper 工程。

更多信息可参考:

https://github.com/kubeedge/kubeedge/pull/5773

https://github.com/kubeedge/kubeedge/pull/5900


▍边缘 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 ~] # keadm ctl -h
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
...

更多信息可参考:

https://github.com/kubeedge/kubeedge/pull/5752

https://github.com/kubeedge/kubeedge/pull/5901


解耦边缘应用与节点组,支持使用 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: {...}

更多信息可参考:

Issue: https://github.com/kubeedge/kubeedge/issues/5755

Pull Request: https://github.com/kubeedge/kubeedge/pull/5845


边云通道支持 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


    致谢

    感谢 KubeEdge 社区技术指导委员会 (TSC)、各 SIG 成员对v1.20版本开发的支持与贡献,未来 KubeEdge 将持续在新场景探索与支持、稳定性、安全性、可扩展性等方面持续发展与演进!


    相关链接

    Release Notes:

    https://github.com/kubeedge/kubeedge/blob/master/CHANGELOG/CHANGELOG-1.20.md


    kubeedge小助手.png

    扫码回复“KubeEdge” 进入技术群



    【更多KubeEdge资讯推荐】玩转KubeEdge保姆级攻略——环境搭建篇


    玩转KubeEdge保姆级攻略——环境搭建篇

    《玩转KubeEdge保姆级攻略——环境搭建篇》课程主要介绍如何通过华为云服务快速搭建一套KubeEdge边缘计算开发平台及部署Sedna、EdgeMesh等KubeEdge生态组件。


    课程免费学习链接:https://connect.huaweicloud.com/courses/learn/course-v1:HuaweiX+CBUCNXNX022+Self-paced/about


    KubeEdge社区介绍:KubeEdge是业界首个云原生边缘计算框架、云原生计算基金会(CNCF)唯一毕业级边缘计算开源项目,社区已完成业界最大规模云原生边云协同高速公路项目(统一管理10万边缘节点/50万边缘应用)、业界首个云原生星地协同卫星、业界首个云原生车云协同汽车、业界首个云原生油田项目,开源业界首个分布式协同AI框架Sedna及业界首个边云协同终身学习范式,并在持续开拓创新中。


    KubeEdge网站 :  https://kubeedge.io

    GitHub地址 : https://github.com/kubeedge/kubeedge

    Slack地址 : https://kubeedge.slack.com

    邮件列表 : https://groups.google.com/forum/#!forum/kubeedge

    每周社区例会 : https://zoom.us/j/4167237304

    Twitter : https://twitter.com/KubeEdge

    文档地址 : https://docs.kubeedge.io/en/latest/

    【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
    • 点赞
    • 收藏
    • 关注作者

    作者其他文章

    评论(0

    抱歉,系统识别当前为高风险访问,暂不支持该操作

      全部回复

      上滑加载中

      设置昵称

      在此一键设置昵称,即可参与社区互动!

      *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

      *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。