1"use strict";(globalThis.webpackChunkmy_website=globalThis.webpackChunkmy_website||[]).push([[2732],{15680(e,t,r){r.d(t,{xA:()=>s,yg:()=>c});var a=r(96540);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function o(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,a)}return r}function l(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?o(Object(r),!0).forEach((function(t){n(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):o(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function i(e,t){if(null==e)return{};var r,a,n=function(e,t){if(null==e)return{};var r,a,n={},o=Object.keys(e);for(a=0;a<o.length;a++)r=o[a],t.indexOf(r)>=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a<o.length;a++)r=o[a],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var d=a.createContext({}),g=function(e){var t=a.useContext(d),r=t;return e&&(r="function"==typeof e?e(t):l(l({},t),e)),r},s=function(e){var t=g(e.components);return a.createElement(d.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},p=a.forwardRef((function(e,t){var r=e.components,n=e.mdxType,o=e.originalType,d=e.parentName,s=i(e,["components","mdxType","originalType","parentName"]),p=g(r),c=n,m=p["".concat(d,".").concat(c)]||p[c]||u[c]||o;return r?a.createElement(m,l(l({ref:t},s),{},{components:r})):a.createElement(m,l({ref:t},s))}));function c(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var o=r.length,l=new Array(o);l[0]=p;var i={};for(var d in t)hasOwnProperty.call(t,d)&&(i[d]=t[d]);i.originalType=e,i.mdxType="string"==typeof e?e:n,l[1]=i;for(var g=2;g<o;g++)l[g]=r[g];return a.createElement.apply(null,l)}return a.createElement.apply(null,r)}p.displayName="MDXCreateElement"},65837(e,t,r){r.r(t),r.d(t,{assets:()=>d,contentTitle:()=>l,default:()=>u,frontMatter:()=>o,metadata:()=>i,toc:()=>g});var a=r(58168),n=(r(96540),r(15680));const o={authors:["KubeEdge SIG Release"],categories:["General","Announcements"],date:new Date("2025-11-11T00:00:00.000Z"),draft:!1,lastmod:new Date("2025-11-11T00:00:00.000Z"),summary:"KubeEdge v1.22 is live!",tags:["KubeEdge","kubeedge","edge computing","kubernetes edge computing","K8s edge orchestration","edge computing platform","cloud native","iot","iiot","dashboard","release v1.22","v1.22"],title:"KubeEdge v1.22 is live!"},l=void 0,i={permalink:"/blog/release-v1.22",editUrl:"https://github.com/kubeedge/website/tree/master/blog/release-v1.22/index.mdx",source:"@site/blog/release-v1.22/index.mdx",title:"KubeEdge v1.22 is live!",description:"On Nov 4, 2025, KubeEdge released v1.22.",date:"2025-11-11T00:00:00.000Z",formattedDate:"November 11, 2025",tags:[{label:"KubeEdge",permalink:"/blog/tags/kube-edge"},{label:"kubeedge",permalink:"/blog/tags/kubeedge"},{label:"edge computing",permalink:"/blog/tags/edge-computing"},{label:"kubernetes edge computing",permalink:"/blog/tags/kubernetes-edge-computing"},{label:"K8s edge orchestration",permalink:"/blog/tags/k-8-s-edge-orchestration"},{label:"edge computing platform",permalink:"/blog/tags/edge-computing-platform"},{label:"cloud native",permalink:"/blog/tags/cloud-native"},{label:"iot",permalink:"/blog/tags/iot"},{label:"iiot",permalink:"/blog/tags/iiot"},{label:"dashboard",permalink:"/blog/tags/dashboard"},{label:"release v1.22",permalink:"/blog/tags/release-v-1-22"},{label:"v1.22",permalink:"/blog/tags/v-1-22"}],readingTime:3.385,hasTruncateMarker:!1,authors:[{name:"KubeEdge SIG Release",url:"https://github.com/kubeedge-bot",imageURL:"https://avatars.githubusercontent.com/u/48982446?v=4",key:"KubeEdge SIG Release"}],frontMatter:{authors:["KubeEdge SIG Release"],categories:["General","Announcements"],date:"2025-11-11T00:00:00.000Z",draft:!1,lastmod:"2025-11-11T00:00:00.000Z",summary:"KubeEdge v1.22 is live!",tags:["KubeEdge","kubeedge","edge computing","kubernetes edge computing","K8s edge orchestration","edge computing platform","cloud native","
1iot","iiot","dashboard","release v1.22","v1.22"],title:"KubeEdge v1.22 is live!"},prevItem:{title:"KubeEdge v1.23 is live!",permalink:"/blog/release-v1.23"},nextItem:{title:"KubeEdge v1.21 is live!",permalink:"/blog/release-v1.21"}},d={authorsImageUrls:[void 0]},g=[{value:"1.22 What's New",id:"122-whats-new",level:2},{value:"Release Highlights",id:"release-highlights",level:2},{value:"Add Hold/Release Mechanism for Controlling Edge Resource Updates",id:"add-holdrelease-mechanism-for-controlling-edge-resource-updates",level:3},{value:"Beehive Framework Upgrade, Supporting Configurable Submodule Restart Policies",id:"beehive-framework-upgrade-supporting-configurable-submodule-restart-policies",level:3},{value:"Device Model Update Based On Thing Model and Product Concept",id:"device-model-update-based-on-thing-model-and-product-concept",level:3},{value:"Add Featuregates for Pod Resources Server and CSI Plugin in EdgeCore Integrated Lightweight Kubelet",id:"add-featuregates-for-pod-resources-server-and-csi-plugin-in-edgecore-integrated-lightweight-kubelet",level:3},{value:"C language Mapper-Framework Support",id:"c-language-mapper-framework-support",level:3},{value:"Upgrade Kubernetes Dependency to v1.31.12",id:"upgrade-kubernetes-dependency-to-v13112",level:3}],s={toc:g};
1function u(e){let{components:t,...r}=e;return(0,n.yg)("wrapper",(0,a.A)({},s,r,{components:t,mdxType:"MDXLayout"}),(0,n.yg)("p",null,"On Nov 4, 2025, KubeEdge released v1.22."),(0,n.yg)("h2",{id:"122-whats-new"},"1.22 What's New"),(0,n.yg)("ul",null,(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("a",{parentName:"li",href:"#add-holdrelease-mechanism-for-controlling-edge-resource-updates"},"Add Hold/Release Mechanism for Controlling Edge Resource Updates")),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("a",{parentName:"li",href:"#beehive-framework-upgrade-supporting-configurable-submodule-restart-policies"},"Beehive Framework Upgrade, Supporting Configurable Submodule Restart Policies")),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("a",{parentName:"li",href:"#device-model-update-based-on-thing-model-and-product-concept"},"Device Model Update Based On Thing Model and Product Concept")),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("a",{parentName:"li",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")),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("a",{parentName:"li",href:"#c-language-mapper-framework-support"},"C language Mapper-Framework Support")),(0,n.yg)("li",{parentName:"ul"},(0,n.yg)("a",{parentName:"li",href:"#upgrade-kubernetes-dependency-to-v13112"},"Upgrade Kubernetes Dependency to v1.31.12"))),(0,n.yg)("h2",{id:"release-highlights"},"Release Highlights"),(0,n.yg)("h3",{id:"add-holdrelease-mechanism-for-controlling-edge-resource-updates"},"Add Hold/Release Mechanism for Controlling Edge Resource Updates"),(0,n.yg)("p",null,"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."),(0,n.yg)("p",null,"On the cloud side, users can indicate that the corresponding Pod should be held on the edge by adding the annotation ",(0,n.yg)("inlineCode",{parentName:"p"},'edge.kubeedge.io/hold-upgrade: "true"')," to resources like Deployment, StatefulSet, and DaemonSet."),(0,n.yg)("p",null,"On the edge, Pods marked with ",(0,n.yg)("inlineCode",{parentName:"p"},'edge.kubeedge.io/hold-upgrade: "true"')," 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:"),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre"},"keadm ctl unhold-upgrade pod <pod-name>\n")),(0,n.yg)("p",null,"Alternatively, they can execute the following command to unlock all held edge resources on the edge node:"),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre"},"keadm ctl unhold-upgrade node\n")),(0,n.yg)("admonition",{type:"note"},(0,n.yg)("p",{parentName:"admonition"},"Using the keadm ctl command requires the DynamicController and MetaServer switches to be enabled.")),(0,n.yg)("p",null,(0,n.yg)("strong",{parentName:"p"},"Refer to the link for more details.(",(0,n.yg)("a",{parentName:"strong",href:"https://github.com/kubeedge/kubeedge/pull/6348"},"#6348"),", ",(0,n.yg)("a",{parentName:"strong",href:"https://github.com/kubeedge/kubeedge/pull/6418"},"#6418"),")")),(0,n.yg)("h3",{id:"beehive-framework-upgrade-supporting-configurable-submodule-restart-policies"},"Beehive Framework Upgrade, Supporting Configurable Submodule Restart Policies"),(0,n.yg)("p",null,"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 ",(0,n.yg)("inlineCode",{parentName:"p"},"Beehive")," framework to support restart policy configurations for edge submodules. We also standardized the error handling for starting ",(0,n.yg)("inlineCode",{parentName:"p"},"Beehive")," submodules."),(0,n.yg)("p",null,(0,n.yg)("strong",{parentName:"p"},"Refer to the link for more details.(",(0,n.yg)("a",{parentName:"strong",href:"https://github.com/kubeedge/kubeedge/pull/6444"},"#6444"),", ",(0,n.yg)("a",{parentName:"strong",href:"https://github.com/kubeedge/kubeedge/pull/6445"},"#6445"),")")),(0,n.yg)("h3",{id:"device-model-update-based-on-thing-model-and-product-concept"},"Device Model Update Based On Thing Model and Product Concept"),
1(0,n.yg)("p",null,"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."),(0,n.yg)("p",null,"In release 1.22, we upgraded the device model design by integrating the concepts of thing models and actual products. We extracted the ",(0,n.yg)("inlineCode",{parentName:"p"},"protocolConfigData")," and ",(0,n.yg)("inlineCode",{parentName:"p"},"visitors")," 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."),(0,n.yg)("p",null,(0,n.yg)("strong",{parentName:"p"},"Refer to the link for more details.(",(0,n.yg)("a",{parentName:"strong",href:"https://github.com/kubeedge/kubeedge/pull/6457"},"#6457"),", ",(0,n.yg)("a",{parentName:"strong",href:"https://github.com/kubeedge/kubeedge/pull/6458"},"#6458"),")")),(0,n.yg)("h3",{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"),(0,n.yg)("p",null,"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."),(0,n.yg)("p",null,"In v1.22.0, we added featuregates for the ",(0,n.yg)("inlineCode",{parentName:"p"},"Pod Resources Server")," and ",(0,n.yg)("inlineCode",{parentName:"p"},"CSI Plugin")," 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:"),(0,n.yg)("pre",null,(0,n.yg)("code",{parentName:"pre"},"apiVersion: edgecore.config.kubeedge.io/v1alpha2\nkind: EdgeCore\nmodules:\n edged:\n tailoredKubeletConfig:\n featureGates:\n KubeletPodResources: true\n DisableCSIVolumePlugin: true\n...\n")),(0,n.yg)("p",null,(0,n.yg)("strong",{parentName:"p"},"Refer to the link for more details.(",(0,n.yg)("a",{parentName:"strong",href:"https://github.com/kubeedge/kubernetes/pull/12"},"kubeedge/kubernetes#12"),", ",(0,n.yg)("a",{parentName:"strong",href:"https://github.com/kubeedge/kubernetes/pull/13"},"kubeedge/kubernetes#13"),", ",(0,n.yg)("a",{parentName:"strong",href:"https://github.com/kubeedge/kubeedge/pull/6452"},"#6452"),")")),(0,n.yg)("h3",{id:"c-language-mapper-framework-support"},"C language Mapper-Framework Support"),(0,n.yg)("p",null,"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 ",(0,n.yg)("inlineCode",{parentName:"p"},"feature-multilingual-mapper-c")," branch in the KubeEdge main repository to generate custom Mapper projects in C using the Mapper Framework."),(0,n.yg)("p",null,(0,n.yg)("strong",{parentName:"p"},"Refer to the link for more details.(",(0,n.yg)("a",{parentName:"strong",href:"https://github.com/kubeedge/kubeedge/pull/6405"},"#6405"),", ",(0,n.yg)("a",{parentName:"strong",href:"https://github.com/kubeedge/kubeedge/pull/6455"},"#6455"),")")),(0,n.yg)("h3",{id:"upgrade-kubernetes-dependency-to-v13112"},"Upgrade Kubernetes Dependency to v1.31.12"),(0,n.yg)("p",null,"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."),(0,n.yg)("p",null,(0,n.yg)("strong",{parentName:"p"},"Refer to the link for more details.(",(0,n.yg)("a",{parentName:"strong",href:"https://github.com/kubeedge/kubeedge/pull/6443"},"#6443"),")")))}u.isMDXComponent=!0}}]);
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.