PageSourceSearch

https://kubeedge.io/blog/

html kubeedge.io collected 2026-10-02 16:38:57 UTC 232,121 bytes, 44 lines download raw bytes

1<!doctype html>
2<html lang="en-GB" dir="ltr" class="blog-wrapper blog-list-page plugin-blog plugin-id-default">
3<head>
4<meta charset="UTF-8">
5<meta name="generator" content="Docusaurus v2.4.1">
6<title data-rh="true">Blog | KubeEdge</title><meta data-rh="true" name="viewport" content="width=device-width,initial-scale=1"><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:image" content="https://kubeedge.io/img/docusaurus-social-card.jpg"><meta data-rh="true" name="twitter:image" content="https://kubeedge.io/img/docusaurus-social-card.jpg"><meta data-rh="true" property="og:url" content="https://kubeedge.io/blog"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" property="og:title" content="Blog | KubeEdge"><meta data-rh="true" name="description" content="Blog"><meta data-rh="true" property="og:description" content="Blog"><meta data-rh="true" name="docusaurus_tag" content="blog_posts_list"><meta data-rh="true" name="docsearch:docusaurus_tag" content="blog_posts_list"><link data-rh="true" rel="canonical" href="https://kubeedge.io/blog"><link data-rh="true" rel="alternate" href="https://kubeedge.io/blog" hreflang="en-GB"><link data-rh="true" rel="alternate" href="https://kubeedge.io/zh/blog" hreflang="zh"><link data-rh="true" rel="alternate" href="https://kubeedge.io/blog" hreflang="x-default"><link rel="alternate" type="application/rss+xml" href="/blog/rss.xml" title="KubeEdge RSS Feed">
7<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml" title="KubeEdge Atom Feed">
8
9<link rel="preconnect" href="https://www.google-analytics.com">
10<link rel="preconnect" href="https://www.googletagmanager.com">
vendor: 64 bytes, lines 10-11
10
11<script async src="https://www.googletagmanager.com/gtag/js?id=
11G-9PL5BPEXGS
vendor: 12 bytes, line 11
11"></script>
12<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-9PL5BPEXGS",{anonymize_ip:!0})</script>
12
13
14
15
16
17
18
19<link rel="apple-touch-icon" sizes="180x180" href="/favicons/apple-touch-icon.png">
20<link rel="icon" type="image/png" sizes="32x32" href="/favicons/favicon-32x32.png">
21<link rel="icon" type="image/png" sizes="16x16" href="/favicons/favicon-16x16.png">
22<link rel="shortcut icon" type="image/x-icon" href="/favicons/favicon.ico">
23<link rel="manifest" href="/favicons/site.webmanifest">
24<meta name="theme-color" content="#ffffff">
25<meta name="msapplication-config" content="/favicons/browserconfig.xml"><link rel="stylesheet" href="/assets/css/styles.179947c5.css">
26<link rel="preload" href="/assets/js/runtime~main.7af97fb4.js" as="script">
27<link rel="preload" href="/assets/js/main.167a3d47.js" as="script">
28</head>
29<body class="navigation-with-keyboard">
30<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}return t}()||function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script>
30<div id="__docusaurus">
31<div role="region" aria-label="Skip to main content"><a class="skipToContent_fXgn" href="#__docusaurus_skipToContent_fallback">Skip to main content</a></div><nav aria-label="Main" class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Toggle navigation bar" aria-expanded="false" class="navbar__toggle clean-btn" type="button"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" target="_self" href="/"><div class="navbar__logo"><img src="/img/avatar.png" alt="" class="themedImage_ToTc themedImage--light_HNdA"><img src="/img/avatar.png" alt="" class="themedImage_ToTc themedImage--dark_i4oU"></div><b class="navbar__title text--truncate">KubeEdge</b></a><div class="navbar__item dropdown dropdown--hoverable"><a href="#" aria-haspopup="true" aria-expanded="false" role="button" class="navbar__link navbar__link--community">Documentation</a><ul class="dropdown__menu"><li><a class="dropdown__link" target="_self" href="/docs/">Next</a></li><li><a href="https://release-1-22.docs.kubeedge.io/docs/" target="_self" rel="noopener noreferrer" class="dropdown__link">v1.22<svg width="12" height="12" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li><a href="https://release-1-21.docs.kubeedge.io/docs/" target="_self" rel="noopener noreferrer" class="dropdown__link">v1.21<svg width="12" height="12" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li><a href="https://release-1-20.docs.kubeedge.io/docs/" target="_self" rel="noopener noreferrer" class="dropdown__link">v1.20<svg width="12" height="12" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li><li><a href="https://release-1-19.docs.kubeedge.io/docs/" target="_self" rel="noopener noreferrer" class="dropdown__link">v1.19<svg width="12" height="12" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_nPIU"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></a></li></ul></div><a aria-current="page" class="navbar__item navbar__link navbar__link--active" target="_self" href="/blog">Blog</a><a class="navbar__item navbar__link" href="/case-studies">Case Studies</a><a class="navbar__item navbar__link" href="/partners">Partners</a><a href="https://github.com/kubeedge/kubeedge/releases" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Downloads</a></div><div class="navbar__items navbar__items--right"><a href="https://github.com/kubeedge/kubeedge" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link header-github-link heade-icon" aria-label="GitHub repository"></a><a href="https://x.com/KubeEdge" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link header-x-link heade-icon" aria-label="KubeEdge Twitter"></a><a class="navbar__item navbar__link header-slack-link heade-icon" aria-label="KubeEdge Slack community" href="/docs/community/slack"></a><div class="navbar__item dropdown dropdown--hoverable dropdown--right"><a href="#" aria-haspopup="true" aria-expanded="false" role="button" class="navbar__link"><svg viewBox="0 0 24 24" width="20" height="20" aria-hidden="true" class="iconLanguage_nlXk"><path fill="currentColor" d="M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"></path></svg>English</a><ul class="dropdown__menu"><li><a href="/blog" target="_self" rel="noopener noreferrer" class="dropdown__link dropdown__link--active" lang="en-GB">English</a></li><li><a href="/zh/blog" target="_self" rel="noopener noreferrer" class="dropdown__link" lang="zh">简体中文</a></li></ul></div><div class="toggle_vylO colorModeToggle_DEke"><button class="clean-btn toggleButton_gllP toggleButtonDisabled_aARS" type="button" disabled="" title="Switch between dark and light mode (currently light mode)" aria-label="Switch between dark and light mode (currently light mode)" aria-l
31ive="polite"><svg viewBox="0 0 24 24" width="24" height="24" class="lightToggleIcon_pyhR"><path fill="currentColor" d="M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"></path></svg><svg viewBox="0 0 24 24" width="24" height="24" class="darkToggleIcon_wfgR"><path fill="currentColor" d="M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"></path></svg></button></div><div class="searchBox_ZlJk"></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div id="__docusaurus_skipToContent_fallback" class="main-wrapper mainWrapper_z2l0"><div class="container margin-vert--lg"><div class="row"><aside class="col col--3"><nav class="sidebar_re4s thin-scrollbar" aria-label="Blog recent posts navigation"><div class="sidebarItemTitle_pO2u margin-bottom--md">All our posts</div><ul class="sidebarItemList_Yudw clean-list"><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/blog/kubeedge-riscv-validation">KubeEdge on RISC-V - Deploying and Validating on VisionFive2</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/blog/cncf-lfx-EAI-benchmarking/EAI-meets-KubeEdge-Ianvs">Embodied Intelligence meets KubeEdge-Ianvs: Industrial Assembly Benchmarking</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/blog/release-v1.23">KubeEdge v1.23 is live!</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/blog/release-v1.22">KubeEdge v1.22 is live!</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/blog/release-v1.21">KubeEdge v1.21 is live!</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/blog/release-v1.20">KubeEdge v1.20 is live!</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/blog/dashboard-getting-started">Getting started with KubeEdge Dashboard</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/blog/release-v1.19">KubeEdge v1.19 is live!</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/blog/cncf-graduation-announcement">KubeEdge has Graduated within the CNCF!</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/blog/release-v1.18">KubeEdge v1.18 is live!</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/blog/enable-cilium">KubeEdge meets Cilium !!!</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/blog/release-v1.17">KubeEdge v1.17 is live!</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/blog/summer-ospp">Summer OSPP 2024 is coming! KubeEdge community has launched registrations</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/blog/release-v1.16">KubeEdge v1.16 is live!</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/blog/release-v1.15">KubeEdge v1.15 is live!</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/blog/release-v1.14">KubeEdge v1.14 is live!</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/blog/reach-slsa-l3">KubeEdge - CNCF&#x27;s First SLSA 3 Project</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/blog/release-v1.13">KubeEdge v1.13 is live!</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/blog/release-v1.12">KubeEdge v1.12 is live!</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/blog/scalability-test-report">Test Report on KubeEdge&#x27;s Support for 100,000 Edge Nodes</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/blog/security-threat-model">KubeEdge Holistic Security Audit Engagement</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/blog/release-v1.11">KubeEdge v1.11 is live!</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/blog/release-v1.10">KubeEdge v1.10 is live!</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/blog/release-v1.9">KubeEdge v1.9 is live!</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/blog/release-v1.8">KubeEdge v1.8 is live!</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/blog/release-v1.7">KubeEdge v1.7 is live!</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/blog/release-v1.6">KubeEdge v1.6 is live!</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/blog/release-v1.5">KubeEdge v1.5 is live!</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/blog/release-v1.4">KubeEdge v1.4 is live!</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/blog/release-v1.3">KubeEdge v1.3 is live!</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/blog/release-v1.2">KubeEdge v1.2 is out now</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/blog/contributor-contest-announcement">Announcement for &quot;KubeEdge Contribution Competition&quot; Winners</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/blog/contributor-contest">KubeEdge Contribution Competition</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/blog/secure-kubeedge">Secure kubeedge using SPIFFE/SPIRE</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/blog/cncf-sandbox-announcement">From the K8S blog: KubeEdge - a Kubernetes Native Edge Computing Framework</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/blog/control-home-appliances-via-cloud">Control home appliances from cloud</a></li><li class="sidebarItem__DBe"><a class="sidebarItemLink_mo7H" href="/blog/release-v0.2">KubeEdge v0.2 is out now</a></li></ul></nav></aside><main class="col col--7" itemscope="" itemtype="http://schema.org/Blog"><article class="margin-bottom--xl" itemprop="blogPost" itemscope="" itemtype="http://schema.org/BlogPosting"><header><h2 class="title_f1Hy" itemprop="headline"><a itemprop="url" href="/blog/kubeedge-riscv-validation">KubeEdge on RISC-V - Deploying and Validating on VisionFive2</a></h2><div class="container_mt6G margin-vert--md"><time datetime="2026-04-21T00:00:00.000Z" itemprop="datePublished">April 21, 2026</time> · <!-- -->9 min read</div><div class="margin-top--md margin-bottom--sm row"><div class="col col--6 authorCol_Hf19"><div class="avatar margin-bottom--sm"><a href="https://github.com/ddc-baiye" target="_blank" rel="noopener noreferrer" class="avatar__photo-link"><img class="avatar__photo" src="https://avatars.githubusercontent.com/u/240869683?v=4" alt="Baiye"></a><div class="avatar__intro" itemprop="author" itemscope="" itemtype="https://schema.org/Person"><div class="avatar__name"><a href="https://github.com/ddc-baiye" target="_blank" rel="noopener noreferrer" itemprop="url"><span itemprop="name">Baiye</span></a></div></div></div></div></div></header><div class="markdown" itemprop="articleBody"><p>This post shares a hands-on validation of KubeEdge on a real RISC-V board, VisionFive2. It covers depen
31dency preparation, native build of KubeEdge components, edge node join, and basic workload deployment, showing that the core deployment path is feasible on riscv64.</p><p>As the RISC-V ecosystem continues to grow, more edge scenarios are beginning to care about multi-architecture support. For KubeEdge, an important question naturally follows: <strong>can its basic deployment path work on a real RISC-V device?</strong></p><p>Recently, I did a hands-on validation on a <strong>VisionFive2</strong> board to answer that question.</p><p>The goal of this work was not to prove production readiness in one step, but to verify a more practical baseline: on a real <strong>riscv64</strong> environment, can we complete the core path from <strong>dependency preparation</strong>, to <strong>KubeEdge component build</strong>, to <strong>edge node join</strong>, and finally to <strong>basic workload running</strong>?</p><p>The answer, at least for this round of testing, is <strong>yes</strong>.</p><hr><h2 class="anchor anchorWithStickyNavbar_LWe7" id="why-this-validation-matters">Why this validation matters<a href="#why-this-validation-matters" class="hash-link" aria-label="Direct link to Why this validation matters" title="Direct link to Why this validation matters">​</a></h2><p>As edge computing expands to more hardware forms, architecture diversity is becoming increasingly common. In that context, verifying KubeEdge on RISC-V is meaningful in two ways.</p><p>First, it helps clarify whether KubeEdge has a usable starting point on emerging architectures. Second, it provides a practical reference for follow-up work, including workload compatibility testing, networking validation, and long-term stability evaluation on real devices.</p><p>For this validation, I used <strong>VisionFive2</strong> as the target platform and focused on a single question: <strong>is the basic deployment chain of KubeEdge on RISC-V feasible?</strong></p><p>More specifically, I wanted to verify the following:</p><ul><li>whether edge-side dependencies can be installed and used on riscv64;</li><li>whether <strong>edgecore</strong> and <strong>keadm</strong> can be built successfully on the device;</li><li>whether the edge node can join <strong>CloudCore</strong> successfully;</li><li>whether a basic containerized workload can finally run on the edge side.</li></ul><hr><h2 class="anchor anchorWithStickyNavbar_LWe7" id="test-environment">Test environment<a href="#test-environment" class="hash-link" aria-label="Direct link to Test environment" title="Direct link to Test environment">​</a></h2><h3 class="anchor anchorWithStickyNavbar_LWe7" id="hardware">Hardware<a href="#hardware" class="hash-link" aria-label="Direct link to Hardware" title="Direct link to Hardware">​</a></h3><ul><li><strong>Board</strong>: VisionFive2</li><li><strong>CPU Architecture</strong>: RISC-V 64-bit</li><li><strong>SoC</strong>: JH7110</li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="operating-system">Operating system<a href="#operating-system" class="hash-link" aria-label="Direct link to Operating system" title="Direct link to Operating system">​</a></h3><ul><li><strong>OS</strong>: Ubuntu Server 24.04.4</li><li><strong>Architecture</strong>: riscv64</li><li><strong>Image</strong>:</li></ul><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">https://cdimage.ubuntu.com/releases/24.04.4/release/ubuntu-24.04.4-preinstalled-server-riscv64+jh7110.img.xz</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS">
31<path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p><img loading="lazy" alt="Ubuntu image on VisionFive2" src="/assets/images/visionfive2-ubuntu-image-531270ff45b0c21d3400bbab8f2ab23a.png" width="422" height="435" class="img_ev3q"></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="software-versions">Software versions<a href="#software-versions" class="hash-link" aria-label="Direct link to Software versions" title="Direct link to Software versions">​</a></h3><ul><li><strong>containerd</strong>: v2.2.2</li><li><strong>runc</strong>: installed via apt</li><li><strong>crictl</strong>: v1.35.0</li><li><strong>CNI plugins</strong>: v1.9.1</li><li><strong>nerdctl</strong>: v2.2.2</li><li><strong>buildkit</strong>: v0.28.1</li><li><strong>Go</strong>: v1.22.4</li><li><strong>KubeEdge</strong>: v1.21.0</li></ul><hr><h2 class="anchor anchorWithStickyNavbar_LWe7" id="what-was-validated">What was validated<a href="#what-was-validated" class="hash-link" aria-label="Direct link to What was validated" title="Direct link to What was validated">​</a></h2><p>This round of work was intentionally scoped as a <strong>basic capability validation</strong>, not a full production-readiness assessment.</p><p>The validation covered:</p><ul><li>base OS and dependency preparation;</li><li>container runtime setup;</li><li>KubeEdge core component build;</li><li>edge node join;</li><li>basic application deployment.</li></ul><p>The following items are <strong>not fully covered yet</strong>:</p><ul><li>multiple workload types and replicas;</li><li>Service, DNS, and deeper CNI/networking verification;</li><li>disconnect/reconnect and fault recovery scenarios;</li><li>long-duration stability evaluation;</li><li>compatibility across more RISC-V boards or distributions.</li></ul><hr><h2 class="anchor anchorWithStickyNavbar_LWe7" id="step-1-preparing-the-container-runtime-environment">Step 1: Preparing the container runtime environment<a href="#step-1-preparing-the-container-runtime-environment" class="hash-link" aria-label="Direct link to Step 1: Preparing the container runtime environment" title="Direct link to Step 1: Preparing the container runtime environment">​</a></h2><p>Before bringing up KubeEdge, the first task was to prepare the edge-side runtime stack on VisionFive2. This included installing and configuring <strong>runc, containerd, crictl, CNI plugins, nerdctl, and buildkit</strong>.</p><p>A few adjustments were also needed during this step, especially around <strong>containerd cgroup configuration</strong> and the <strong>pause image</strong> used by the runtime.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="install-runc-and-containerd">Install runc and containerd<a href="#install-runc-and-containerd" class="hash-link" aria-label="Direct link to Install runc and containerd" title="Direct link to Install runc and containerd">​</a></h3><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">sudo</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">apt</span><span class="token plain"> update </span><span class="token operator" style="color:#393A34">&amp;&amp;</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">sudo</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">apt</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">install</span><span class="token plain"> -y runc</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">
31wget</span><span class="token plain"> https://github.com/containerd/containerd/releases/download/v2.2.2/containerd-2.2.2-linux-riscv64.tar.gz</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">sudo</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">tar</span><span class="token plain"> Cxzvf /usr/local containerd-2.2.2-linux-riscv64.tar.gz</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">sudo</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">curl</span><span class="token plain"> -L https://raw.githubusercontent.com/containerd/containerd/v2.2.2/containerd.service -o /etc/systemd/system/containerd.service</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">sudo</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">mkdir</span><span class="token plain"> -p /etc/containerd</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">containerd config default </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">sudo</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">tee</span><span class="token plain"> /etc/containerd/config.toml</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">sudo</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">sed</span><span class="token plain"> -i </span><span class="token string" style="color:#e3116c">&#x27;s/SystemdCgroup = false/SystemdCgroup = true/&#x27;</span><span class="token plain"> /etc/containerd/config.toml</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">sudo</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">sed</span><span class="token plain"> -i </span><span class="token string" style="color:#e3116c">&#x27;s#sandbox_image = &quot;.*&quot;#sandbox_image = &quot;registry.k8s.io/pause:3.9&quot;#&#x27;</span><span class="token plain"> /etc/containerd/config.toml</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">sudo</span><span class="token plain"> systemctl daemon-reload</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">sudo</span><span class="token plain"> systemctl </span><span class="token builtin class-name">enable</span><span class="token plain"> --now containerd</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h3 class="anchor anchorWithStickyNavbar_LWe7" id="install-crictl">
31Install crictl<a href="#install-crictl" class="hash-link" aria-label="Direct link to Install crictl" title="Direct link to Install crictl">​</a></h3><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">wget</span><span class="token plain"> https://github.com/kubernetes-sigs/cri-tools/releases/download/v1.35.0/crictl-v1.35.0-linux-riscv64.tar.gz</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">sudo</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">tar</span><span class="token plain"> xzvf crictl-v1.35.0-linux-riscv64.tar.gz -C /usr/local/bin</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">sudo</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">tee</span><span class="token plain"> /etc/crictl.yaml </span><span class="token operator" style="color:#393A34">&lt;&lt;</span><span class="token string" style="color:#e3116c">EOF</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">runtime-endpoint: unix:///run/containerd/containerd.sock</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">image-endpoint: unix:///run/containerd/containerd.sock</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">timeout: 10</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">debug: false</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">EOF</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h3 class="anchor anchorWithStickyNavbar_LWe7" id="install-cni-plugins">Install CNI plugins<a href="#install-cni-plugins" class="hash-link" aria-label="Direct link to Install CNI plugins" title="Direct link to Install CNI plugins">​</a></h3><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">wget</span><span class="token plain"> https://github.com/containernetworking/plugins/releases/download/v1.9.1/cni-plugins-linux-riscv64-v1.9.1.tgz</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">sudo</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">mkdir</span><span class="token plain"> -p /opt/cni/bin</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">sudo</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">tar</span><span class="token plain"> Cxzvf /opt/cni/bin cni-plugins-linux-riscv64-v1.9.1.tgz</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">sudo</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">mkdir</span><span class="token plain"> -p /etc/cni/net.d</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">sudo</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">chmod</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">755</span><span class="token plain"> /etc/cni /etc/cni/net.d</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">sudo</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">tee</span><span class="token plain"> /etc/cni/net.d/87-loopback.conf </span><span class="token operator" style="color:#393A34">&lt;&lt;</span><span class="token string" style="color:#e3116c">EOF</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">{</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">    &quot;cniVersion&quot;: &quot;0.3.1&quot;,</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">    &quot;name&quot;: &quot;lo&quot;,</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">    &quot;type&quot;: &quot;loopback&quot;</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">}</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">EOF</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N">
31<path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h3 class="anchor anchorWithStickyNavbar_LWe7" id="install-nerdctl-and-buildkit">Install nerdctl and buildkit<a href="#install-nerdctl-and-buildkit" class="hash-link" aria-label="Direct link to Install nerdctl and buildkit" title="Direct link to Install nerdctl and buildkit">​</a></h3><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">wget</span><span class="token plain"> https://github.com/containerd/nerdctl/releases/download/v2.2.2/nerdctl-2.2.2-linux-riscv64.tar.gz</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">sudo</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">tar</span><span class="token plain"> Cxzvvf /usr/local/bin nerdctl-2.2.2-linux-riscv64.tar.gz</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">wget</span><span class="token plain"> https://github.com/moby/buildkit/releases/download/v0.28.1/buildkit-v0.28.1.linux-riscv64.tar.gz</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">sudo</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">tar</span><span class="token plain"> Cxzvvf /usr/local buildkit-v0.28.1.linux-riscv64.tar.gz</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">sudo</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">tee</span><span class="token plain"> /etc/systemd/system/buildkitd.service </span><span class="token operator" style="color:#393A34">&lt;&lt;</span><span class="token string" style="color:#e3116c">EOF</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">[Unit]</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">Description=BuildKit Daemon (containerd worker)</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">Documentation=https://github.com/moby/buildkit</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">After=containerd.service</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">Requires=containerd.service</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="display:inline-block;color:#e3116c"></span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">[Service]</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">Type=notify</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">ExecStart=/usr/local/bin/buildkitd --oci-worker=false --containerd-worker=true --containerd-worker-namespace=k8s.io --containerd-worker-addr=/run/containerd/containerd.sock</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">Restart=always</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">User=root</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">Group=root</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">LimitNOFILE=65535</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="display:inline-block;color:#e3116c"></span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">[Install]</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">WantedBy=multi-user.target</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">EOF</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">sudo</span><span class="token plain"> systemctl daemon-reload</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">sudo</span><span class="token plain"> systemctl </span><span class="token builtin class-name">enable</span><span class="token plain"> --now buildkitd</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N">
31<path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>At this point, the basic runtime environment required by the edge node was in place.</p><hr><h2 class="anchor anchorWithStickyNavbar_LWe7" id="step-2-building-a-risc-v-compatible-pause-image">Step 2: Building a RISC-V-compatible pause image<a href="#step-2-building-a-risc-v-compatible-pause-image" class="hash-link" aria-label="Direct link to Step 2: Building a RISC-V-compatible pause image" title="Direct link to Step 2: Building a RISC-V-compatible pause image">​</a></h2><p>One practical issue during setup was the <strong>pause image</strong>.</p><p>To make the runtime path more controllable on the current environment, I manually built a <strong>RISC-V-compatible <code>pause:3.9</code> image</strong> and loaded it into the local containerd namespace used by KubeEdge.</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">mkdir</span><span class="token plain"> -p pause-build/bin</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token builtin class-name">cd</span><span class="token plain"> pause-build</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">curl</span><span class="token plain"> -LO https://raw.githubusercontent.com/kubernetes/kubernetes/v1.28.0/build/pause/linux/pause.c</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">sudo</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">apt</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">install</span><span class="token plain"> -y gcc</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">gcc -Os -Wall -Wextra -static -o bin/pause-riscv64 pause.c</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">tee</span><span class="token plain"> Dockerfile </span><span class="token operator" style="color:#393A34">&lt;&lt;</span><span class="token string" style="color:#e3116c">EOF</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">FROM scratch</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">ARG ARCH=riscv64</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">ADD bin/pause-</span><span class="token string variable" style="color:#36acaa">${ARCH}</span><span class="token string" style="color:#e3116c"> /pause</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">ENTRYPOINT [&quot;/pause&quot;]</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">EOF</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">sudo</span><span class="token plain"> nerdctl -n k8s.io build -t registry.k8s.io/pause:3.9 </span><span class="token builtin class-name">.</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N">
31<path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>This step helped ensure that later workload creation would not be blocked by image compatibility issues.</p><hr><h2 class="anchor anchorWithStickyNavbar_LWe7" id="step-3-building-kubeedge-components-on-riscv64">Step 3: Building KubeEdge components on riscv64<a href="#step-3-building-kubeedge-components-on-riscv64" class="hash-link" aria-label="Direct link to Step 3: Building KubeEdge components on riscv64" title="Direct link to Step 3: Building KubeEdge components on riscv64">​</a></h2><p>After preparing the runtime layer, the next key question was whether <strong>KubeEdge itself could be built successfully on the device</strong>.</p><p>For this validation, I focused on the two most relevant binaries for the edge-side path: <strong>edgecore</strong> and <strong>keadm</strong>.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="install-go">Install Go<a href="#install-go" class="hash-link" aria-label="Direct link to Install Go" title="Direct link to Install Go">​</a></h3><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">wget</span><span class="token plain"> https://mirrors.aliyun.com/golang/go1.22.4.linux-riscv64.tar.gz</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">sudo</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">tar</span><span class="token plain"> -C /usr/local -xzf go1.22.4.linux-riscv64.tar.gz</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token builtin class-name">echo</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&quot;export PATH=\</span><span class="token string environment constant" style="color:#36acaa">$PATH</span><span class="token string" style="color:#e3116c">:/usr/local/go/bin&quot;</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">&gt;&gt;</span><span class="token plain"> ~/.bashrc</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token builtin class-name">source</span><span class="token plain"> ~/.bashrc</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">go version</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h3 class="anchor anchorWithStickyNavbar_LWe7" id="clone-source-and-build-edgecore--keadm">Clone source and build edgecore / keadm<a href="#clone-source-and-build-edgecore--keadm" class="hash-link" aria-label="Direct link to Clone source and build edgecore / keadm" title="Direct link to Clone source and build edgecore / keadm">​</a></h3><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">git</span><span class="token plain"> clone https://github.com/kubeedge/kubeedge.git</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token builtin class-name">cd</span><span class="token plain"> kubeedge</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">git</span><span class="token plain"> checkout v1.21.0</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token assign-left variable" style="color:#36acaa">GIT_VERSION</span><span class="token operator" style="color:#393A34">=</span><span class="token variable" style="color:#36acaa">$(</span><span class="token variable function" style="color:#d73a49">git</span><span class="token variable" style="color:#36acaa"> describe --tags --abbrev</span><span class="token variable operator" style="color:#393A34">=</span><span class="token variable number" style="color:#36acaa">0</span><span class="token variable" style="color:#36acaa"> </span><span class="token variable operator" style="color:#393A34">
31||</span><span class="token variable" style="color:#36acaa"> </span><span class="token variable builtin class-name" style="color:#36acaa">echo</span><span class="token variable" style="color:#36acaa"> </span><span class="token variable string" style="color:#e3116c">&quot;v0.0.0-master&quot;</span><span class="token variable" style="color:#36acaa">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token assign-left variable" style="color:#36acaa">GIT_COMMIT</span><span class="token operator" style="color:#393A34">=</span><span class="token variable" style="color:#36acaa">$(</span><span class="token variable function" style="color:#d73a49">git</span><span class="token variable" style="color:#36acaa"> rev-parse --short HEAD</span><span class="token variable" style="color:#36acaa">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token assign-left variable" style="color:#36acaa">GIT_TREE_STATE</span><span class="token operator" style="color:#393A34">=</span><span class="token variable" style="color:#36acaa">$(</span><span class="token variable keyword" style="color:#00009f">if</span><span class="token variable" style="color:#36acaa"> </span><span class="token variable function" style="color:#d73a49">git</span><span class="token variable" style="color:#36acaa"> status --porcelain </span><span class="token variable operator" style="color:#393A34">|</span><span class="token variable" style="color:#36acaa"> </span><span class="token variable function" style="color:#d73a49">grep</span><span class="token variable" style="color:#36acaa"> -q </span><span class="token variable builtin class-name" style="color:#36acaa">
31.</span><span class="token variable punctuation" style="color:#393A34">;</span><span class="token variable" style="color:#36acaa"> </span><span class="token variable keyword" style="color:#00009f">then</span><span class="token variable" style="color:#36acaa"> </span><span class="token variable builtin class-name" style="color:#36acaa">echo</span><span class="token variable" style="color:#36acaa"> </span><span class="token variable string" style="color:#e3116c">&quot;dirty&quot;</span><span class="token variable punctuation" style="color:#393A34">;</span><span class="token variable" style="color:#36acaa"> </span><span class="token variable keyword" style="color:#00009f">else</span><span class="token variable" style="color:#36acaa"> </span><span class="token variable builtin class-name" style="color:#36acaa">echo</span><span class="token variable" style="color:#36acaa"> </span><span class="token variable string" style="color:#e3116c">&quot;clean&quot;</span><span class="token variable punctuation" style="color:#393A34">;</span><span class="token variable" style="color:#36acaa"> </span><span class="token variable keyword" style="color:#00009f">fi</span><span class="token variable" style="color:#36acaa">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token assign-left variable" style="color:#36acaa">BUILD_DATE</span><span class="token operator" style="color:#393A34">=</span><span class="token variable" style="color:#36acaa">$(</span><span class="token variable function" style="color:#d73a49">date</span><span class="token variable" style="color:#36acaa"> -u +</span><span class="token variable string" style="color:#e3116c">&#x27;%Y-%m-%dT%H:%M:%SZ&#x27;</span><span class="token variable" style="color:#36acaa">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token assign-left variable" style="color:#36acaa">LDFLAGS</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">&quot;-X github.com/kubeedge/kubeedge/pkg/version.gitVersion=</span><span class="token string variable" style="color:#36acaa">${GIT_VERSION}</span><span class="token string" style="color:#e3116c"> \</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">-X github.com/kubeedge/kubeedge/pkg/version.gitCommit=</span><span class="token string variable" style="color:#36acaa">${GIT_COMMIT}</span><span class="token string" style="color:#e3116c"> \</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">-X github.com/kubeedge/kubeedge/pkg/version.gitTreeState=</span><span class="token string variable" style="color:#36acaa">${GIT_TREE_STATE}</span><span class="token string" style="color:#e3116c"> \</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">-X github.com/kubeedge/kubeedge/pkg/version.buildDate=</span><span class="token string variable" style="color:#36acaa">${BUILD_DATE}</span><span class="token string" style="color:#e3116c"> \</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">-s -w&quot;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token assign-left variable" style="color:#36acaa">GOARCH</span><span class="token operator" style="color:#393A34">=</span><span class="token plain">riscv64 go build -ldflags </span><span class="token string" style="color:#e3116c">&quot;</span><span class="token string variable" style="color:#36acaa">${LDFLAGS}</span><span class="token string" style="color:#e3116c">&quot;</span><span class="token plain"> -o edgecore-riscv64 ./edge/cmd/edgecore</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token assign-left variable" style="color:#36acaa">GOARCH</span><span class="token operator" style="color:#393A34">=</span><span class="token plain">riscv64 go build -ldflags </span><span class="token string" style="color:#e3116c">&quot;</span><span class="token string variable" style="color:#36acaa">${LDFLAGS}</span><span class="token string" style="color:#e3116c">&quot;</span><span class="token plain"> -o keadm-riscv64 ./keadm/cmd/keadm/</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">sudo</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">cp</span><span class="token plain"> keadm-riscv64 /usr/local/bin/keadm</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N">
31<path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>The build completed successfully, which is an important result on its own: <strong>KubeEdge core components can at least be built natively on this RISC-V platform under the tested version path</strong>.</p><hr><h2 class="anchor anchorWithStickyNavbar_LWe7" id="step-4-packaging-the-installation-artifact">Step 4: Packaging the installation artifact<a href="#step-4-packaging-the-installation-artifact" class="hash-link" aria-label="Direct link to Step 4: Packaging the installation artifact" title="Direct link to Step 4: Packaging the installation artifact">​</a></h2><p>To make follow-up deployment and reproduction easier, I also packaged the built <code>edgecore</code> binary into an installation image.</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">mkdir</span><span class="token plain"> -p install/usr/local/bin/</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">cp</span><span class="token plain"> edgecore-riscv64 install/usr/local/bin/edgecore</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token builtin class-name">cd</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">install</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">tar</span><span class="token plain"> zcvf kubeedge-v1.21.0-linux-riscv64.tar.gz usr/</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">tee</span><span class="token plain"> Dockerfile </span><span class="token operator" style="color:#393A34">&lt;&lt;</span><span class="token string" style="color:#e3116c">EOF</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">FROM busybox:stable</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">ADD kubeedge-v1.21.0-linux-riscv64.tar.gz /</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">CMD [&quot;sh&quot;]</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">EOF</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">sudo</span><span class="token plain"> nerdctl -n k8s.io build -t docker.io/kubeedge/installation-package:v1.21.0 </span><span class="token builtin class-name">.</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS">
31<path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>This is not the final goal of the validation itself, but it is useful for later migration, distribution, and repeatability.</p><hr><h2 class="anchor anchorWithStickyNavbar_LWe7" id="step-5-joining-the-edge-node-to-cloudcore">Step 5: Joining the edge node to CloudCore<a href="#step-5-joining-the-edge-node-to-cloudcore" class="hash-link" aria-label="Direct link to Step 5: Joining the edge node to CloudCore" title="Direct link to Step 5: Joining the edge node to CloudCore">​</a></h2><p>Once dependencies and binaries were ready, I used <code>keadm join</code> to connect the VisionFive2 node to the cloud side.</p><p>This is the key step that determines whether the <strong>cloud-edge connection path</strong> can actually work on RISC-V.</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">sudo</span><span class="token plain"> keadm </span><span class="token function" style="color:#d73a49">join</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">--cgroupdriver</span><span class="token operator" style="color:#393A34">=</span><span class="token plain">systemd </span><span class="token punctuation" style="color:#393A34">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">--cloudcore-ipport</span><span class="token operator" style="color:#393A34">=</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token plain">CLOUDCORE_IP</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain">:30000 </span><span class="token punctuation" style="color:#393A34">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">--hub-protocol</span><span class="token operator" style="color:#393A34">=</span><span class="token plain">websocket </span><span class="token punctuation" style="color:#393A34">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">--certport</span><span class="token operator" style="color:#393A34">=</span><span class="token number" style="color:#36acaa">30002</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">--kubeedge-version</span><span class="token operator" style="color:#393A34">=</span><span class="token plain">v1.21.0 </span><span class="token punctuation" style="color:#393A34">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">--remote-runtime-endpoint</span><span class="token operator" style="color:#393A34">=</span><span class="token plain">unix:///run/containerd/containerd.sock </span><span class="token punctuation" style="color:#393A34">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">--edgenode-name</span><span class="token operator" style="color:#393A34">=</span><span class="token plain">vf2-2 </span><span class="token punctuation" style="color:#393A34">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">--set modules.edgeStream.server</span><span class="token operator" style="color:#393A34">=</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token plain">CLOUDCORE_IP</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain">:30004,modules.edgeStream.enable</span><span class="token operator" style="color:#393A34">=</span><span class="token plain">true,modules.metaManager.enable</span><span class="token operator" style="color:#393A34">=</span><span class="token plain">true,modules.metaManager.metaServer.enable</span><span class="token operator" style="color:#393A34">=</span><span class="token plain">true,modules.eventBus.enable</span><span class="token operator" style="color:#393A34">=</span><span class="token plain">false,modules.serviceBus.enable</span><span class="token operator" style="color:#393A34">=</span><span class="token plain">true,modules.edgeHub.websocket.server</span><span class="token operator" style="color:#393A34">=</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token plain">CLOUDCORE_IP</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain">:30000 </span><span class="token punctuation" style="color:#393A34">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">--token</span><span class="token operator" style="color:#393A34">=</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token plain">TOKEN</span><span class="token operator" style="color:#393A34">&gt;</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N">
31<path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p><img loading="lazy" alt="Node join result" src="data:image/png;base64,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" width="607" height="107" class="img_ev3q">
32<img loading="lazy" alt="Edge node status" src="/assets/images/edge-node-status-935a459efb9705b37ab7b8880200a991.png" width="1469" height="270" class="img_ev3q"></p><p>After execution, the edge node joined successfully and the node status was normal.</p><p>This means the main join path between the RISC-V edge node and CloudCore was successfully verified.</p><hr><h2 class="anchor anchorWithStickyNavbar_LWe7" id="step-6-running-a-basic-workload-on-the-edge-node">Step 6: Running a basic workload on the edge node<a href="#step-6-running-a-basic-workload-on-the-edge-node" class="hash-link" aria-label="Direct link to Step 6: Running a basic workload on the edge node" title="Direct link to Step 6: Running a basic workload on the edge node">​</a></h2><p>Joining the node is only part of the story. To complete the full loop, the environment still needs to prove that it can actually run a real workload.</p><p>For this, I deployed a simple <strong>Nginx</strong> application to the edge node.</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">tee</span><span class="token plain"> edgetest.yaml </span><span class="token operator" style="color:#393A34">&lt;&lt;</span><span class="token string" style="color:#e3116c">EOF</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">apiVersion: apps/v1</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">kind: Deployment</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">metadata:</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">  name: nginx-edge</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">spec:</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">  replicas: 1</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">  selector:</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">    matchLabels:</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">      app: nginx-edge</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">  template:</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">    metadata:</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">      labels:</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">        app: nginx-edge</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">    spec:</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">      nodeName: vf2-2</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">      hostNetwork: true</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">
32      automountServiceAccountToken: false</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">      containers:</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">      - name: nginx-edge</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">        image: nginx</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">        imagePullPolicy: IfNotPresent</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">        ports:</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">        - containerPort: 80</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">EOF</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">kubectl apply -f edgetest.yaml</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p><img loading="lazy" alt="Nginx deployment result" src="data:image/png;base64,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" width="980" height="60" class="img_ev3q">
33<img loading="lazy" alt="Nginx running on edge node" src="/assets/images/nginx-running-on-edge-c516768eeb5c8d1aa069c57cc897ae3d.png" width="606" height="443" class="img_ev3q"></p><p>The deployment was created successfully and the container ran on the edge side as expected.</p><p>At this point, the core validation loop had been closed:</p><ul><li>dependencies were prepared;</li><li>KubeEdge components were built;</li><li>the node joined CloudCore;</li><li>a basic workload ran successfully on the edge device.</li></ul><hr><h2 class="anchor anchorWithStickyNavbar_LWe7" id="what-this-validation-tells-us">What this validation tells us<a href="#what-this-validation-tells-us" class="hash-link" aria-label="Direct link to What this validation tells us" title="Direct link to What this validation tells us">​</a></h2><p>Based on the observed results, the following conclusions can be drawn for the current stage.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="1-edge-side-dependencies-can-be-installed-on-visionfive2">1. Edge-side dependencies can be installed on VisionFive2<a href="#1-edge-side-dependencies-can-be-installed-on-visionfive2" class="hash-l
33ink" aria-label="Direct link to 1. Edge-side dependencies can be installed on VisionFive2" title="Direct link to 1. Edge-side dependencies can be installed on VisionFive2">​</a></h3><p>The basic runtime stack — including <strong>containerd, runc, crictl, CNI plugins, nerdctl, and buildkit</strong> — can be installed and configured successfully on <strong>Ubuntu 24.04.4 riscv64</strong> running on VisionFive2.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="2-kubeedge-core-components-can-be-built-on-riscv64">2. KubeEdge core components can be built on riscv64<a href="#2-kubeedge-core-components-can-be-built-on-riscv64" class="hash-link" aria-label="Direct link to 2. KubeEdge core components can be built on riscv64" title="Direct link to 2. KubeEdge core components can be built on riscv64">​</a></h3><p>Both <strong>edgecore</strong> and <strong>keadm</strong> were successfully compiled on the tested RISC-V environment, showing that KubeEdge has a workable source-level build path on this platform.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="3-the-edge-node-can-join-cloudcore-successfully">3. The edge node can join CloudCore successfully<a href="#3-the-edge-node-can-join-cloudcore-successfully" class="hash-link" aria-label="Direct link to 3. The edge node can join CloudCore successfully" title="Direct link to 3. The edge node can join CloudCore successfully">​</a></h3><p>Using <code>keadm join</code>, the VisionFive2 node was able to join the cloud side and report normal status, which confirms that the <strong>basic cloud-edge access path is feasible on RISC-V</strong>.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="4-basic-workloads-can-run-on-the-edge-side">4. Basic workloads can run on the edge side<a href="#4-basic-workloads-can-run-on-the-edge-side" class="hash-link" aria-label="Direct link to 4. Basic workloads can run on the edge side" title="Direct link to 4. Basic workloads can run on the edge side">​</a></h3><p>The successful deployment of Nginx shows that this environment is not only able to build and connect, but also able to support <strong>basic containerized workloads</strong>.</p><hr><h2 class="anchor anchorWithStickyNavbar_LWe7" id="final-takeaway">Final takeaway<a href="#final-takeaway" class="hash-link" aria-label="Direct link to Final takeaway" title="Direct link to Final takeaway">​</a></h2><p>From this round of validation, I would summarize the current state in three words:</p><ul><li><strong>buildable</strong>;</li><li><strong>joinable</strong>;</li><li><strong>runnable</strong>.</li></ul><p>In other words, <strong>KubeEdge already demonstrates basic usability on VisionFive2 under the tested RISC-V environment</strong>.</p><p>That does not mean the platform is fully validated for all edge scenarios yet. But it does mean that the most important first step has been crossed: <strong>the core deployment path works</strong>.</p><p>For anyone interested in bringing KubeEdge to RISC-V devices, this should be a useful starting point.</p><hr><h2 class="anchor anchorWithStickyNavbar_LWe7" id="current-limitations-and-next-steps">Current limitations and next steps<a href="#current-limitations-and-next-steps" class="hash-link" aria-label="Direct link to Current limitations and next steps" title="Direct link to Current limitations and next steps">​</a></h2><p>It is also important to keep the conclusion within the right boundary.</p><p>This validation proves <strong>basic feasibility</strong>, not <strong>full production readiness</strong>.</p><p>Several areas still need follow-up work:</p><ul><li>broader workload compatibility testing;</li><li>systematic verification of networking features such as Service, DNS, and deeper CNI behavior;</li><li>disconnection, reconnection, and recovery testing;</li><li>long-duration stability observation on real hardware;</li><li>validation across more RISC-V boards and software combinations.</li></ul><p>These will be the more meaningful next steps if we want to move from “it works” to “it is reliable enough for real-world edge scenarios.”</p><hr><h2 class="anchor anchorWithStickyNavbar_LWe7" id="conclusion">
33Conclusion<a href="#conclusion" class="hash-link" aria-label="Direct link to Conclusion" title="Direct link to Conclusion">​</a></h2><p>This validation on <strong>VisionFive2</strong> shows that <strong>KubeEdge v1.21.0</strong> can complete the basic end-to-end deployment path on <strong>Ubuntu 24.04.4 riscv64</strong>:</p><ul><li>the runtime environment can be prepared;</li><li>core components can be built;</li><li>the edge node can join the cloud side;</li><li>a basic workload can run successfully.</li></ul><p>For the RISC-V ecosystem, this is a small but concrete step forward.</p><p>And for KubeEdge on emerging architectures, it provides a practical reference point for deeper verification work ahead.</p></div><footer class="row docusaurus-mt-lg"><div class="col"><b>Tags:</b><ul class="tags_jXut padding--none margin-left--sm"><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/kube-edge">KubeEdge</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/risc-v">RISC-V</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/vision-five-2">VisionFive2</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/edge-computing">edge computing</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/validation">validation</a></li></ul></div></footer></article><article class="margin-bottom--xl" itemprop="blogPost" itemscope="" itemtype="http://schema.org/BlogPosting"><header><h2 class="title_f1Hy" itemprop="headline"><a itemprop="url" href="/blog/cncf-lfx-EAI-benchmarking/EAI-meets-KubeEdge-Ianvs">Embodied Intelligence meets KubeEdge-Ianvs: Industrial Assembly Benchmarking</a></h2><div class="container_mt6G margin-vert--md"><time datetime="2026-04-12T00:00:00.000Z" itemprop="datePublished">April 12, 2026</time> · <!-- -->13 min read</div><div class="margin-top--md margin-bottom--sm row"><div class="col col--6 authorCol_Hf19"><div class="avatar margin-bottom--sm"><div class="avatar__intro" itemprop="author" itemscope="" itemtype="https://schema.org/Person"><div class="avatar__name"><span itemprop="name">Ronak Raj</span></div></div></div></div></div></header><div class="markdown" itemprop="articleBody"><p>This blog introduces how to enable comprehensive embodied intelligence benchmarking for industrial manufacturing using the KubeEdge-Ianvs framework. <strong>You will see</strong>:
34<img loading="lazy" alt="deformable-component-manipulation" src="/assets/images/deformable-component-manipulation-7cac7aa0001a0946b8d32397e8af025e.jpg" title="Robotic manipulation of deformable parts" width="1231" height="704" class="img_ev3q"></p><hr><h3 class="anchor anchorWithStickyNavbar_LWe7" id="video-explanation">Video Explanation<a href="#video-explanation" class="hash-link" aria-label="Direct link to Video Explanation" title="Direct link to Video Explanation">​</a></h3><p><a href="https://youtu.be/LviadKqa3og?si=hA8PEwrRLSXtmtVw" target="_blank" rel="noopener noreferrer">Industrial Embodied Intelligence Dataset(CNCF&#x27;LFX 25@kubeedge8739 )Project Explanation</a></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="yolo-detection-predictions">YOLO Detection Predictions<a href="#yolo-detection-predictions" class="hash-link" aria-label="Direct link to YOLO Detection Predictions" title="Direct link to YOLO Detection Predictions">​</a></h3><p>Real-world inference results on test images showing deformable component detection:</p><table><thead><tr><th></th><th></th></tr></thead><tbody><tr><td><img loading="lazy" alt="YOLO Predictions - Sample 3" src="/assets/images/yolo_predictions3-bfa085ba706c089a4fa962d9ed12726b.jpg" width="635" height="740" class="img_ev3q"></td><td><img loading="lazy" alt="YOLO Predictions - Sample 2" src="/assets/images/yolo_predictions2-71a6bcbfa410f5ff425fa36ba0b9c513.jpg" width="760" height="741" class="img_ev3q"></td></tr></tbody></table><h3 class="anchor anchorWithStickyNavbar_LWe7" id="model-performance-analysis">Model Performance Analysis<a href="#model-performance-analysis" class="hash-link" aria-label="Direct link to Model Performance Analysis" title="Direct link to Model Performance Analysis">​</a></h3><table><thead><tr><th>
34</th><th></th></tr></thead><tbody><tr><td><img loading="lazy" alt="F1-Confidence Curve" src="/assets/images/F1-confidence_curve-11d5342d6fb1778ca34a84f0b7181e46.jpg" width="853" height="563" class="img_ev3q"></td><td><img loading="lazy" alt="Precision-Confidence Curve" src="/assets/images/precision-confidence_curve-db34701d337d83e1b1ad324131209921.jpg" width="979" height="653" class="img_ev3q"></td></tr><tr><td><em>Optimal F1-score achieved at confidence threshold of ~0.5</em></td><td><em>High precision maintained across various confidence levels</em></td></tr></tbody></table><h3 class="anchor anchorWithStickyNavbar_LWe7" id="dataset-analysis">Dataset Analysis<a href="#dataset-analysis" class="hash-link" aria-label="Direct link to Dataset Analysis" title="Direct link to Dataset Analysis">​</a></h3><table><thead><tr><th></th><th></th></tr></thead><tbody><tr><td><img loading="lazy" alt="Labels Distribution" src="/assets/images/labels-767d7626e4a46daffb5e04198946b4c5.jpg" width="731" height="735" class="img_ev3q"></td><td><img loading="lazy" alt="Label Correlations" src="/assets/images/labels_correlate-f8ba9ef87a3273873a11d761c26a08a1.jpg" width="971" height="733" class="img_ev3q"></td></tr><tr><td><em>Distribution of component classes across the training dataset</em></td><td><em>Spatial correlation analysis between different component types</em></td></tr></tbody></table><h2 class="anchor anchorWithStickyNavbar_LWe7" id="why-embodied-intelligence-benchmarking-for-industrial-manufacturing">Why Embodied Intelligence Benchmarking for Industrial Manufacturing?<a href="#why-embodied-intelligence-benchmarking-for-industrial-manufacturing" class="hash-link" aria-label="Direct link to Why Embodied Intelligence Benchmarking for Industrial Manufacturing?" title="Direct link to Why Embodied Intelligence Benchmarking for Industrial Manufacturing?">​</a></h2><p>
34The manufacturing industry is experiencing a profound transformation driven by intelligent robotics, adaptive production lines, and precision assembly systems. Modern industrial environments demand more than basic task execution,they require multimodal perception, force-controlled manipulation, and real-time quality verification integrated into cohesive workflows.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="a-first-of-its-kind-benchmark-addressing-critical-gaps">A First-of-Its-Kind Benchmark Addressing Critical Gaps<a href="#a-first-of-its-kind-benchmark-addressing-critical-gaps" class="hash-link" aria-label="Direct link to A First-of-Its-Kind Benchmark Addressing Critical Gaps" title="Direct link to A First-of-Its-Kind Benchmark Addressing Critical Gaps">​</a></h3><p>Despite growing interest in Embodied Intelligence for manufacturing, the research community faces a critical shortage of benchmarks that evaluate real-world industrial assembly scenarios. Existing work falls short in several key areas:</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="current-limitations-in-the-field">Current Limitations in the Field:<a href="#current-limitations-in-the-field" class="hash-link" aria-label="Direct link to Current Limitations in the Field:" title="Direct link to Current Limitations in the Field:">​</a></h4><ul><li><strong>Isolated Task Focus</strong>: Popular benchmarks like YCB and OCRTOC evaluate individual capabilities (grasping, object detection) but don&#x27;t assess how these integrate in multi-stage industrial workflows</li><li><strong>Missing Deformable Component Coverage</strong>: While NIST has developed benchmarks for rigid components and simple deformable objects (cables, belts), existing datasets don&#x27;t support multiple representations of deformable objects with different self-occlusions typical in manufacturing <a href="https://www.ncbi.nlm.nih.gov" target="_blank" rel="noopener noreferrer">PubMed Central</a></li><li><strong>No Electronic Assembly Benchmarks</strong>: Despite datasets for PCB defect detection (BoardVision, FICS-PCB) and component recognition (ElectroCom61), none evaluate robotic assembly of electronic components, particularly those requiring precision force control</li><li><strong>Academic-Industry Gap</strong>: A large gap exists between embodied AI in academic research and what manufacturers can feasibly implement <a href="https://www.nist.gov/" target="_blank" rel="noopener noreferrer">National Institute of Standards and Technology</a>, with limited benchmarks that mirror real production challenges</li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="what-makes-this-project-unique">What Makes This Project Unique:<a href="#what-makes-this-project-unique" class="hash-link" aria-label="Direct link to What Makes This Project Unique:" title="Direct link to What Makes This Project Unique:">​</a></h4><p>This work represents the <strong>first comprehensive benchmark</strong> for robotic assembly of deformable electronic components,a scenario ubiquitous in modern electronics manufacturing yet completely absent from existing research infrastructure. Our contributions are unprecedented in scope:</p><ol><li><p><strong>First Multimodal Industrial Assembly Dataset</strong>: To our knowledge, no publicly available dataset combines RGB-D vision, force/torque sensor data, and robot trajectories for electronic component assembly.</p></li><li><p><strong>First Deformable Electronics Benchmark</strong>: Existing deformable object benchmarks focus on textiles (GarmentLab), food items, or abstract shapes. This is the first benchmark specifically designed for deformable electronic components like flexible circuits and memory modules,components that require both precision alignment and compliance control.</p></li><li><p><strong>First End-to-End Assembly Workflow Evaluation</strong>: Unlike fragmented benchmarks that test perception OR manipulation OR verification separately, we evaluate complete assembly pipelines. This mirrors how industrial systems actually operate, where failure in any stage c
34ascades to overall task failure.</p></li><li><p><strong>Practical Manufacturing Relevance</strong>: Our five assembly scenarios (RAM modules, cooling mounts, CPU sockets, flexible circuits, security chips) represent actual production challenges in electronics manufacturing,an industry segment worth over $2 trillion globally that currently relies heavily on manual assembly due to lack of validated automation solutions.</p></li></ol><h3 class="anchor anchorWithStickyNavbar_LWe7" id="addressing-real-industrial-needs">Addressing Real Industrial Needs<a href="#addressing-real-industrial-needs" class="hash-link" aria-label="Direct link to Addressing Real Industrial Needs" title="Direct link to Addressing Real Industrial Needs">​</a></h3><p>The electronics manufacturing sector faces mounting pressure to automate assembly operations involving:</p><ul><li>Sub-millimeter positioning tolerances (CPU socket assembly: 55% accuracy in our baseline)</li><li>Deformable components requiring force adaptation (flexible circuits: 70% accuracy baseline)</li><li>Quality verification at component scale (current detection: 91.19% mAP50)</li></ul><p>Manufacturers need streamlined ways of assessing the productive impact of AI systems through AI-specific productivity metrics and test methods <a href="https://www.nist.gov/" target="_blank" rel="noopener noreferrer">National Institute of Standards and Technology</a>. This benchmark directly addresses that need by providing:</p><ul><li><strong>Realistic Industrial Scenarios</strong>: Deformable component assembly representing real manufacturing challenges</li><li><strong>Comprehensive Multimodal Dataset</strong>: RGB-D images, force/torque sensor data, and robot trajectories,the complete sensor suite used in production environments</li><li><strong>End-to-End Evaluation</strong>: Metrics that assess entire workflows, not just individual subtasks, revealing integration challenges invisible to component-level testing</li><li><strong>Reproducible Infrastructure</strong>: Standardized test environments and baseline algorithms that enable fair comparison across different robotic systems</li></ul><p>By combining distributed AI benchmarking framework KubeEdge-Ianvs with this domain-specific industrial dataset, we enable objective comparison of robotic systems on tasks that mirror real-world manufacturing complexity,bridging the gap between academic research and industrial deployment while accelerating the development of reliable autonomous assembly systems.</p><hr><h3 class="anchor anchorWithStickyNavbar_LWe7" id="contents">Contents:<a href="#contents" class="hash-link" aria-label="Direct link to Contents:" title="Direct link to Contents:">​</a></h3><ul><li><a href="#prerequisites">Prerequisites</a></li><li><a href="#dataset-setup">Dataset Setup</a></li><li><a href="#benchmark-configuration">Benchmark Configuration</a></li><li><a href="#algorithm-integration">Algorithm Integration</a></li><li><a href="#analyze-results">Analyze Results</a></li><li><a href="#ianvs-installation">Ianvs Installation</a></li><li><a href="#run-benchmarking">Run Benchmarking</a></li></ul><hr><h2 class="anchor anchorWithStickyNavbar_LWe7" id="prerequisites">Prerequisites<a href="#prerequisites" class="hash-link" aria-label="Direct link to Prerequisites" title="Direct link to Prerequisites">​</a></h2><h3 class="anchor anchorWithStickyNavbar_LWe7" id="system-requirements">System Requirements:<a href="#system-requirements" class="hash-link" aria-label="Direct link to System Requirements:" title="Direct link to System Requirements:">​</a></h3><ul><li>One machine (laptop or VM) with 4+ CPUs</li><li>8GB+ RAM (depends on simulation complexity)</li><li>20GB+ free disk space</li><li>Internet connection for downloads</li><li>Python 3.8+ installed (Python 3.9 recommended)</li><li>CUDA-capable GPU recommended for YOLOv8 (optional but accelerates training)</li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="knowledge-requirements">Knowledge Requirements:<a href="#knowledge-requirements" class="hash-link" aria-label="Direct link to Knowledge Requirements:" title="Direct link to Knowledge Requirements:">​</a></h3><ul><li>Basic understanding of Python and machine learning</li><li>Familiarity with robotic manipulation concepts</li><li>Understanding of computer vision fundamentals</li></ul><blockquote><p><strong>Note</strong>: This benchmark has been tested on Linux platforms. Windows users may need to adapt commands accordingly.</p></blockquote><hr><h2 class="anchor anchorWithStickyNavbar_LWe7" id="dataset-setup">
34Dataset Setup<a href="#dataset-setup" class="hash-link" aria-label="Direct link to Dataset Setup" title="Direct link to Dataset Setup">​</a></h2><p>The <strong>Deformable Component Assembly Dataset</strong> is a comprehensive multimodal dataset specifically designed for industrial assembly benchmarking. It contains:</p><ul><li>RGB and depth images from simulated PyBullet cameras</li><li>Force/torque sensor data from robot wrist measurements</li><li>YOLO-format annotations for object detection training</li><li>Assembly success/failure labels for end-to-end evaluation</li><li>Robot trajectory logs capturing full motion sequences</li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="download-the-dataset">Download the Dataset<a href="#download-the-dataset" class="hash-link" aria-label="Direct link to Download the Dataset" title="Direct link to Download the Dataset">​</a></h3><p>Access the dataset from Kaggle:</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token comment" style="color:#999988;font-style:italic"># Download from: https://www.kaggle.com/datasets/kubeedgeianvs/deformable-assembly-dataset</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">mkdir</span><span class="token plain"> -p /ianvs/datasets</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token builtin class-name">cd</span><span class="token plain"> /ianvs/datasets</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Transfer the downloaded <code>.zip</code> file to the datasets folder and extract:</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">unzip</span><span class="token plain"> deformable_assembly_dataset.zip</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h3 class="anchor anchorWithStickyNavbar_LWe7" id="dataset-structure">Dataset Structure<a href="#dataset-structure" class="hash-link" aria-label="Direct link to Dataset Structure" title="Direct link to Dataset Structure">​</a></h3><p>The dataset contains <strong>2,227 frames</strong> across <strong>5 episodes</strong>, each focusing on different component types:</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">deformable_assembly_dataset/</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">├── episodes/</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   ├── episode_001_ram/              # 451 frames - RAM module assembly</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   │   ├── images/</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   │   │   ├── rgb/                  # RGB camera frames</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   │   │   ├── depth/                # Depth maps</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   │   │   └── segmentation/         # Segmentation masks</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   │   ├── labels/                   # YOLO format annotations</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   │   ├── sensor_data/              # Force/torque logs</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   │   │   ├── force_torque_log.csv</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   │   │   └── robotic_arm_poses.csv</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   │   └── metadata/</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   ├── episode_002_cooling_mounts/   # 400 frames</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   ├── episode_003_cpu_slot/         # 400 frames</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   ├── episode_004_fcp/              # 400 frames - Flexible circuits</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">
34│   └── episode_005_chip_key/         # 577 frames</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">├── index/                            # Train/test splits</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   ├── train_index1.txt</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   ├── test_index1.txt</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">│   └── ...</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">└── dataset_info.json</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Each episode represents a distinct assembly challenge:</p><table><thead><tr><th>Episode</th><th>Component</th><th>Frames</th><th>Challenge</th></tr></thead><tbody><tr><td>1</td><td>RAM</td><td>451</td><td>Memory module alignment and insertion</td></tr><tr><td>2</td><td>Cooling Mounts</td><td>400</td><td>Thermal component placement</td></tr><tr><td>3</td><td>CPU Slot</td><td>400</td><td>Processor socket assembly</td></tr><tr><td>4</td><td>FCP</td><td>400</td><td>Deformable circuit handling</td></tr><tr><td>5</td><td>Chip Key</td><td>577</td><td>Security chip installation</td></tr></tbody></table><p><strong>Total Dataset Size</strong>: ~830 MB</p><hr><h2 class="anchor anchorWithStickyNavbar_LWe7" id="algorithm-integration">Algorithm Integration<a href="#algorithm-integration" class="hash-link" aria-label="Direct link to Algorithm Integration" title="Direct link to Algorithm Integration">​</a></h2><p>The benchmark implements a <strong>multi-stage single-task paradigm</strong> that orchestrates three sequential modules:</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="1-perception-module-perceptionpy">1. Perception Module (<code>perception.py</code>)<a href="#1-perception-module-perceptionpy" class="hash-link" aria-label="Direct link to 1-perception-module-perceptionpy" title="Direct link to 1-perception-module-perceptionpy">​</a></h3><p>Uses YOLOv8 for real-time component detection:</p><ul><li>Identifies component locations on the assembly panel</li><li>Provides bounding boxes with confidence scores</li><li>Extracts orientation information for grasping</li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="2-manipulation-module-manipulationpy">2. Manipulation Module (<code>manipulation.py</code>)<a href="#2-manipulation-module-manipulationpy" class="hash-link" aria-label="Direct link to 2-manipulation-module-manipulationpy" title="Direct link to 2-manipulation-module-manipulationpy">​</a></h3><p>Implements force-controlled assembly operations:</p><ul><li>Executes precise grasping based on detection results</li><li>Uses haptic feedback for delicate component handling</li><li>Adapts to deformation during flexible circuit placement</li><li>Monitors force/torque to prevent damage</li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="3-verification-module-perceptionpy">3. Verification Module (<code>perception.py</code>)<a href="#3-verification-module-perceptionpy" class="hash-link" aria-label="Direct link to 3-verification-module-perceptionpy" title="Direct link to 3-verification-module-perceptionpy">​</a></h3><p>CNN-based visual quality inspection:</p><ul><li>Captures final assembly state</li><li>Detects misalignments and defects</li><li>Generates pass/fail classifications</li></ul><p>The entire workflow is orchestrated by <code>naive_assembly_process.py</code>, which executes these stages sequentially for each component type.</p><hr><h2 class="anchor anchorWithStickyNavbar_LWe7" id="results">
34Results<a href="#results" class="hash-link" aria-label="Direct link to Results" title="Direct link to Results">​</a></h2><p>Results are available in the output directory (<code>/ianvs/industrialEI_workspace</code>) as defined in <code>benchmarkingjob.yaml</code>.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="comprehensive-performance-report">Comprehensive Performance Report<a href="#comprehensive-performance-report" class="hash-link" aria-label="Direct link to Comprehensive Performance Report" title="Direct link to Comprehensive Performance Report">​</a></h3><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">╔═══════════════════════════════════════════════════════════════════════════╗</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">║                    🎯 EVALUATION COMPLETE                                 ║</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">║                                                                           ║</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">║  ► Overall Accuracy Score: 6400                                          ║</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">║  ► Overall Accuracy Percentage: 64.00%                                   ║</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">║  ► Detection mAP50: 91.19%                                               ║</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">║  ► Assembly Success Rate: 83.33%                                         ║</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">║  ► Total Frames Processed: 150                                           ║</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">║  ► Successful Assemblies: 125                                            ║</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">║                                                                           ║</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">║  🏆 Final Combined Score: 0.7759 (77.59%)                                ║</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">╚═══════════════════════════════════════════════════════════════════════════╝</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h3 class="anchor anchorWithStickyNavbar_LWe7" id="per-component-performance-metrics">Per-Component Performance Metrics<a href="#per-component-performance-metrics" class="hash-link" aria-label="Direct link to Per-Component Performance Metrics" title="Direct link to Per-Component Performance Metrics">​</a></h3><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">┌───────────────┬────────┬──────┬───────┬───────┬───────┬───────┬────────┬───────┐</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">│ Component     │ Frames │ Imgs │ Prec% │ Rec%  │ mAP50 │ mAP95 │ Acc%   │ Succ% │</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">├───────────────┼────────┼──────┼───────┼───────┼───────┼───────┼────────┼───────┤</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">│ ram           │ 30     │ 136  │ 94.1  │ 73.5  │ 89.4  │ 62.5  │ 60.0   │ 83.3  │</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">│ cooling_mounts│ 30     │ 120  │ 99.6  │ 99.2  │ 99.5  │ 91.8  │ 65.0   │ 83.3  │</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">│ cpu_slot      │ 30     │ 150  │ 99.3  │ 80.0  │ 82.5  │ 72.4  │ 55.0   │ 83.3  │</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">│ fcp           │ 30     │ 150  │ 96.1  │ 81.7  │ 88.2  │ 75.9  │ 70.0   │ 83.3  │</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">│ chip_key      │ 30     │ 120  │ 99.6  │ 99.2  │ 99.5  │ 95.7  │ 70.0   │ 83.3  │</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">╞═══════════════╪════════╪══════╪═══════╪═══════╪═══════╪═══════╪════════╪═══════╡</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">║ OVERALL       ║ 150    ║ 676  ║ 97.7  ║ 85.9  ║ 91.2  ║ 78.8  ║ 64.0   ║ 83.3  ║</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">└───────────────┴────────┴──────┴───────┴───────┴───────┴───────┴────────┴───────┘</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N">
34<path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h4 class="anchor anchorWithStickyNavbar_LWe7" id="metric-definitions">Metric Definitions:<a href="#metric-definitions" class="hash-link" aria-label="Direct link to Metric Definitions:" title="Direct link to Metric Definitions:">​</a></h4><ul><li><strong>Frames</strong>: Number of test frames processed</li><li><strong>Images</strong>: Number of training images used</li><li><strong>Prec%</strong>: Detection precision (true positives / predicted positives)</li><li><strong>Rec%</strong>: Detection recall (true positives / actual positives)</li><li><strong>mAP50</strong>: Mean Average Precision at IoU threshold 0.50</li><li><strong>mAP95</strong>: Mean Average Precision at IoU 0.50:0.95 range</li><li><strong>Acc%</strong>: Assembly accuracy (weighted combination of position, orientation, deformation control, and force feedback)</li><li><strong>Succ%</strong>: Binary assembly success rate</li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="training-performance-analysis">Training Performance Analysis<a href="#training-performance-analysis" class="hash-link" aria-label="Direct link to Training Performance Analysis" title="Direct link to Training Performance Analysis">​</a></h3><p>The benchmark provides comprehensive training visualizations:</p><p><strong>Matplotlib curves:</strong></p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="model-performance--dataset-analysis">Model Performance &amp; Dataset Analysis<a href="#model-performance--dataset-analysis" class="hash-link" aria-label="Direct link to Model Performance &amp; Dataset Analysis" title="Direct link to Model Performance &amp; Dataset Analysis">​</a></h2><table><thead><tr><th><strong>Metric Type</strong></th><th><strong>Visualization 1</strong></th><th><strong>Visualization 2</strong></th></tr></thead><tbody><tr><td><strong>Confidence Analysis</strong></td><td><img loading="lazy" alt="F1-Confidence Curve" src="/assets/images/F1-confidence_curve-11d5342d6fb1778ca34a84f0b7181e46.jpg" width="853" height="563" class="img_ev3q"><br><em>Optimal F1-score achieved at confidence threshold of ~0.5</em></td><td><img loading="lazy" alt="Precision-Confidence Curve" src="/assets/images/precision-confidence_curve-db34701d337d83e1b1ad324131209921.jpg" width="979" height="653" class="img_ev3q"><br><em>High precision maintained across various confidence levels</em></td></tr><tr><td><strong>Trade-off Analysis</strong></td><td><img loading="lazy" alt="Precision-Recall Curve" src="/assets/images/precision-recall_curve-092c9ef1c6e12ecd47c535fbd58e1377.jpg" width="966" height="651" class="img_ev3q"><br><em>Trade-off analysis between precision and recall metrics</em></td><td><img loading="lazy" alt="Recall vs Confidence" src="/assets/images/recall-confidence_curve-3ac16746f4be1018abfb5f87da604553.jpg" width="974" height="657" class="img_ev3q"><br><em>Recall performance across different detection thresholds</em></td></tr><tr><td><strong>Dataset Insights</strong></td><td><img loading="lazy" alt="Labels Distribution" src="/assets/images/labels-767d7626e4a46daffb5e04198946b4c5.jpg" width="731" height="735" class="img_ev3q"><br><em>Distribution of component classes across the training dataset</em></td><td><img loading="lazy" alt="Label Correlations" src="/assets/images/labels_correlate-f8ba9ef87a3273873a11d761c26a08a1.jpg" width="971" height="733" class="img_ev3q"><br><em>Spatial correlation analysis between different component types</em></td></tr></tbody></table><h3 class="anchor anchorWithStickyNavbar_LWe7" id="yolo-detection-predictions-1">YOLO Detection Predictions<a href="#yolo-detection-predictions-1" class="hash-link" aria-label="Direct link to YOLO Detection Predictions" title="Direct link to YOLO Detection Predictions">​</a></h3><p>Real-world inference results on test images showing deformable component detection:</p><p><img loading="lazy" alt="YOLO Predictions - Sample 1" src="/assets/images/yolo_predictions-c4266c43079df0b10db55abb5fee511b.jpg" width="740" height="740" class="img_ev3q"></p><p>Real-world inference results on test images showing deformable component detection:</p><table><thead><tr><th>
34</th><th></th></tr></thead><tbody><tr><td><img loading="lazy" alt="YOLO Predictions - Sample 3" src="/assets/images/yolo_predictions3-bfa085ba706c089a4fa962d9ed12726b.jpg" width="635" height="740" class="img_ev3q"></td><td><img loading="lazy" alt="YOLO Predictions - Sample 2" src="/assets/images/yolo_predictions2-71a6bcbfa410f5ff425fa36ba0b9c513.jpg" width="760" height="741" class="img_ev3q"></td></tr></tbody></table><p>Model successfully detects RAM modules, cooling mounts, CPU slots, FCPs, and chip keys with accurate bounding boxes*</p><p><strong>Key training insights:</strong></p><ul><li><strong>F1-Score vs Confidence</strong>: Optimal performance at ~0.5 confidence threshold</li><li><strong>Precision-Recall Trade-off</strong>: High precision maintained across recall ranges</li><li><strong>Loss Convergence</strong>: Stable training with consistent loss reduction</li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="validation-results">Validation Results<a href="#validation-results" class="hash-link" aria-label="Direct link to Validation Results" title="Direct link to Validation Results">​</a></h3><p>These visualizations demonstrate the model&#x27;s capability to accurately detect and localize components across diverse assembly scenarios.</p><hr><h2 class="anchor anchorWithStickyNavbar_LWe7" id="key-achievements-and-community-impact">Key Achievements and Community Impact<a href="#key-achievements-and-community-impact" class="hash-link" aria-label="Direct link to Key Achievements and Community Impact" title="Direct link to Key Achievements and Community Impact">​</a></h2><p>This embodied intelligence benchmarking framework delivers significant value to the industrial AI community:</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="1-comprehensive-multimodal-dataset">1. Comprehensive Multimodal Dataset<a href="#1-comprehensive-multimodal-dataset" class="hash-link" aria-label="Direct link to 1. Comprehensive Multimodal Dataset" title="Direct link to 1. Comprehensive Multimodal Dataset">​</a></h3><p>A publicly available dataset containing:</p><ul><li>2,227 annotated frames across 5 component types</li><li>RGB-D images with precise calibration</li><li>Force/torque sensor logs with millisecond precision</li><li>Complete robot trajectory data</li><li>Assembly success labels validated against industrial standards</li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="2-end-to-end-evaluation-infrastructure">2. End-to-End Evaluation Infrastructure<a href="#2-end-to-end-evaluation-infrastructure" class="hash-link" aria-label="Direct link to 2. End-to-End Evaluation Infrastructure" title="Direct link to 2. End-to-End Evaluation Infrastructure">​</a></h3><p>Unlike existing benchmarks that assess isolated capabilities, this framework evaluates:</p><ul><li>Complete multi-stage workflows from perception to verification</li><li>Integration quality between vision and force control</li><li>Real-world assembly success rates</li><li>System robustness across component variations</li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="3-reproducible-baseline-algorithms">3. Reproducible Baseline Algorithms<a href="#3-reproducible-baseline-algorithms" class="hash-link" aria-label="Direct link to 3. Reproducible Baseline Algorithms" title="Direct link to 3. Reproducible Baseline Algorithms">​</a></h3><p>Production-ready implementations including:</p><ul><li>YOLOv8-based component detection achieving 91.19% mAP50</li><li>Force-controlled manipulation with haptic feedback</li><li>CNN visual inspection for quality assurance</li><li>Complete workflow orchestration framework</li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="4-standardized-performance-metrics">4. Standardized Performance Metrics<a href="#4-standardized-performance-metrics" class="hash-link" aria-label="Direct link to 4. Standardized Performance Metrics" title="Direct link to 4. Standardized Performance Metrics">​</a></h3><p>Industry-relevant metrics that capture:</p><ul><li>Detection accuracy (Precision, Recall, mAP)</li><li>Assembly quality (position, orientation, deformation control)</li><li>Overall success rates (83.33% baseline)</li><li>Combined performance scores for leaderboard rankings</li></ul><p>
34This benchmark enables fair comparison of different embodied intelligence approaches, accelerating innovation in industrial automation.</p><hr><h2 class="anchor anchorWithStickyNavbar_LWe7" id="technical-insights-and-future-directions">Technical Insights and Future Directions<a href="#technical-insights-and-future-directions" class="hash-link" aria-label="Direct link to Technical Insights and Future Directions" title="Direct link to Technical Insights and Future Directions">​</a></h2><p>The benchmark reveals important insights about industrial embodied intelligence:</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="current-capabilities">Current Capabilities:<a href="#current-capabilities" class="hash-link" aria-label="Direct link to Current Capabilities:" title="Direct link to Current Capabilities:">​</a></h3><ul><li>High detection performance (97.7% precision, 85.9% recall overall)</li><li>Consistent success rates across component types (83.3%)</li><li>Robust handling of deformable components (FCP assembly: 70% accuracy)</li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="improvement-opportunities">Improvement Opportunities:<a href="#improvement-opportunities" class="hash-link" aria-label="Direct link to Improvement Opportunities:" title="Direct link to Improvement Opportunities:">​</a></h3><ul><li>RAM module assembly shows lower recall (73.5%), indicating detection challenges with reflective surfaces</li><li>CPU slot assembly has reduced accuracy (55%), suggesting the need for finer position control</li><li>Deformable component handling requires enhanced force feedback algorithms</li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="future-enhancements">Future Enhancements<a href="#future-enhancements" class="hash-link" aria-label="Direct link to Future Enhancements" title="Direct link to Future Enhancements">​</a></h3><p>The framework is designed to accommodate advanced features:</p><ul><li><strong>Intelligent decision-making</strong>: Conditional logic for accessory selection based on assembly configuration</li><li><strong>Failure recovery</strong>: Adaptive re-planning when initial assembly attempts fail</li><li><strong>Complex workflows</strong>: Multi-robot coordination for larger assemblies</li><li><strong>Transfer learning</strong>: Cross-component generalization to reduce training requirements</li></ul><p>For more technical details and ongoing development, see the project repository and subscribe to updates.</p><hr><h2 class="anchor anchorWithStickyNavbar_LWe7" id="how-to-enable-embodied-intelligence-benchmarking-with-kubeedge-ianvs">How to Enable Embodied Intelligence Benchmarking with KubeEdge-Ianvs<a href="#how-to-enable-embodied-intelligence-benchmarking-with-kubeedge-ianvs" class="hash-link" aria-label="Direct link to How to Enable Embodied Intelligence Benchmarking with KubeEdge-Ianvs" title="Direct link to How to Enable Embodied Intelligence Benchmarking with KubeEdge-Ianvs">​</a></h2><p>The following procedures set up a complete benchmarking environment for industrial assembly tasks using KubeEdge-Ianvs with custom multimodal datasets.</p><p>After completing these steps, you&#x27;ll have a fully operational benchmark capable of evaluating multi-stage robotic assembly workflows.
35<a href="https://github.com/kubeedge/ianvs/blob/main/examples/industrialEI/single_task_learning_bench/deformable_component_manipulation/README.md" target="_blank" rel="noopener noreferrer">Ianvs readme</a></p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="getting-started-with-your-own-benchmarks">Getting Started with Your Own Benchmarks<a href="#getting-started-with-your-own-benchmarks" class="hash-link" aria-label="Direct link to Getting Started with Your Own Benchmarks" title="Direct link to Getting Started with Your Own Benchmarks">​</a></h2><hr><h2 class="anchor anchorWithStickyNavbar_LWe7" id="ianvs-installation">Ianvs Installation<a href="#ianvs-installation" class="hash-link" aria-label="Direct link to Ianvs Installation" title="Direct link to Ianvs Installation">​</a></h2><h3 class="anchor anchorWithStickyNavbar_LWe7" id="1-download-the-ianvs-codebase">1. Download the Ianvs codebase<a href="#1-download-the-ianvs-codebase" class="hash-l
35ink" aria-label="Direct link to 1. Download the Ianvs codebase" title="Direct link to 1. Download the Ianvs codebase">​</a></h3><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">git</span><span class="token plain"> clone https://github.com/kubeedge/ianvs.git</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token builtin class-name">cd</span><span class="token plain"> ianvs</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h3 class="anchor anchorWithStickyNavbar_LWe7" id="2-create-and-activate-a-virtual-environment">2. Create and activate a virtual environment<a href="#2-create-and-activate-a-virtual-environment" class="hash-link" aria-label="Direct link to 2. Create and activate a virtual environment" title="Direct link to 2. Create and activate a virtual environment">​</a></h3><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">sudo</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">apt-get</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">install</span><span class="token plain"> -y virtualenv</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">mkdir</span><span class="token plain"> ~/venv </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">virtualenv -p python3 ~/venv/ianvs</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token builtin class-name">source</span><span class="token plain"> ~/venv/ianvs/bin/activate</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h3 class="anchor anchorWithStickyNavbar_LWe7" id="3-install-system-dependencies-and-python-packages">3. Install system dependencies and Python packages<a href="#3-install-system-dependencies-and-python-packages" class="hash-link" aria-label="Direct link to 3. Install system dependencies and Python packages" title="Direct link to 3. Install system dependencies and Python packages">​</a></h3><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">sudo</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">apt-get</span><span class="token plain"> update</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">sudo</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">apt-get</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">install</span><span class="token plain"> libgl1-mesa-glx -y</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">
35python -m pip </span><span class="token function" style="color:#d73a49">install</span><span class="token plain"> --upgrade pip</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">python -m pip </span><span class="token function" style="color:#d73a49">install</span><span class="token plain"> ./examples/resources/third_party/*</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">python -m pip </span><span class="token function" style="color:#d73a49">install</span><span class="token plain"> -r requirements.txt</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h3 class="anchor anchorWithStickyNavbar_LWe7" id="4-install-benchmark-specific-requirements">4. Install benchmark-specific requirements<a href="#4-install-benchmark-specific-requirements" class="hash-link" aria-label="Direct link to 4. Install benchmark-specific requirements" title="Direct link to 4. Install benchmark-specific requirements">​</a></h3><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">pip </span><span class="token function" style="color:#d73a49">install</span><span class="token plain"> -r examples/industrialEI/single_task_learning_bench/deformable_component_manipulation/requirements.txt</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h3 class="anchor anchorWithStickyNavbar_LWe7" id="5-install-ianvs">5. Install Ianvs<a href="#5-install-ianvs" class="hash-link" aria-label="Direct link to 5. Install Ianvs" title="Direct link to 5. Install Ianvs">​</a></h3><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">python setup.py </span><span class="token function" style="color:#d73a49">install</span><span class="token plain">  </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">ianvs -v</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS">
35<path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>If the version information prints successfully, Ianvs is ready to use.</p><hr><h2 class="anchor anchorWithStickyNavbar_LWe7" id="benchmark-configuration">Benchmark Configuration<a href="#benchmark-configuration" class="hash-link" aria-label="Direct link to Benchmark Configuration" title="Direct link to Benchmark Configuration">​</a></h2><p>The benchmark is organized following the Ianvs framework structure:</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">ianvs/examples/industrialEI/single_task_learning_bench/</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">└── deformable_assembly/</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    ├── testalgorithms/</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    │   └── assembly_alg/</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    │       ├── components/</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    │       │   ├── perception.py          # YOLOv8 detection + CNN inspection</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    │       │   └── manipulation.py        # Force control algorithms</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    │       ├── testenv/</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    │       │   ├── acc.py                 # End-to-end metrics</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    │       │   └── testenv.yaml           # Environment configuration</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    │       └── naive_assembly_process.py  # Workflow orchestration</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    ├── benchmarkingjob.yaml</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    └── README.md</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h3 class="anchor anchorWithStickyNavbar_LWe7" id="configure-dataset-paths">Configure Dataset Paths<a href="#configure-dataset-paths" class="hash-link" aria-label="Direct link to Configure Dataset Paths" title="Direct link to Configure Dataset Paths">​</a></h3><p>The dataset path is pre-configured in <code>testenv.yaml</code>. Set up the algorithm path:</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token builtin class-name">export</span><span class="token plain"> </span><span class="token assign-left variable" style="color:#36acaa">PYTHONPATH</span><span class="token operator" style="color:#393A34">=</span><span class="token variable" style="color:#36acaa">$PYTHONPATH</span><span class="token plain">:/ianvs/examples/industrialEI/single_task_learning_bench/deformable_assembly/testalgorithms/assembly_alg</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N">
35<path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>The configuration defines the complete test environment including:</p><ul><li>Dataset locations and splits</li><li>Simulation parameters</li><li>Sensor configurations</li><li>Performance metrics</li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="run-benchmarking">Run Benchmarking<a href="#run-benchmarking" class="hash-link" aria-label="Direct link to Run Benchmarking" title="Direct link to Run Benchmarking">​</a></h2><p>Execute the benchmark from the Ianvs root directory:</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token builtin class-name">cd</span><span class="token plain"> /ianvs</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">ianvs -f examples/industrialEI/single_task_learning_bench/deformable_assembly/benchmarkingjob.yaml</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>The benchmark will:</p><ol><li>Load the multimodal dataset with all sensor modalities</li><li>Run YOLOv8 detection on each frame for component localization</li><li>Execute force-controlled assembly in PyBullet simulation</li><li>Perform CNN-based visual inspection on assembled products</li><li>Calculate comprehensive performance metrics</li><li>Generate detailed reports and leaderboards</li></ol><hr><p>This framework is designed for extensibility. To create your own industrial assembly benchmarks:</p><ol><li><strong>Collect your dataset</strong>: Use the provided PyBullet simulation scripts or capture real robot data</li><li><strong>Define your metrics</strong>: Customize <code>testenv/acc.py</code> for scenario-specific evaluation</li><li><strong>Implement algorithms</strong>: Follow the module interface in <code>components/</code> for perception and manipulation</li><li><strong>Configure Ianvs</strong>: Adapt <code>testenv.yaml</code> and <code>benchmarkingjob.yaml</code> for your environment</li><li><strong>Run and compare</strong>: Execute benchmarks and contribute results to the community leaderboard</li></ol><p>The complete documentation, dataset access, and baseline implementations are available in the <a href="https://github.com/kubeedge/ianvs" target="_blank" rel="noopener noreferrer">Ianvs repository</a>.</p><hr><h2 class="anchor anchorWithStickyNavbar_LWe7" id="conclusion">Conclusion<a href="#conclusion" class="hash-link" aria-label="Direct link to Conclusion" title="Direct link to Conclusion">​</a></h2><p>This work is part of the KubeEdge-Ianvs distributed synergy AI benchmarking initiative, advancing the state of cloud-edge collaborative intelligence for industrial applications.</p><p><strong>Author</strong>: Ronak Raj</p><hr></div><footer class="row docusaurus-mt-lg"><div class="col"><b>Tags:</b><ul class="tags_jXut padding--none margin-left--sm"><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/kube-edge">KubeEdge</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/ianvs">Ianvs</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/embodied-intelligence">Embodied Intelligence</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/deep-learning">Deep Learning</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/industrial-manufacturing">Industrial Manufacturing</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/robotic-assembly">Robotic Assembly</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/force-control">Force Control</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/computer-vision">Computer Vision</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/yol-ov-8">YOLOv8</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/edge-ai">Edge AI</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/benchmarking">Benchmarking</a></li></ul></div></footer></article><article class="margin-bottom--xl" itemprop="blogPost" itemscope="" itemtype="http://schema.org/BlogPosting"><header><h2 class="title_f1Hy" itemprop="headline"><a itemprop="url" href="/blog/release-v1.23">KubeEdge v1.23 is live!</a></h2><div class="container_mt6G margin-vert--md"><time datetime="2026-03-11T00:00:00.000Z" itemprop="datePublished">March 11, 2026</time> · <!-- -->4 min read</div><div class="margin-top--md margin-bottom--sm row"><div class="col col--6 authorCol_Hf19"><div class="avatar margin-bottom--sm"><a href="https://github.com/kubeedge-bot" target="_blank" rel="noopener noreferrer" class="avatar__photo-link"><img class="avatar__photo" src="https://avatars.githubusercontent.com/u/48982446?v=4" alt="KubeEdge SIG Release"></a><div class="avatar__intro" itemprop="author" itemscope="" itemtype="https://schema.org/Person"><div class="avatar__name"><a href="https://github.com/kubeedge-bot" target="_blank" rel="noopener noreferrer" itemprop="url"><span itemprop="name">KubeEdge SIG Release</span></a></div></div></div></div></div></header><div class="markdown" itemprop="articleBody"><p>On March 11, 2026, KubeEdge released v1.23.0</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="123-whats-new">1.23 What&#x27;
35s New<a href="#123-whats-new" class="hash-link" aria-label="Direct link to 1.23 What&#x27;s New" title="Direct link to 1.23 What&#x27;s New">​</a></h2><ul><li><a href="#enhanced-capabilities-of-edgecore-and-keadm-under-windows-operating-system">Enhanced Capabilities of EdgeCore and Keadm Under Windows Operating System</a></li><li><a href="#add-equipment-anomaly-detection-capability">Add Equipment Anomaly Detection Capability</a></li><li><a href="#optimize-edge-side-query-node-process-to-reduce-edge-cloud-channel-bandwidth-usage">Optimize Edge-Side Query Node Process to Reduce Edge-Cloud Channel Bandwidth Usage</a></li><li><a href="#replace-beego-with-gorm-and-refactor-edge-database">Replace Beego with Gorm and Refactor Edge Database</a></li><li><a href="#upgrade-kubernetes-dependency-to-v132">Upgrade Kubernetes Dependency to v1.32</a></li><li><a href="#new-dashboard-version-support-chinese-internationalization-performance-optimization-and-page-improvement">New Dashboard Version: Support Chinese Internationalization, Performance Optimization and Page Improvement</a></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="release-highlights">Release Highlights<a href="#release-highlights" class="hash-link" aria-label="Direct link to Release Highlights" title="Direct link to Release Highlights">​</a></h2><h3 class="anchor anchorWithStickyNavbar_LWe7" id="enhanced-capabilities-of-edgecore-and-keadm-under-windows-operating-system">Enhanced Capabilities of EdgeCore and Keadm Under Windows Operating System<a href="#enhanced-capabilities-of-edgecore-and-keadm-under-windows-operating-system" class="hash-link" aria-label="Direct link to Enhanced Capabilities of EdgeCore and Keadm Under Windows Operating System" title="Direct link to Enhanced Capabilities of EdgeCore and Keadm Under Windows Operating System">​</a></h3><p>In version 1.23.0, we have enhanced the capabilities of EdgeCore and keadm on Windows OS as follows:</p><ul><li><strong>Local DMI service is provided</strong> : Since Windows does not support Unix Domain Sockets, we use Windows Named Pipes to implement local network communication;  </li><li><strong>Enhanced keadm upgrade/download</strong> : In v1.23.0, keadm will detect the version information of the local <code>edgecore.exe</code> . If a higher version is available, it will automatically download the EdgeCore package again to avoid   the upgrade being skipped because <code>edgecore.exe</code> already exists locally.  </li><li><strong>Enhanced observability</strong> : In the new version, EdgeCore logs will be redirected to configurable log files, optimizing operations and troubleshooting in Windows environments.</li></ul><p><strong>Refer to the link for more details.(<a href="https://github.com/kubeedge/kubeedge/pull/6563" target="_blank" rel="noopener noreferrer">#6563</a>, <a href="https://github.com/kubeedge/kubeedge/pull/6580" target="_blank" rel="noopener noreferrer">#6580</a>, <a href="https://github.com/kubeedge/kubeedge/pull/6565" target="_blank" rel="noopener noreferrer">#6565</a>)</strong></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="add-equipment-anomaly-detection-capability">Add Equipment Anomaly Detection Capability<a href="#add-equipment-anomaly-detection-capability" class="hash-link" aria-label="Direct link to Add Equipment Anomaly Detection Capability" title="Direct link to Add Equipment Anomaly Detection Capability">​</a></h3><p>v1.23.0 introduced a device anomaly detection framework, allowing you to   specify anomaly detection configurations in the pushMethod field of the Device CRD:</p><div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">apiVersion</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> devices.kubeedge.io/v1beta1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">kind</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> Device</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">spec</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">   </span><span class="token key atrule" style="color:#00a4db">properties</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">     </span><span class="token key atrule" style="color:#00a4db">pushMethod</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token key atrule" style="color:#00a4db">anomolyDetection</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          </span><span class="token punctuation" style="color:#393A34">...</span><span class="token plain"> // 指定异常检测字段,如设备工作状态等</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">...</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N">
35<path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>We&#x27;ve also implemented device anomaly detection and processing logic in the Mapper, allowing you to customize the handling of abnormal device data. Additionally, we&#x27;ve provided a device anomaly detection demo in the Example repository, making it easy for you to quickly understand and try out this new capability. See details: <em><a href="https://github.com/kubeedge/examples/pull/163" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/examples/pull/163</a></em></p><p><strong>Refer to the link for more details.(<a href="https://github.com/kubeedge/kubeedge/pull/6478" target="_blank" rel="noopener noreferrer">#6478</a>, <a href="https://github.com/kubeedge/kubeedge/pull/6543" target="_blank" rel="noopener noreferrer">#6543</a>)</strong></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="optimize-edge-side-query-node-process-to-reduce-edge-cloud-channel-bandwidth-usage">Optimize Edge-Side Query Node Process to Reduce Edge-Cloud Channel Bandwidth Usage<a href="#optimize-edge-side-query-node-process-to-reduce-edge-cloud-channel-bandwidth-usage" class="hash-link" aria-label="Direct link to Optimize Edge-Side Query Node Process to Reduce Edge-Cloud Channel Bandwidth Usage" title="Direct link to Optimize Edge-Side Query Node Process to Reduce Edge-Cloud Channel Bandwidth Usage">​</a></h3><p>In previous versions, EdgeCore needed to remotely query node information via the edge-cloud channel, which resulted in significant bandwidth consumption, especially in large-scale scenarios. In the new version, EdgeCore queries nodes directly from the edge database. Simultaneously, CloudCore automatically synchronizes node information to the edge database when it detects updates, significantly improving system performance and reliability in large-scale edge scenarios.</p><p><strong>Refer to the link for more details.(<a href="https://github.com/kubeedge/kubeedge/pull/6543" target="_blank" rel="noopener noreferrer">#6543</a>)</strong></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="replace-beego-with-gorm-and-refactor-edge-database">Replace Beego with Gorm and Refactor Edge Database<a href="#replace-beego-with-gorm-and-refactor-edge-database" class="hash-link" aria-label="Direct link to Replace Beego with Gorm and Refactor Edge Database" title="Direct link to Replace Beego with Gorm and Refactor Edge Database">​</a></h3><p>The original edge database used the Beego framework, which only utilized the ORM portion. In the new version, we replace the Beego framework with the lighter Gorm. Simultaneously, the edge database has been restructured, introducing a unified database operation entry point in MetaManager, making database interactions clearer and easier to maintain.</p><p><strong>Refer to the link for more details.(<a href="https://github.com/kubeedge/kubeedge/issues/6296" target="_blank" rel="noopener noreferrer">#6296</a>, <a href="https://github.com/kubeedge/kubeedge/pull/6585" target="_blank" rel="noopener noreferrer">#6585</a>)</strong></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="upgrade-kubernetes-dependency-to-v132">Upgrade Kubernetes Dependency to v1.32<a href="#upgrade-kubernetes-dependency-to-v132" class="hash-link" aria-label="Direct link to Upgrade Kubernetes Dependency to v1.32" title="Direct link to Upgrade Kubernetes Dependency to v1.32">​</a></h3><p>The new version upgrades the Kubernetes version it depends on to v1.32.10, allowing you to use the new version&#x27;s features in the cloud and at the edge.</p><p><strong>Refer to the link for more details.(<a href="https://github.com/kubeedge/kubeedge/pull/6549" target="_blank" rel="noopener noreferrer">#6549</a>)</strong></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="new-dashboard-version-support-chinese-internationalization-performance-optimization-and-page-improvement">New Dashboard Version: Support Chinese Internationalization, Performance Optimization and Page Improvement<a href="#new-dashboard-version-support-chinese-internationalization-performance-optimization-and-page-improvement" 
35class="hash-link" aria-label="Direct link to New Dashboard Version: Support Chinese Internationalization, Performance Optimization and Page Improvement" title="Direct link to New Dashboard Version: Support Chinese Internationalization, Performance Optimization and Page Improvement">​</a></h3><p>Dashboard v0.2.0 has been officially released, including the following updates:</p><ul><li>Introducing the Backend-for-Frontend (BFF) architecture establishes a data processing middleware layer, optimizes data processing logic, and improves frontend performance;  </li><li>An internationalized language framework has been introduced, and Chinese language pack support has been added.  </li><li>We have comprehensively optimized the Dashboard&#x27;s UI experience, unified the page style, and focused on optimizing form components such as PodTable and TableView to improve the user interaction experience.</li></ul><p><img loading="lazy" src="/assets/images/kubeedge-dashboard-png-3471179d8a85f1e2d3854b871284e973.png" width="1080" height="474" class="img_ev3q"></p><p><img loading="lazy" src="/assets/images/kubeedge-dashboard-detail-png-43afc4b833c12893ac0e15071d5b9b76.png" width="1080" height="538" class="img_ev3q"></p><p><strong>Refer to the link for more details.(<a href="https://github.com/kubeedge/dashboard/tree/v0.2.0" target="_blank" rel="noopener noreferrer">#v0.2.0</a>)</strong></p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="version-upgrade-notes">Version upgrade notes<a href="#version-upgrade-notes" class="hash-link" aria-label="Direct link to Version upgrade notes" title="Direct link to Version upgrade notes">​</a></h2><p>Starting with version 1.23.0, the Status field of the Device CRD   will be separated and used as a separate  DeviceStatus CRD  . This change is compatible with older CRDs, but please note that in later versions, device status will need to be obtained through the new  DeviceStatus CRD  .</p><p><strong>Refer to the link for more details.(<a href="https://github.com/kubeedge/kubeedge/pull/6534" target="_blank" rel="noopener noreferrer">#6534</a>)</strong></p></div><footer class="row docusaurus-mt-lg"><div class="col"><b>Tags:</b><ul class="tags_jXut padding--none margin-left--sm"><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/kube-edge">KubeEdge</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/kubeedge">kubeedge</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/edge-computing">edge computing</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/kubernetes-edge-computing">kubernetes edge computing</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/k-8-s-edge-orchestration">K8s edge orchestration</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/edge-computing-platform">edge computing platform</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/cloud-native">cloud native</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/iot">iot</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/iiot">iiot</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/dashboard">dashboard</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/release-v-1-23">release v1.23</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/v-1-23">v1.23</a></li></ul></div></footer></article><article class="margin-bottom--xl" itemprop="blogPost" itemscope="" itemtype="http://schema.org/BlogPosting"><header><h2 class="title_f1Hy" itemprop="headline"><a itemprop="url" href="/blog/release-v1.22">KubeEdge v1.22 is live!</a></h2><div class="container_mt6G margin-vert--md"><time datetime="2025-11-11T00:00:00.000Z" itemprop="datePublished">November 11, 2025</time> · <!-- -->4 min read</div><div class="margin-top--md margin-bottom--sm row"><div class="col col--6 authorCol_Hf19"><div class="avatar margin-bottom--sm"><a href="https://github.com/kubeedge-bot" target="_blank" rel="noopener noreferrer" class="avatar__photo-link"><img class="avatar__photo" src="https://avatars.githubusercontent.com/u/48982446?v=4" alt="KubeEdge SIG Release"></a><div class="avatar__intro" itemprop="author" itemscope="" itemtype="https://schema.org/Person"><div class="avatar__name"><a href="https://github.com/kubeedge-bot" target="_blank" rel="noopener noreferrer" itemprop="url"><span itemprop="name">KubeEdge SIG Release</span></a></div></div></div></div></div></header><div class="markdown" itemprop="articleBody"><p>On Nov 4, 2025, KubeEdge released v1.22.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="122-whats-new">1.22 What&#x27;
35s New<a href="#122-whats-new" class="hash-link" aria-label="Direct link to 1.22 What&#x27;s New" title="Direct link to 1.22 What&#x27;s New">​</a></h2><ul><li><a href="#add-holdrelease-mechanism-for-controlling-edge-resource-updates">Add Hold/Release Mechanism for Controlling Edge Resource Updates</a></li><li><a href="#beehive-framework-upgrade-supporting-configurable-submodule-restart-policies">Beehive Framework Upgrade, Supporting Configurable Submodule Restart Policies</a></li><li><a href="#device-model-update-based-on-thing-model-and-product-concept">Device Model Update Based On Thing Model and Product Concept</a></li><li><a href="#add-featuregates-for-pod-resources-server-and-csi-plugin-in-edgecore-integrated-lightweight-kubelet">Add Featuregates for Pod Resources Server and CSI Plugin in EdgeCore Integrated Lightweight Kubelet</a></li><li><a href="#c-language-mapper-framework-support">C language Mapper-Framework Support</a></li><li><a href="#upgrade-kubernetes-dependency-to-v13112">Upgrade Kubernetes Dependency to v1.31.12</a></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="release-highlights">Release Highlights<a href="#release-highlights" class="hash-link" aria-label="Direct link to Release Highlights" title="Direct link to Release Highlights">​</a></h2><h3 class="anchor anchorWithStickyNavbar_LWe7" id="add-holdrelease-mechanism-for-controlling-edge-resource-updates">Add Hold/Release Mechanism for Controlling Edge Resource Updates<a href="#add-holdrelease-mechanism-for-controlling-edge-resource-updates" class="hash-link" aria-label="Direct link to Add Hold/Release Mechanism for Controlling Edge Resource Updates" title="Direct link to Add Hold/Release Mechanism for Controlling Edge Resource Updates">​</a></h3><p>In applications such as autonomous driving, drones, and robotics, we want to control when updates to edge resources occur, ensuring that these resources cannot be updated without the permission of the edge administrator. In v1.22.0, we introduced a hold/release mechanism to control updates to edge resources.</p><p>On the cloud side, users can indicate that the corresponding Pod should be held on the edge by adding the annotation <code>edge.kubeedge.io/hold-upgrade: &quot;true&quot;</code> to resources like Deployment, StatefulSet, and DaemonSet.</p><p>On the edge, Pods marked with <code>edge.kubeedge.io/hold-upgrade: &quot;true&quot;</code> will be temporarily held and not processed. Edge administrators can release the lock on the Pod to complete the resource update by executing the following command:</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">keadm ctl unhold-upgrade pod &lt;pod-name&gt;</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Alternatively, they can execute the following command to unlock all held edge resources on the edge node:</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">keadm ctl unhold-upgrade node</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N">
35<path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><div class="theme-admonition theme-admonition-note alert alert--secondary admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"></path></svg></span>note</div><div class="admonitionContent_S0QG"><p>Using the keadm ctl command requires the DynamicController and MetaServer switches to be enabled.</p></div></div><p><strong>Refer to the link for more details.(<a href="https://github.com/kubeedge/kubeedge/pull/6348" target="_blank" rel="noopener noreferrer">#6348</a>, <a href="https://github.com/kubeedge/kubeedge/pull/6418" target="_blank" rel="noopener noreferrer">#6418</a>)</strong></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="beehive-framework-upgrade-supporting-configurable-submodule-restart-policies">Beehive Framework Upgrade, Supporting Configurable Submodule Restart Policies<a href="#beehive-framework-upgrade-supporting-configurable-submodule-restart-policies" class="hash-link" aria-label="Direct link to Beehive Framework Upgrade, Supporting Configurable Submodule Restart Policies" title="Direct link to Beehive Framework Upgrade, Supporting Configurable Submodule Restart Policies">​</a></h3><p>In release 1.17, we implemented auto-restart for the EdgeCore modules, allowing global configuration of edge modules restarts. In release 1.22, we optimized the <code>Beehive</code> framework to support restart policy configurations for edge submodules. We also standardized the error handling for starting <code>Beehive</code> submodules.</p><p><strong>Refer to the link for more details.(<a href="https://github.com/kubeedge/kubeedge/pull/6444" target="_blank" rel="noopener noreferrer">#6444</a>, <a href="https://github.com/kubeedge/kubeedge/pull/6445" target="_blank" rel="noopener noreferrer">#6445</a>)</strong></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="device-model-update-based-on-thing-model-and-product-concept">Device Model Update Based On Thing Model and Product Concept<a href="#device-model-update-based-on-thing-model-and-product-concept" class="hash-link" aria-label="Direct link to Device Model Update Based On Thing Model and Product Concept" title="Direct link to Device Model Update Based On Thing Model and Product Concept">​</a></h3><p>The current Device Model is designed based on the thing model concept. In traditional IoT, devices are usually designed with a three-tier structure: thing model, product, and device instance, which can lead to user confusion during actual use.</p><p>In release 1.22, we upgraded the device model design by integrating the concepts of thing models and actual products. We extracted the <code>protocolConfigData</code> and <code>visitors</code> fields from existing device instances into the device model, allowing device instances to share these model configurations. Additionally, to reduce the cost of separating models, device instances can override these configurations.</p><p><strong>Refer to the link for more details.(<a href="https://github.com/kubeedge/kubeedge/pull/6457" target="_blank" rel="noopener noreferrer">#6457</a>, <a href="https://github.com/kubeedge/kubeedge/pull/6458" target="_blank" rel="noopener noreferrer">#6458</a>)</strong></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="add-featuregates-for-pod-resources-server-and-csi-plugin-in-edgecore-integrated-lightweight-kubelet">Add Featuregates for Pod Resources Server and CSI Plugin in EdgeCore Integrated Lightweight Kubelet<a href="#add-featuregates-for-pod-resources-server-and-csi-plugin-in-edgecore-integrated-lightweight-kubelet" class="hash-l
35ink" aria-label="Direct link to Add Featuregates for Pod Resources Server and CSI Plugin in EdgeCore Integrated Lightweight Kubelet" title="Direct link to Add Featuregates for Pod Resources Server and CSI Plugin in EdgeCore Integrated Lightweight Kubelet">​</a></h3><p>In previous versions, we removed the Pod Resources Server capability from the integrated lightweight Kubelet in EdgeCore. However, in some use cases, users wish to restore this capability for monitoring Pods. Additionally, the default activation of the CSI Plugin in Kubelet can lead to failures in offline environments due to failed CSINode creation when starting EdgeCore.</p><p>In v1.22.0, we added featuregates for the <code>Pod Resources Server</code> and <code>CSI Plugin</code> in the lightweight Kubelet. If you need to enable the Pod Resources Server or disable the CSI Plugin, you can add the following feature gates to your EdgeCore configuration:</p><div class="codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-text codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">apiVersion: edgecore.config.kubeedge.io/v1alpha2</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">kind: EdgeCore</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">modules:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">     edged:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">         tailoredKubeletConfig:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            featureGates:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">               KubeletPodResources: true</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">               DisableCSIVolumePlugin: true</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">...</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p><strong>Refer to the link for more details.(<a href="https://github.com/kubeedge/kubernetes/pull/12" target="_blank" rel="noopener noreferrer">kubeedge/kubernetes#12</a>, <a href="https://github.com/kubeedge/kubernetes/pull/13" target="_blank" rel="noopener noreferrer">kubeedge/kubernetes#13</a>, <a href="https://github.com/kubeedge/kubeedge/pull/6452" target="_blank" rel="noopener noreferrer">#6452</a>)</strong></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="c-language-mapper-framework-support">C language Mapper-Framework Support<a href="#c-language-mapper-framework-support" class="hash-link" aria-label="Direct link to C language Mapper-Framework Support" title="Direct link to C language Mapper-Framework Support">​</a></h3><p>In v1.20.0, we added a Java version of the Mapper-Framework based on the existing Go language version. Due to the diversity of communication protocols for edge IoT devices, many edge device driver protocols are implemented in C. Thus, in the new release, KubeEdge offers a C language version of the Mapper-Framework. Users can access the <code>feature-multilingual-mapper-c</code> branch in the KubeEdge main repository to generate custom Mapper projects in C using the Mapper Framework.</p><p><strong>Refer to the link for more details.(<a href="https://github.com/kubeedge/kubeedge/pull/6405" target="_blank" rel="noopener noreferrer">#6405</a>, <a href="https://github.com/kubeedge/kubeedge/pull/6455" target="_blank" rel="noopener noreferrer">#6455</a>)</strong></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="upgrade-kubernetes-dependency-to-v13112">
35Upgrade Kubernetes Dependency to v1.31.12<a href="#upgrade-kubernetes-dependency-to-v13112" class="hash-link" aria-label="Direct link to Upgrade Kubernetes Dependency to v1.31.12" title="Direct link to Upgrade Kubernetes Dependency to v1.31.12">​</a></h3><p>Upgrade the vendored kubernetes version to v1.31.12, users are now able to use the feature of new version on the cloud and on the edge side.</p><p><strong>Refer to the link for more details.(<a href="https://github.com/kubeedge/kubeedge/pull/6443" target="_blank" rel="noopener noreferrer">#6443</a>)</strong></p></div><footer class="row docusaurus-mt-lg"><div class="col"><b>Tags:</b><ul class="tags_jXut padding--none margin-left--sm"><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/kube-edge">KubeEdge</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/kubeedge">kubeedge</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/edge-computing">edge computing</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/kubernetes-edge-computing">kubernetes edge computing</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/k-8-s-edge-orchestration">K8s edge orchestration</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/edge-computing-platform">edge computing platform</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/cloud-native">cloud native</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/iot">iot</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/iiot">iiot</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/dashboard">dashboard</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/release-v-1-22">release v1.22</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/v-1-22">v1.22</a></li></ul></div></footer></article><article class="margin-bottom--xl" itemprop="blogPost" itemscope="" itemtype="http://schema.org/BlogPosting"><header><h2 class="title_f1Hy" itemprop="headline"><a itemprop="url" href="/blog/release-v1.21">KubeEdge v1.21 is live!</a></h2><div class="container_mt6G margin-vert--md"><time datetime="2025-06-18T00:00:00.000Z" itemprop="datePublished">June 18, 2025</time> · <!-- -->4 min read</div><div class="margin-top--md margin-bottom--sm row"><div class="col col--6 authorCol_Hf19"><div class="avatar margin-bottom--sm"><a href="https://github.com/kubeedge-bot" target="_blank" rel="noopener noreferrer" class="avatar__photo-link"><img class="avatar__photo" src="https://avatars.githubusercontent.com/u/48982446?v=4" alt="KubeEdge SIG Release"></a><div class="avatar__intro" itemprop="author" itemscope="" itemtype="https://schema.org/Person"><div class="avatar__name"><a href="https://github.com/kubeedge-bot" target="_blank" rel="noopener noreferrer" itemprop="url"><span itemprop="name">KubeEdge SIG Release</span></a></div></div></div></div></div></header><div class="markdown" itemprop="articleBody"><p>On June 28, 2025, KubeEdge released v1.21.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="121-whats-new">1.21 What&#x27;s New<a href="#121-whats-new" class="hash-link" aria-label="Direct link to 1.21 What&#x27;s New" title="Direct link to 1.21 What&#x27;s New">​</a></h2><ul><li><a href="#new-generation-node-task-api-and-implementation">New Generation Node Task API and Implementation</a></li><li><a href="#support-closed-loop-flow-control">Support Closed Loop Flow Control</a></li><li><a href="#support-update-edge-configuration-from-cloud">Support Update Edge Configuration from Cloud</a></li><li><a href="#support-one-click-deployment-of-dashboard-and-integration-of-kubeedgekeink">Support One-Click Deployment of Dashboard and Integration of kubeedge/keink</a></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="release-highlights">Release Highlights<a href="#release-highlights" class="hash-link" aria-label="Direct link to Release Highlights" title="Direct link to Release Highlights">​</a></h2><h3 class="anchor anchorWithStickyNavbar_LWe7" id="new-generation-node-task-api-and-implementation">New Generation Node Task API and Implementation<a href="#new-generation-node-task-api-and-implementation" class="hash-l
35ink" aria-label="Direct link to New Generation Node Task API and Implementation" title="Direct link to New Generation Node Task API and Implementation">​</a></h3><p>In v1.21, we redesigned the status structure and operation process of node jobs to track error information and facilitate developers&#x27; understanding. In the new design, the node job status includes Phase (Init, InProgress, Completed, Failure) and nodeStatus.
36The nodeStatus consists of Phase (Pending, InProgress, Successful, Failure, Unknown), actionFlow, nodeName, reason, and business-related fields.
37A YAML example of the NodeUpgradeJob status is provided below.</p><div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">status</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">nodeStatus</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">actionFlow</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">action</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> Check</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          </span><span class="token key atrule" style="color:#00a4db">status</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&#x27;True&#x27;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          </span><span class="token key atrule" style="color:#00a4db">time</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&#x27;2025-05-28T08:12:01Z&#x27;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">action</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> WaitingConfirmation</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          </span><span class="token key atrule" style="color:#00a4db">status</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&#x27;True&#x27;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          </span><span class="token key atrule" style="color:#00a4db">time</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&#x27;2025-05-28T08:12:01Z&#x27;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">action</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> Backup</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          </span><span class="token key atrule" style="color:#00a4db">status</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&#x27;True&#x27;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          </span><span class="token key atrule" style="color:#00a4db">time</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&#x27;2025-05-28T08:12:01Z&#x27;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">action</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> Upgrade</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          </span><span class="token key atrule" style="color:#00a4db">status</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&#x27;True&#x27;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          </span><span class="token key atrule" style="color:#00a4db">time</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&#x27;2025-05-28T08:13:02Z&#x27;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">currentVersion</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> v1.21.0</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">historicVersion</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> v1.20.0</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">nodeName</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> ubuntu</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">phase</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> Successful</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">phase</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> Completed</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N">
37<path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Refer to the link for more details.(<a href="https://github.com/kubeedge/kubeedge/pull/6082" target="_blank" rel="noopener noreferrer">#6082</a>, <a href="https://github.com/kubeedge/kubeedge/pull/6084" target="_blank" rel="noopener noreferrer">#6084</a>)</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="support-closed-loop-flow-control">Support Closed Loop Flow Control<a href="#support-closed-loop-flow-control" class="hash-link" aria-label="Direct link to Support Closed Loop Flow Control" title="Direct link to Support Closed Loop Flow Control">​</a></h3><p>In v1.21, we have optimized the traffic closed-loop function of node groups. Applications within a node group can only access application services within the same group and unable to access services of other node groups.
38With this mechanism, users can easily achieve network isolation between multiple edge regions, ensuring that application services in different regions do not interfere with each other.</p><p>Refer to the link for more details.(<a href="https://github.com/kubeedge/kubeedge/pull/6097" target="_blank" rel="noopener noreferrer">#6097</a>, <a href="https://github.com/kubeedge/kubeedge/pull/6077" target="_blank" rel="noopener noreferrer">#6077</a>)</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="support-update-edge-configuration-from-cloud">Support Update Edge Configuration from Cloud<a href="#support-update-edge-configuration-from-cloud" class="hash-link" aria-label="Direct link to Support Update Edge Configuration from Cloud" title="Direct link to Support Update Edge Configuration from Cloud">​</a></h3><p>In many cases, cloud-based direct updates to EdgeCore configuration files for edge nodes offer greater convenience than manual updates from edge node, especially for batch operations that boost efficiency by managing multiple nodes simultaneously.</p><p>In v1.21.0, <code>ConfigUpdateJob</code> CRD is introduced to allows users to update configuration files for edge nodes in the cloud. The <code>updateFields</code> within the CRD is used to specify the configuration items that need to be updated.</p><p>CRD Sample:</p><div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">apiVersion</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> operations.kubeedge.io/v1alpha2</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">kind</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> ConfigUpdateJob</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">metadata</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> configupdate</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">test</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">spec</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">failureTolerate</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&quot;0.3&quot;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">concurrency</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">timeoutSeconds</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">180</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">updateFields</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">modules.edgeStream.enable</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&quot;true&quot;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">labelSelector</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">matchLabels</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">&quot;node-role.kubernetes.io/edge&quot;</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&quot;&quot;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">node-role.kubernetes.io/agent</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&quot;&quot;</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N">
38<path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><div class="theme-admonition theme-admonition-note alert alert--secondary admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"></path></svg></span>note</div><div class="admonitionContent_S0QG"><ul><li>This feature is disabled by default in v1.21.0. To enable it, please start the ControllerManager and TaskManager at cloud, as well as the TaskManager edge.</li><li>Updating edge configurations will require a restart of EdgeCore.</li></ul></div></div><p>Refer to the link for more details.(<a href="https://github.com/kubeedge/kubeedge/pull/6338" target="_blank" rel="noopener noreferrer">#6338</a>)</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="support-one-click-deployment-of-dashboard-and-integration-of-kubeedgekeink">Support One-Click Deployment of Dashboard and Integration of kubeedge/keink<a href="#support-one-click-deployment-of-dashboard-and-integration-of-kubeedgekeink" class="hash-link" aria-label="Direct link to Support One-Click Deployment of Dashboard and Integration of kubeedge/keink" title="Direct link to Support One-Click Deployment of Dashboard and Integration of kubeedge/keink">​</a></h3><p>In v1.21, the dashboard functionality has been enhanced by designing a BFF (Backend for Frontend) layer to connect the frontend user interface layer with the KubeEdge backend API.
39Additionally, the dashboard is integrated with the keink project, allowing users to launch a keink cluster in the dashboard environment with just one command to experience KubeEdge features.</p><p><img loading="lazy" src="/assets/images/dashboard-integrate-keink-d88d35a8f3591898a5a539ef3932c647.png" width="1856" height="966" class="img_ev3q"></p><p><img loading="lazy" src="/assets/images/dashboard-integrate-keink-2-b5d90c4b990ed4be811b6f2388fa3b38.png" width="1170" height="825" class="img_ev3q"></p><p>Refer to the link for more details.(<a href="https://github.com/kubeedge/dashboard/pull/50" target="_blank" rel="noopener noreferrer">#50</a>)</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="important-steps-before-upgrading">Important Steps before Upgrading<a href="#important-steps-before-upgrading" class="hash-link" aria-label="Direct link to Important Steps before Upgrading" title="Direct link to Important Steps before Upgrading">​</a></h2><ul><li>From v1.21, the v1alpha2 node job enables by default, and the CRD definition will be backward compatible. If you want to continue to use the v1alpha1 version of the NodeUpgradeJob and ImagePrePullJob, please setting the feature gates of ControllerManager and CloudCore.<ul><li>Add a command arg for ControllerManager:<div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">--feature-gates</span><span class="token operator" style="color:#393A34">=</span><span class="token plain">disableNodeTaskV1alpha2</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N">
39<path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></li><li>Modify the CloudCore configuration:<div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">apiVersion</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> cloudcore.config.kubeedge.io/v1alpha2</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">kind</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> CloudCore</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">featureGates</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">disableNodeTaskV1alpha2</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean important" style="color:#36acaa">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token punctuation" style="color:#393A34">...</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></li></ul></li></ul><div class="theme-admonition theme-admonition-note alert alert--secondary admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"></path></svg></span>note</div><div class="admonitionContent_S0QG"><p>The node job v1alpha2 CRDs are compatible with v1alpha1, but they <strong>cannot be switched</strong> between them. The code logic of v1alpha1 will destroy the data of v1alpha2 node job CR.</p></div></div><p>The v1alpha1 node jobs will no longer be maintained, and relevant codes will be clean up after v1.23. In addition, the node job has become a default <strong>disabled Beehive module</strong> in EdgeCore.
40If you want to use the node jobs, please modify the edgecore.yaml to enable it.</p><div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">modules</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">...</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">taskManager</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">enable</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean important" style="color:#36acaa">true</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N">
40<path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><ul><li>From v1.21, keadm upgrade related commands(backup, upgrade, rollback) at the edge have been adjusted.<ul><li>The upgrade command will not automatically execute the backup. The backup command needs to be triggered manually.</li><li>The upgrade command hides business-related flags and relevant codes will be cleaned up after v1.23.</li><li>All upgrade related commands use level 3 commands:</li></ul><div class="language-shell codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-shell codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">keadm edge upgrade</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">keadm edge backup</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">keadm edge rollback</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></li></ul></div><footer class="row docusaurus-mt-lg"><div class="col"><b>Tags:</b><ul class="tags_jXut padding--none margin-left--sm"><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/kube-edge">KubeEdge</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/kubeedge">kubeedge</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/edge-computing">edge computing</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/kubernetes-edge-computing">kubernetes edge computing</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/k-8-s-edge-orchestration">K8s edge orchestration</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/edge-computing-platform">edge computing platform</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/cloud-native">cloud native</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/iot">iot</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/iiot">iiot</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/dashboard">dashboard</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/release-v-1-21">release v1.21</a></li><li class="tag_QGVx"><a class="tag_zVej tagRegular_sFm0" href="/blog/tags/v-1-21">v1.21</a></li></ul></div></footer></article><nav class="pagination-nav" aria-label="Blog list page navigation"><a class="pagination-nav__link pagination-nav__link--next" href="/blog/page/2"><div class="pagination-nav__label">Older Entries</div></a></nav></main></div></div></div><footer class="footer"><div class="container container-fluid"><div class="footer__links text--center"><div class="footer__links"><span class="footer__link-item"><p style="font-size: large;">KubeEdge is a <a href="https://cncf.io/">Cloud Native Computing Foundation</a> graduated project.</p></span><span class="footer__link-separator">·</span><span class="footer__link-item"><img src="https://github.com/cncf/artwork/blob/main/other/cncf/horizontal/color/cncf-color.png?raw=true" class="footer__logo light"></span><span class="footer__link-separator">·</span><span class="footer__link-item"><img src="https://github.com/cncf/artwork/blob/main/other/cncf/horizontal/white/cncf-white.png?raw=true" class="footer__logo dark"></span><span class="footer__link-separator">·</span><span class="footer__link-item"><p>Copyright KubeEdge a Series of LF Projects, LLC. For website terms of use, trademark policy and other project policies please see <a href="https://lfprojects.org/policies/" target="_blank" rel="noopener noreferrer">lfprojects.org/policies</a>.</p></span></div></div><div class="footer__bottom text--center">
40<div class="footer__copyright">Copyright © 2026 The KubeEdge Authors. All rights reserved.</div></div></div></footer></div>
41<script src="/assets/js/runtime~main.7af97fb4.js"></script>
vendor: 1 bytes, line 41
41
42<script src="/assets/js/main.167a3d47.js"></script>
42
43</body>
44</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.