<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://kubeedge.io/blog</id>
    <title>KubeEdge Blog</title>
    <updated>2026-04-12T00:00:00.000Z</updated>
    <generator>https://github.com/jpmonette/feed</generator>
    <link rel="alternate" href="https://kubeedge.io/blog"/>
    <subtitle>KubeEdge Blog</subtitle>
    <entry>
        <title type="html"><![CDATA[Embodied Intelligence meets KubeEdge-Ianvs: Industrial Assembly Benchmarking]]></title>
        <id>https://kubeedge.io/blog/cncf-lfx-EAI-benchmarking/EAI-meets-KubeEdge-Ianvs</id>
        <link href="https://kubeedge.io/blog/cncf-lfx-EAI-benchmarking/EAI-meets-KubeEdge-Ianvs"/>
        <updated>2026-04-12T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[This blog introduces how to enable comprehensive embodied intelligence benchmarking for industrial manufacturing using the KubeEdge-Ianvs framework.]]></summary>
        <content type="html"><![CDATA[<p>This blog introduces how to enable comprehensive embodied intelligence benchmarking for industrial manufacturing using the KubeEdge-Ianvs framework. <strong>You will see</strong>:
<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'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></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>The 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'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'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 cascades 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">Dataset 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">│   └── 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">Results<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"><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></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'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>This 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'll have a fully operational benchmark capable of evaluating multi-stage robotic assembly workflows.
<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-link" 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">python -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"><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"><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>]]></content>
        <author>
            <name>Ronak Raj</name>
        </author>
        <category label="KubeEdge" term="KubeEdge"/>
        <category label="Ianvs" term="Ianvs"/>
        <category label="Embodied Intelligence" term="Embodied Intelligence"/>
        <category label="Deep Learning" term="Deep Learning"/>
        <category label="Industrial Manufacturing" term="Industrial Manufacturing"/>
        <category label="Robotic Assembly" term="Robotic Assembly"/>
        <category label="Force Control" term="Force Control"/>
        <category label="Computer Vision" term="Computer Vision"/>
        <category label="YOLOv8" term="YOLOv8"/>
        <category label="Edge AI" term="Edge AI"/>
        <category label="Benchmarking" term="Benchmarking"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[KubeEdge v1.22 is live!]]></title>
        <id>https://kubeedge.io/blog/release-v1.22</id>
        <link href="https://kubeedge.io/blog/release-v1.22"/>
        <updated>2025-11-11T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[On Nov 4, 2025, KubeEdge released v1.22.]]></summary>
        <content type="html"><![CDATA[<p>On Nov 4, 2025, KubeEdge released v1.22.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="122-whats-new">1.22 What's New<a href="#122-whats-new" class="hash-link" aria-label="Direct link to 1.22 What's New" title="Direct link to 1.22 What'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: "true"</code> to resources like Deployment, StatefulSet, and DaemonSet.</p><p>On the edge, Pods marked with <code>edge.kubeedge.io/hold-upgrade: "true"</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"><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-link" 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">Upgrade 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>]]></content>
        <author>
            <name>KubeEdge SIG Release</name>
            <uri>https://github.com/kubeedge-bot</uri>
        </author>
        <category label="KubeEdge" term="KubeEdge"/>
        <category label="kubeedge" term="kubeedge"/>
        <category label="edge computing" term="edge computing"/>
        <category label="kubernetes edge computing" term="kubernetes edge computing"/>
        <category label="K8s edge orchestration" term="K8s edge orchestration"/>
        <category label="edge computing platform" term="edge computing platform"/>
        <category label="cloud native" term="cloud native"/>
        <category label="iot" term="iot"/>
        <category label="iiot" term="iiot"/>
        <category label="dashboard" term="dashboard"/>
        <category label="release v1.22" term="release v1.22"/>
        <category label="v1.22" term="v1.22"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[KubeEdge v1.21 is live!]]></title>
        <id>https://kubeedge.io/blog/release-v1.21</id>
        <link href="https://kubeedge.io/blog/release-v1.21"/>
        <updated>2025-06-18T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[On June 28, 2025, KubeEdge released v1.21.]]></summary>
        <content type="html"><![CDATA[<p>On June 28, 2025, KubeEdge released v1.21.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="121-whats-new">1.21 What's New<a href="#121-whats-new" class="hash-link" aria-label="Direct link to 1.21 What's New" title="Direct link to 1.21 What'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-link" 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' understanding. In the new design, the node job status includes Phase (Init, InProgress, Completed, Failure) and nodeStatus.
The nodeStatus consists of Phase (Pending, InProgress, Successful, Failure, Unknown), actionFlow, nodeName, reason, and business-related fields.
A 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">'True'</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">'2025-05-28T08:12:01Z'</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">'True'</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">'2025-05-28T08:12:01Z'</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">'True'</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">'2025-05-28T08:12:01Z'</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">'True'</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">'2025-05-28T08:13:02Z'</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"><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.
With 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">"0.3"</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">"true"</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">"node-role.kubernetes.io/edge"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">""</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">""</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><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.
Additionally, 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"><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.
If 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"><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>]]></content>
        <author>
            <name>KubeEdge SIG Release</name>
            <uri>https://github.com/kubeedge-bot</uri>
        </author>
        <category label="KubeEdge" term="KubeEdge"/>
        <category label="kubeedge" term="kubeedge"/>
        <category label="edge computing" term="edge computing"/>
        <category label="kubernetes edge computing" term="kubernetes edge computing"/>
        <category label="K8s edge orchestration" term="K8s edge orchestration"/>
        <category label="edge computing platform" term="edge computing platform"/>
        <category label="cloud native" term="cloud native"/>
        <category label="iot" term="iot"/>
        <category label="iiot" term="iiot"/>
        <category label="dashboard" term="dashboard"/>
        <category label="release v1.21" term="release v1.21"/>
        <category label="v1.21" term="v1.21"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[KubeEdge v1.20 is live!]]></title>
        <id>https://kubeedge.io/blog/release-v1.20</id>
        <link href="https://kubeedge.io/blog/release-v1.20"/>
        <updated>2025-01-21T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[On January 21, 2025, KubeEdge released v1.20. The new release has enhanced the capabilities of managing and operating edge nodes and applications for large-scale, offline and other edge scenarios. At the same time, it has added support for the multi-language Mapper-Framework.]]></summary>
        <content type="html"><![CDATA[<p>On January 21, 2025, KubeEdge released v1.20. The new release has enhanced the capabilities of managing and operating edge nodes and applications for large-scale, offline and other edge scenarios. At the same time, it has added support for the multi-language Mapper-Framework.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="120-whats-new">1.20 What's New<a href="#120-whats-new" class="hash-link" aria-label="Direct link to 1.20 What's New" title="Direct link to 1.20 What's New">​</a></h2><ul><li><a href="#support-batch-node-process">Support Batch Node Process</a></li><li><a href="#multi-language-mapper-framework-support">Multi-language Mapper-Framework Support</a></li><li><a href="#support-pods-logsexecdescribe-and-devices-geteditdescribe-operation-at-edge-using-keadm-ctl">Support Pods logs/exec/describe and Devices get/edit/describe Operation at Edge Using <code>keadm ctl</code></a></li><li><a href="#decouple-edgeapplications-from-nodegroups-support-node-label-selector">Decouple EdgeApplications from NodeGroups, Support Node Label Selector</a></li><li><a href="#cloudhub-edgehub-supports-ipv6">CloudHub-EdgeHub Supports IPv6</a></li><li><a href="#upgrade-kubernetes-dependency-to-v1307">Upgrade Kubernetes Dependency to v1.30.7</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="support-batch-node-process">Support Batch Node Process<a href="#support-batch-node-process" class="hash-link" aria-label="Direct link to Support Batch Node Process" title="Direct link to Support Batch Node Process">​</a></h3><p>Previously, the keadm tool of KubeEdge only supports manual single-node management. However, in edge scenarios, the scale of nodes is often very large, and the management process of a single node can no longer cope with such large-scale scenarios.</p><p>In v1.20, we have provided the batch node operation and maintenance capability. With this capability, users only need to use one configuration file to perform batch operation and maintenance on all edge nodes through a control node (which can log in to all edge nodes). The supported operation and maintenance capabilities include join, reset, and upgrade.</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain"># Configuration Requirements</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">keadm</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  download</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    enable</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">true</span><span class="token plain">              # &lt;Optional&gt; Whether to download the keadm package</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> which can be left unconfigured</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> default is </span><span class="token boolean" style="color:#36acaa">true</span><span class="token plain">. if it is </span><span class="token boolean" style="color:#36acaa">false</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> the 'offlinePackageDir' will be used.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    url</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">""</span><span class="token plain">                   # &lt;Optional&gt; The download address of the keadm package</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> which can be left unconfigured. If this parameter is not configured</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> the official github repository will be used by default.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  keadmVersion</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">""</span><span class="token plain">            # &lt;Required&gt; The version of keadm to be installed. for example</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> v1.</span><span class="token number" style="color:#36acaa">19.0</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  archGroup</span><span class="token operator" style="color:#393A34">:</span><span class="token plain">                  # &lt;Required&gt; This parameter can configure one or more of amd64/arm64/arm.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    - amd64</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  offlinePackageDir</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">""</span><span class="token plain">       # &lt;Optional&gt; The path of the offline package. When download.enable is </span><span class="token boolean" style="color:#36acaa">true</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> this parameter can be left unconfigured.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  cmdTplArgs</span><span class="token operator" style="color:#393A34">:</span><span class="token plain">                 # &lt;Optional&gt; This parameter is the execution command template</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> which can be optionally configured and used in conjunction with nodes</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">x</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain">.keadmCmd.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    cmd</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">""</span><span class="token plain">                   # This is an example parameter</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> which can be used in conjunction with nodes</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">x</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain">.keadmCmd.</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 plain"> </span><span class="token string" style="color:#e3116c">""</span><span class="token plain">                 # This is an example parameter</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> which can be used in conjunction with nodes</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">x</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain">.keadmCmd.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">nodes</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  - nodeName</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> edge-node       # &lt;Required&gt; Unique name</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> used to identify the node</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    arch</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> amd64               # &lt;Required&gt; The architecture of the node</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> which can be configured as amd64/arm64/arm</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    keadmCmd</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">""</span><span class="token plain">              # &lt;Required&gt; The command to be executed on the node</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> can used in conjunction with keadm.cmdTplArgs. for example</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"{{.cmd}} --edgenode-name=containerd-node1 --token={{.token}}"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    copyFrom</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">""</span><span class="token plain">              # &lt;Optional&gt; The path of the file to be copied from the local machine to the node</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> which can be left unconfigured.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    ssh</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      ip</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">""</span><span class="token plain">                  # &lt;Required&gt; The IP address of the node.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      username</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> root          # &lt;Required&gt; The username of the node</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> need administrator permissions.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      port</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">22</span><span class="token plain">                # &lt;Optional&gt; The port number of the node</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> the default is </span><span class="token number" style="color:#36acaa">22</span><span class="token plain">.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      auth</span><span class="token operator" style="color:#393A34">:</span><span class="token plain">                   # Log in to the node with a private key or password</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> only one of them can be configured.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        type</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> password        # &lt;Required&gt; The value can be configured as 'password' or 'privateKey'.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        passwordAuth</span><span class="token operator" style="color:#393A34">:</span><span class="token plain">         # It can be configured as 'passwordAuth' or 'privateKeyAuth'.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          password</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">""</span><span class="token plain">        # &lt;Required&gt; The key can be configured as 'password' or 'privateKeyPath'.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">maxRunNum</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">5</span><span class="token plain">                  # &lt;Optional&gt; The maximum number of concurrent executions</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> which can be left unconfigured. The default is </span><span class="token number" style="color:#36acaa">5</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"># Configuration Example</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">keadm</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  download</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    enable</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean" style="color:#36acaa">true</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    url</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> https</span><span class="token operator" style="color:#393A34">:</span><span class="token comment" style="color:#999988;font-style:italic">//github.com/kubeedge/kubeedge/releases/download/v1.20.0 # If this parameter is not configured, the official github repository will be used by default</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  keadmVersion</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> v1.</span><span class="token number" style="color:#36acaa">20.0</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  archGroup</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> # This parameter can configure one or more of amd64\arm64\arm</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    - amd64</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  offlinePackageDir</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> /tmp/kubeedge/keadm/package/amd64  # When download.enable is </span><span class="token boolean" style="color:#36acaa">true</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> this parameter can be left unconfigured</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  cmdTplArgs</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> # This parameter is the execution command template</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> which can be optionally configured and used in conjunction with nodes</span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain">x</span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain">.keadmCmd</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    cmd</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> join --cgroupdriver=cgroupfs --cloudcore-ipport=</span><span class="token number" style="color:#36acaa">192.168</span><span class="token plain">.</span><span class="token number" style="color:#36acaa">1.102</span><span class="token operator" style="color:#393A34">:</span><span class="token number" style="color:#36acaa">10000</span><span class="token plain"> --hub-protocol=websocket --certport=</span><span class="token number" style="color:#36acaa">10002</span><span class="token plain"> --image-repository=docker.m.daocloud.io/kubeedge --kubeedge-version=v1.</span><span class="token number" style="color:#36acaa">20.0</span><span class="token plain"> --remote-runtime-endpoint=unix</span><span class="token operator" style="color:#393A34">:</span><span class="token comment" style="color:#999988;font-style:italic">///run/containerd/containerd.sock</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 plain"> xxx</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">nodes</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  - nodeName</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> ubuntu1   # Unique name</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    arch</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> amd64</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    keadmCmd</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> '</span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">.cmd</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"> --edgenode-name=containerd-node1 --token=</span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">.token</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain">' # Used in conjunction with keadm.cmdTplArgs</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    copyFrom</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> /root/test-keadm-batchjoin  # The file directory that needs to be remotely accessed to the joining node</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    ssh</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      ip</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">192.168</span><span class="token plain">.</span><span class="token number" style="color:#36acaa">1.103</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      username</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> root</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      auth</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        type</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> privateKey   # Log in to the node using a private key</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        privateKeyAuth</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          privateKeyPath</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> /root/ssh/id_rsa</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  - nodeName</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> ubuntu2</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    arch</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> amd64</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    keadmCmd</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> join --edgenode-name=containerd-node2 --cgroupdriver=cgroupfs --cloudcore-ipport=</span><span class="token number" style="color:#36acaa">192.168</span><span class="token plain">.</span><span class="token number" style="color:#36acaa">1.102</span><span class="token operator" style="color:#393A34">:</span><span class="token number" style="color:#36acaa">10000</span><span class="token plain"> --hub-protocol=websocket --certport=</span><span class="token number" style="color:#36acaa">10002</span><span class="token plain"> --image-repository=docker.m.daocloud.io/kubeedge --kubeedge-version=v1.</span><span class="token number" style="color:#36acaa">20.0</span><span class="token plain"> --remote-runtime-endpoint=unix</span><span class="token operator" style="color:#393A34">:</span><span class="token comment" style="color:#999988;font-style:italic">///run/containerd/containerd.sock  # Used alone</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    copyFrom</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> /root/test-keadm-batchjoin</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    ssh</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      ip</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">192.168</span><span class="token plain">.</span><span class="token number" style="color:#36acaa">1.104</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      username</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> root</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      auth</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        type</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> password</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        passwordAuth</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          password</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> *****</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">maxRunNum</span><span class="token operator" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">5</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"># Usage</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">keadm batch -c config.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>Refer to the link for more details.(<a href="https://github.com/kubeedge/kubeedge/pull/5988" target="_blank" rel="noopener noreferrer">#5988</a>, <a href="https://github.com/kubeedge/kubeedge/pull/5968" target="_blank" rel="noopener noreferrer">#5968</a>)</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="multi-language-mapper-framework-support">Multi-language Mapper-Framework Support<a href="#multi-language-mapper-framework-support" class="hash-link" aria-label="Direct link to Multi-language Mapper-Framework Support" title="Direct link to Multi-language Mapper-Framework Support">​</a></h3><p>To further reduce the complexity of developing custom Mapper, in this version, KubeEdge provides the Java version of Mapper-Framework. Users can access the KubeEdge <code>feature-multilingual-mapper</code> branch to use Mapper-Framework to generate a Java version of custom Mapper project.</p><p>Refer to the link for more details.(<a href="https://github.com/kubeedge/kubeedge/pull/5773" target="_blank" rel="noopener noreferrer">#5773</a>, <a href="https://github.com/kubeedge/kubeedge/pull/5900" target="_blank" rel="noopener noreferrer">#5900</a>)</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="support-pods-logsexecdescribe-and-devices-geteditdescribe-operation-at-edge-using-keadm-ctl">Support Pods logs/exec/describe and Devices get/edit/describe Operation at Edge Using <code>keadm ctl</code><a href="#support-pods-logsexecdescribe-and-devices-geteditdescribe-operation-at-edge-using-keadm-ctl" class="hash-link" aria-label="Direct link to support-pods-logsexecdescribe-and-devices-geteditdescribe-operation-at-edge-using-keadm-ctl" title="Direct link to support-pods-logsexecdescribe-and-devices-geteditdescribe-operation-at-edge-using-keadm-ctl">​</a></h3><p>In v1.17, a new command <code>keadm ctl</code> has been introduced to support pods query and restart at Edge. In this release, <code>keadm ctl</code> supports more functionality including <code>pod logs/exec/describe</code> and <code>device get/edit/describe</code> to help users operate resources at edge, especially in offline scenarios.</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">[root@edgenode1 ~]# keadm ctl -h</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Commands operating on the data plane at edge</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">Usage:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  keadm ctl [command]</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">Available Commands:</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">  describe    Show details of a specific resource</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  edit        Edit a specific resource</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  exec        Execute command in edge pod</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  get         Get resources in edge node</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  logs        Get pod logs in edge node</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>Refer to the link for more details.(<a href="https://github.com/kubeedge/kubeedge/pull/5752" target="_blank" rel="noopener noreferrer">#5752</a>, <a href="https://github.com/kubeedge/kubeedge/pull/5901" target="_blank" rel="noopener noreferrer">#5901</a>)</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="decouple-edgeapplications-from-nodegroups-support-node-label-selector">Decouple EdgeApplications from NodeGroups, Support Node Label Selector<a href="#decouple-edgeapplications-from-nodegroups-support-node-label-selector" class="hash-link" aria-label="Direct link to Decouple EdgeApplications from NodeGroups, Support Node Label Selector" title="Direct link to Decouple EdgeApplications from NodeGroups, Support Node Label Selector">​</a></h3><p>EdgeApplication can be overrides deployment spec(i.e. replicas, image, commands and environments) via the node group, and pod traffics are closed-loop in a node group(Deployments managed by EdgeApplication share a Service). But in the real scenario, the scope of nodes that need batch operations is different from that of nodes that need to collaborate with each other.</p><p>We add a new targetNodeLabels field for node label selectors in the EdgeApplication CRD, this field will allow the application to deploy based on node labels and apply overrides specific to those nodes.</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"> apps.kubeedge.io/v1alpha1</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"> EdgeApplication</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"> edge</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">app</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">namespace</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> default</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">replicas</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">3</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">image</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> my</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">app</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">image</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">latest</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic"># New field: targetNodeLabels</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">targetNodeLabels</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">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 punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token key atrule" style="color:#00a4db">matchExpressions</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">key</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"region"</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">operator</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> In</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">              </span><span class="token key atrule" style="color:#00a4db">values</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 string" style="color:#e3116c">"HangZhou"</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">overriders</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">containerImage</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"> new</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">image</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">latest</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token key atrule" style="color:#00a4db">resources</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">limits</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">cpu</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"500m"</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">memory</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"128Mi"</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>Refer to the link for more details.(<a href="https://github.com/kubeedge/kubeedge/issues/5755" target="_blank" rel="noopener noreferrer">#5755</a>, <a href="https://github.com/kubeedge/kubeedge/pull/5845" target="_blank" rel="noopener noreferrer">#5845</a>)</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="cloudhub-edgehub-supports-ipv6">CloudHub-EdgeHub Supports IPv6<a href="#cloudhub-edgehub-supports-ipv6" class="hash-link" aria-label="Direct link to CloudHub-EdgeHub Supports IPv6" title="Direct link to CloudHub-EdgeHub Supports IPv6">​</a></h3><p>We provide a configuration guide in the documentation on the official website, which is how KubeEdge enables the cloud-edge hub to support IPv6 in a K8s cluster.</p><p>Refer to the document <a href="https://kubeedge.io/docs/advanced/support_ipv6" target="_blank" rel="noopener noreferrer">https://kubeedge.io/docs/advanced/support_ipv6</a></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="upgrade-kubernetes-dependency-to-v1307">Upgrade Kubernetes Dependency to v1.30.7<a href="#upgrade-kubernetes-dependency-to-v1307" class="hash-link" aria-label="Direct link to Upgrade Kubernetes Dependency to v1.30.7" title="Direct link to Upgrade Kubernetes Dependency to v1.30.7">​</a></h3><p>Upgrade the vendered kubernetes version to v1.30.7, users are now able to use the feature of new version on the cloud and on the edge side.</p><p>Refer to the link for more details. (<a href="https://github.com/kubeedge/kubeedge/issues/5997" target="_blank" rel="noopener noreferrer">#5997</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.20, the default value for the EdgeCore configuration option <code>edged.rootDirectory</code> will change from <code>/var/lib/edged</code> to <code>/var/lib/kubelet</code>. If you wish to continue using the original path, you can set <code>--set edged.rootDirectory=/var/lib/edged</code> when installing EdgeCore with keadm.</li></ul>]]></content>
        <author>
            <name>KubeEdge SIG Release</name>
            <uri>https://github.com/kubeedge-bot</uri>
        </author>
        <category label="KubeEdge" term="KubeEdge"/>
        <category label="kubeedge" term="kubeedge"/>
        <category label="edge computing" term="edge computing"/>
        <category label="kubernetes edge computing" term="kubernetes edge computing"/>
        <category label="K8s edge orchestration" term="K8s edge orchestration"/>
        <category label="edge computing platform" term="edge computing platform"/>
        <category label="cloud native" term="cloud native"/>
        <category label="iot" term="iot"/>
        <category label="iiot" term="iiot"/>
        <category label="dashboard" term="dashboard"/>
        <category label="release v1.20" term="release v1.20"/>
        <category label="v1.20" term="v1.20"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Getting started with KubeEdge Dashboard]]></title>
        <id>https://kubeedge.io/blog/dashboard-getting-started</id>
        <link href="https://kubeedge.io/blog/dashboard-getting-started"/>
        <updated>2024-12-12T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[In KubeEdge v1.19, we introduced a new version of the KubeEdge Dashboard. This version of KubeEdge Dashboard is built with the Next.js framework and the MUI component library to offer better performance. Meanwhile, we have optimized and enhanced several modules of the KubeEdge Dashboard, including the device management and device model management modules.]]></summary>
        <content type="html"><![CDATA[<p>In KubeEdge v1.19, we introduced a new version of the KubeEdge Dashboard. This version of KubeEdge Dashboard is built with the Next.js framework and the MUI component library to offer better performance. Meanwhile, we have optimized and enhanced several modules of the KubeEdge Dashboard, including the device management and device model management modules.</p><p>In this article, we will introduce how to deploy and use the KubeEdge Dashboard.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="environment-pre-requisites">Environment Pre-requisites<a href="#environment-pre-requisites" class="hash-link" aria-label="Direct link to Environment Pre-requisites" title="Direct link to Environment Pre-requisites">​</a></h2><p>We can obtain the source code of KubeEdge Dashboard from the <a href="https://github.com/kubeedge/dashboard" target="_blank" rel="noopener noreferrer">KubeEdge Dashboard GitHub repository</a>. Before building and deploying KubeEdge Dashboard, please ensure the following environment is set up:</p><ul><li><strong>KubeEdge Cluster</strong>: Please refer to the <a href="https://release-1-19.docs.kubeedge.io/docs/category/setup" target="_blank" rel="noopener noreferrer">KubeEdge official documentation</a> to set up a KubeEdge cluster. KubeEdge Dashboard requires KubeEdge v1.15 or later versions.</li><li><strong>Node.js</strong>: Install Node.js on your system, it is recommended to use Node.js v18 or later versions.</li><li><strong>Node.js Package Manager</strong>: Install a Node.js package manager, such as npm, yarn, or pnpm.</li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="building-and-deploying">Building and Deploying<a href="#building-and-deploying" class="hash-link" aria-label="Direct link to Building and Deploying" title="Direct link to Building and Deploying">​</a></h2><p>Once the environment is set up and the KubeEdge Dashboard source code has been downloaded, we can use the Node.js package manager to start the KubeEdge Dashboard. In the following instructions, we will use pnpm as the example to show how to install dependencies and run KubeEdge Dashboard.</p><p>First of all, we need to install the dependencies:</p><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 function" style="color:#d73a49">pnpm</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">install</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>KubeEdge Dashboard interacts with KubeEdge resources via the Kubernetes API. Therefore, we need to set the API_SERVER environment variable to specify the API Server address:</p><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 function" style="color:#d73a49">pnpm</span><span class="token plain"> run build</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token assign-left variable" style="color:#36acaa">API_SERVER</span><span class="token operator" style="color:#393A34">=</span><span class="token plain">https://192.168.33.129:6443 </span><span class="token function" style="color:#d73a49">pnpm</span><span class="token plain"> run start</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>After starting KubeEdge Dashboard, open <code>http://localhost:3000</code> in your browser to access the dashboard.</p><p>For the KubeEdge cluster with self-signed certificates, we need to set the <code>NODE_TLS_REJECT_UNAUTHORIZED=0</code> environment variable to bypass certificate verification:</p><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 assign-left variable" style="color:#36acaa">NODE_TLS_REJECT_UNAUTHORIZED</span><span class="token operator" style="color:#393A34">=</span><span class="token number" style="color:#36acaa">0</span><span class="token plain"> </span><span class="token assign-left variable" style="color:#36acaa">API_SERVER</span><span class="token operator" style="color:#393A34">=</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token plain">api-server</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">pnpm</span><span class="token plain"> run start</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><h2 class="anchor anchorWithStickyNavbar_LWe7" id="creating-a-login-token">Creating a Login Token<a href="#creating-a-login-token" class="hash-link" aria-label="Direct link to Creating a Login Token" title="Direct link to Creating a Login Token">​</a></h2><p>To authenticate with KubeEdge Dashboard, we need to create a token for login. The following instructions show how to create a service account <code>dashboard-user</code> in the <code>kube-system</code> namespace and generate a token for authentication.</p><p>First, we need to create a service account in the Kubernetes cluster:</p><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">kubectl create serviceaccount dashboard-user -n kube-system</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>To grant permissions to the service account, we need to create a cluster role binding that associates the service account with a cluster role. Kubernetes provides some built-in cluster roles, such as <code>cluster-admin</code>, which has access to all resources in the cluster. We can also refer to the <a href="https://kubernetes.io/docs/reference/access-authn-authz/rbac/" target="_blank" rel="noopener noreferrer">Kubernetes documentation</a> to create a custom cluster role if needed.</p><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">kubectl create clusterrolebinding dashboard-user-binding --clusterrole</span><span class="token operator" style="color:#393A34">=</span><span class="token plain">cluster-admin --serviceaccount</span><span class="token operator" style="color:#393A34">=</span><span class="token plain">kube-system:dashboard-user -n kube-system</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>Since Kubernetes v1.24, secrets for service accounts are no longer created automatically. We need to create an associated token by the <code>kubectl create token</code> command. The lifetime of the token will be determined by the server automatically, and we can specify the lifetime of the token by the <code>--duration</code> option.</p><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">kubectl create token dashboard-user -n kube-system</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>For Kubernetes v1.23 and earlier versions, Kubernetes automatically creates a secret for the service account. We can retrieve the secret by the <code>kubectl describe secret</code> command:</p><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">kubectl describe secret -n kube-system </span><span class="token variable" style="color:#36acaa">$(</span><span class="token variable" style="color:#36acaa">kubectl get secret -n kube-system </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"> dashboard-user </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">awk</span><span class="token variable" style="color:#36acaa"> </span><span class="token variable string" style="color:#e3116c">'{print $1}'</span><span class="token variable" style="color:#36acaa">)</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><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>With KubeEdge Dashboard, we can more easily manage KubeEdge resources such as edge applications and devices. We will continue to enhance and optimize the KubeEdge Dashboard and user experience in future releases. We also welcome feedback and suggestions from the community.</p><p>For more information on KubeEdge Dashboard, please refer to the <a href="https://github.com/kubeedge/dashboard" target="_blank" rel="noopener noreferrer">KubeEdge Dashboard GitHub repository</a>.</p>]]></content>
        <author>
            <name>KubeEdge</name>
            <uri>https://github.com/kubeedge-bot</uri>
        </author>
        <category label="KubeEdge" term="KubeEdge"/>
        <category label="Dashboard" term="Dashboard"/>
        <category label="edge computing" term="edge computing"/>
        <category label="kubernetes edge computing" term="kubernetes edge computing"/>
        <category label="K8S edge orchestration" term="K8S edge orchestration"/>
        <category label="edge computing platform" term="edge computing platform"/>
        <category label="cloud native" term="cloud native"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[KubeEdge v1.19 is live!]]></title>
        <id>https://kubeedge.io/blog/release-v1.19</id>
        <link href="https://kubeedge.io/blog/release-v1.19"/>
        <updated>2024-10-28T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[On Oct 28, 2024, KubeEdge released v1.19. The new release introduces several new features for edge nodes and devices, along with a completely revamped Dashboard.]]></summary>
        <content type="html"><![CDATA[<p>On Oct 28, 2024, KubeEdge released v1.19. The new release introduces several new features for edge nodes and devices, along with a completely revamped Dashboard.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="119-whats-new">1.19 What's New<a href="#119-whats-new" class="hash-link" aria-label="Direct link to 1.19 What's New" title="Direct link to 1.19 What's New">​</a></h2><ul><li><a href="#support-edge-nodes-report-event">Support Edge Nodes Report Event</a></li><li><a href="#support-otaover-the-air-upgrades-for-edge-nodes">Support OTA(Over-The-Air) Upgrades for Edge Nodes</a></li><li><a href="#mapper-supports-device-data-writing">Mapper Supports Device Data Writing</a></li><li><a href="#add-opentelemetry-to-mapper-framework">Add OpenTelemetry to Mapper-framework</a></li><li><a href="#a-new-release-of-kubeedge-dashboard">A New Release of KubeEdge Dashboard</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="support-edge-nodes-report-event">Support Edge Nodes Report Event<a href="#support-edge-nodes-report-event" class="hash-link" aria-label="Direct link to Support Edge Nodes Report Event" title="Direct link to Support Edge Nodes Report Event">​</a></h3><p>Kubernetes Event serve as a report of an event somewhere in the cluster, reflecting status changes of cluster resources such as Nodes and Pods. In v1.19, EdgeCore supports reporting events to cloud, allowing users to directly access the status of edge nodes or Pods in the cloud via <code>kubectl get events</code> or <code>kubectl describe {resource_type} {resource_name}</code>.</p><p>This feature is disabled by default in v1.19. To enable it, execute <code>--set modules.edged.reportEvent=true</code> when install EdgeCore with keadm or modify the EdgeCore configuration file and then restart EdgeCore.</p><p>Refer to the link for more details.(<a href="https://github.com/kubeedge/kubeedge/pull/5722" target="_blank" rel="noopener noreferrer">#5722</a>, <a href="https://github.com/kubeedge/kubeedge/pull/5811" target="_blank" rel="noopener noreferrer">#5811</a>)</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="support-otaover-the-air-upgrades-for-edge-nodes">Support OTA(Over-The-Air) Upgrades for Edge Nodes<a href="#support-otaover-the-air-upgrades-for-edge-nodes" class="hash-link" aria-label="Direct link to Support OTA(Over-The-Air) Upgrades for Edge Nodes" title="Direct link to Support OTA(Over-The-Air) Upgrades for Edge Nodes">​</a></h3><p>On the basis of NodeUpgradeJob upgrade, we add the edge node confirmation card point and the validation of the image digest. The card point confirmation allows the node upgrade to be delivered to the edge side, and the upgrade can be performed only after the user is confirmed. Image digest validation can ensure that the kubeedge/installation-pacakge image to be upgraded is secure and reliable at the edge side.</p><p>In v1.19, we can use <code>spec.imageDigestGatter</code> in NodeUpgradeJob to define how to get the image digest. The <code>value</code> to directly define the digest, The <code>registryAPI</code> to get the mirror digest via registry v2 API, both are mutually exclusive. If none is configured, the image digest is not verified during the upgrade.</p><p>We can also use <code>spec.requireConfirmation</code> to configure requireConfirmation for NodeUpgradeJob to determine whether we want to confirm at the edge side.</p><p>Refer to the link for more details.(<a href="https://github.com/kubeedge/kubeedge/issues/5589" target="_blank" rel="noopener noreferrer">#5589</a>, <a href="https://github.com/kubeedge/kubeedge/pull/5761" target="_blank" rel="noopener noreferrer">#5761</a>, <a href="https://github.com/kubeedge/kubeedge/pull/5863" target="_blank" rel="noopener noreferrer">#5863</a>)</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="mapper-supports-device-data-writing">Mapper Supports Device Data Writing<a href="#mapper-supports-device-data-writing" class="hash-link" aria-label="Direct link to Mapper Supports Device Data Writing" title="Direct link to Mapper Supports Device Data Writing">​</a></h3><p>In v1.19, we add the ability to write device data in Mapper-Framework. User can use device methods through the API provided by Mapper and complete data writing to device properties.</p><ul><li>Device method API</li></ul><p>A new definition of device methods is added in new release. Users can define device methods in the device-instance file that can be called by the outside world in device. Through device methods, users can control and write data to device properties.</p><ul><li>Device data writing</li></ul><p>In v1.19, the Mapper API capability is improved and a new device method interface is added. The user can use the relevant interface to obtain all the device methods contained in a device, as well as the calling command of the device method.  Through the returned calling command, user can create a device write request to write data to device.</p><p>Refer to the link for more details.(<a href="https://github.com/kubeedge/kubeedge/pull/5662" target="_blank" rel="noopener noreferrer">#5662</a>, <a href="https://github.com/kubeedge/kubeedge/pull/5902" target="_blank" rel="noopener noreferrer">#5902</a>)</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="add-opentelemetry-to-mapper-framework">Add OpenTelemetry to Mapper-framework<a href="#add-opentelemetry-to-mapper-framework" class="hash-link" aria-label="Direct link to Add OpenTelemetry to Mapper-framework" title="Direct link to Add OpenTelemetry to Mapper-framework">​</a></h3><p>In v1.19, we add the OpenTelemetry observability framework to mapper data plane, which can encapsulate device data and push data to multiple types of applications or databases. This feature can enhance the mapper data plane's ability to push device data.</p><p>Refer to the link for more details.(<a href="https://github.com/kubeedge/kubeedge/pull/5628" target="_blank" rel="noopener noreferrer">#5628</a>)</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="a-new-release-of-kubeedge-dashboard">A New Release of KubeEdge Dashboard<a href="#a-new-release-of-kubeedge-dashboard" class="hash-link" aria-label="Direct link to A New Release of KubeEdge Dashboard" title="Direct link to A New Release of KubeEdge Dashboard">​</a></h3><p>Based on previous Dashboard release, we have refactored the KubeEdge Dashboard using the more popular frameworks Next.js and MUI. In the new release, we rewrote and optimized around 60 pages and components, reducing about 70% of redundant code. We also upgraded the KubeEdge and native Kubernetes APIs to the latest version to maintain compatibility and added TypeScript definitions for the APIs.</p><p>Refer to the link for more details.(<a href="https://github.com/kubeedge/dashboard/pull/29" target="_blank" rel="noopener noreferrer">#29</a>)</p><p><img loading="lazy" src="/assets/images/dashboard-f6992cda188faaeeda440fdf6e37ffcf.jpg" width="2320" height="1470" class="img_ev3q"></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><p>In the next release (v1.20), the default value for the EdgeCore configuration option <code>edged.rootDirectory</code> will change from <code>/var/lib/edged</code> to <code>/var/lib/kubelet</code>. If you wish to continue using the original path, you can set <code>--set edged.rootDirectory=/var/lib/edged</code> when installing EdgeCore with keadm.</p></li><li><p>In v1.19, please use <code>--kubeedge-version</code> to specify the version when installing KubeEdge with keadm, <code>--profile version</code> is no longer supported.</p></li></ul>]]></content>
        <author>
            <name>KubeEdge SIG Release</name>
            <uri>https://github.com/kubeedge-bot</uri>
        </author>
        <category label="KubeEdge" term="KubeEdge"/>
        <category label="kubeedge" term="kubeedge"/>
        <category label="edge computing" term="edge computing"/>
        <category label="kubernetes edge computing" term="kubernetes edge computing"/>
        <category label="K8s edge orchestration" term="K8s edge orchestration"/>
        <category label="edge computing platform" term="edge computing platform"/>
        <category label="cloud native" term="cloud native"/>
        <category label="iot" term="iot"/>
        <category label="iiot" term="iiot"/>
        <category label="dashboard" term="dashboard"/>
        <category label="release v1.19" term="release v1.19"/>
        <category label="v1.19" term="v1.19"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[KubeEdge has Graduated within the CNCF!]]></title>
        <id>https://kubeedge.io/blog/cncf-graduation-announcement</id>
        <link href="https://kubeedge.io/blog/cncf-graduation-announcement"/>
        <updated>2024-10-17T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[SAN FRANCISCO, Calif. – October 15, 2024 – The Cloud Native Computing Foundation® (CNCF®), which builds sustainable ecosystems for cloud native software, announced the graduation of KubeEdge.]]></summary>
        <content type="html"><![CDATA[<p><strong>SAN FRANCISCO, Calif. – October 15, 2024</strong> – The Cloud Native Computing Foundation® (CNCF®), which builds sustainable ecosystems for cloud native software, announced the graduation of KubeEdge.</p><p>We would like to thank our TOC sponsors <strong>Cathy Zhang and Lin Sun</strong>, and everyone who has collaborated over the past six years
on KubeEdge’s design, development, and deployment.</p><p>KubeEdge is an open source edge computing project built on Kubernetes, which expands the cloud native ecosystem to scenarios and industries
outside of data centers. It extends Kubernetes’ native container orchestration and scheduling capabilities to the edge and provides capabilities
such as edge application management, cloud-edge metadata synchronization, and edge IoT device management.</p><p>KubeEdge was open sourced by Huawei Cloud in November 2018. It was accepted as the first cloud native edge project in the CNCF Sandbox project in 2019
and was promoted to an incubating project in September 2020.</p><p>Since joining CNCF, the project team has grown to include maintainers from 15 organizations and has attracted over 1,600 contributors from more than 35 countries and
110 organizations. Contributing organizations include Huawei Cloud, DaoCloud, HarmonyCloud, China Unicom, Inovex, ARM, QingCloud Technology, BoCloud, China Mobile, Inspur,
Sony, China Telecom, Zhejiang Lab, SEL Laboratory of Zhejiang University, Beijing University of Posts and Telecommunications, and University of Electronic Science and Technology of China.</p><p>“KubeEdge started with a vision to extend cloud native technology to the edge and foster a robust edge-cloud computing ecosystem. Today, it has been adopted across numerous
innovative and unforeseen fields. This achievement is a testament to the incredible creativity and dedication of our contributors, whose efforts have driven the project’s success,” said Kevin Wang and Yin Ding, KubeEdge TSC members.
“Graduation marks a new beginning, and we are excited to explore even greater possibilities for the entire cloud native ecosystem.”</p><p>KubeEdge has been widely applied in various industries, including CDN, intelligent transportation, smart energy, smart retail, smart parks, automobiles, intelligent logistics, finance, power, and blockchain.
It has been deployed in industry-leading projects such as the largest cloud native cloud-edge collaborative highway toll station management project, the first cloud native satellite-ground collaborative satellite,
the first cloud native electric vehicle, and more.</p><p>“Kubernetes was born through usage across massive data centers but has evolved, just like Linux, for new environments and has become a leading platform in edge computing,” said Chris Aniszczyk, CTO, CNCF.
“KubeEdge has been at the forefront of this transformation, bringing Kubernetes into new frontiers from electric cars to outer space. We look forward to seeing where the KubeEdge project goes next as a graduate project.”</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="supporting-quotes">Supporting Quotes:<a href="#supporting-quotes" class="hash-link" aria-label="Direct link to Supporting Quotes:" title="Direct link to Supporting Quotes:">​</a></h3><p><strong>Huawei</strong></p><p>“Since it was open sourced, KubeEdge has received the attention and support of industry partners and end users. It has achieved breakthrough innovative practices in industry fields such as intelligent transportation, finance, energy, electric vehicles, robotics, and logistics. The graduation of KubeEdge will further promote the cloud native digital transformation of enterprises and release greater industrial value. As a pioneer and popularizer of cloud native technology, Huawei Cloud will continue to cooperate with CNCF and the community in the future to jointly promote the development of the cloud native industry.”</p><p>– Bruno Zhang, CTO, Huawei Cloud</p><p><strong>DaoCloud</strong></p><p>“The graduation of KubeEdge marks a significant milestone in the field of Cloud Native Edge computing. As the official first edge computing project of CNCF, KubeEdge provides robust computing and management support for resource-constrained edge devices, and its graduation signifies the technological maturity and industry recognition of Cloud Native Edge computing. Since the launch of the KubeEdge project, the DaoCloud team has actively participated, and contributed our extensive expertise on project governance/core tech development and customer promotion in manufacturing and retail sectors. In the future, we will continue to collaborate with the KubeEdge community to provide more flexible, secure, and efficient solutions to global enterprises and developers, and shape a new era of smart edges.”</p><p>– Hongbing Zhang, COO, DaoCloud</p><p><strong>HarmonyCloud</strong></p><p>“Congratulations on the successful graduation of KubeEdge open source project! As a member of KubeEdge Technical Steering Committee (TSC) team, it has been a pleasure to witness the journey of KubeEdge from incubation to graduation. From discovery, trial use and issue raising, pull request raising, feature raising, application and promotion, KubeEdge is an important component in the core technology framework of the cloud edge computing team to provide customers with edge computing product delivery. We have edge computing landing cases in telecommunication, finance, transportation, energy, bridges, logistics, military and other fields. KubeEdge has always kept its design clean and architecture clear, thanks to every open source contributor, bringing great flexibility to applications across the edge computing industry. In the future, HarmonyCloud will also continuously participate in the KubeEdge community and jointly promote the development of the cloud native edge computing industry to release the ubiquitous value of cloud native!”</p><p>– Huan Wei, Senior Director &amp; Head of Edge Computing, HarmonyCloud</p><p><strong>QingCloud</strong></p><p>“Since it was open sourced, KubeEdge has led the trend of cloud native edge computing with its unique architecture, exerting huge influence and demonstration effect. While promoting the application of cloud native technology, it also promotes the development of edge computing. With the adoption of increasingly heavyweight industry users and the participation of numerous community contributors worldwide, it is an honor to witness the entire process of KubeEdge from incubation to graduation as a member of the KubeEdge Technical Steering Committee (TSC). Congratulations to the KubeEdge project on becoming the first edge computing project to graduate from CNCF! As the core maintainer of KubeSphere, while deeply participating in the KubeEdge project, QingCloud Technology has also been actively promoting the implementation of KubeEdge in various industries. We aim to promote the development of edge computing together with many domestic and foreign counterparts and community users!”</p><p>– Benjamin Huo, Lead of  Observability and Edge Computing, QingCloud</p><p><strong>ByteDance</strong></p><p>“It is a great pleasure to witness the graduation of KubeEdge from CNCF. This milestone not only embodies the collective efforts of the community but also signals that cloud native edge computing has entered a new stage of maturity. In the future, we will continue to closely cooperate with global developers and partners to promote the innovation and application of edge computing technology and accelerate the digital transformation of various industries.”</p><p>– Tina Tsou, KubeEdge Technical Steering Committee (TSC) Member, ByteDance</p><p><strong>BoCloud</strong></p><p>“KubeEdge is the longest-lasting and most active project of edge computing architecture software. It has an extremely profound influence on the industry and has been widely adopted in the intelligent transformation of industries such as industry, transportation, and equipment manufacturing, making positive contributions to the promotion of the intelligent manufacturing plan. The KubeEdge community has attracted many open source contributors and cooperation projects with an active and open attitude. The open source edge network and storage components such as FabEdge and Carina from BoCloud have achieved good compatibility and project applications, and multiple project practices of cloud-edge-end AI model transfer, model conversion and loading have been implemented. The graduation of KubeEdge indicates the arrival of the mature stage of edge computing technology and the period of rapid industrial development. It is believed that the project will definitely gain more practical applications in the future. BoCloud is willing to jointly promote industrialization development with the project community and support the implementation of more scenarios.”</p><p>– Ji Cui, Vice President, BoCloud</p><p><strong>Sony</strong></p><p>“It is the most exciting news to see the graduation of KubeEdge from CNCF, which shouts out production-ready Kubernetes edge solutions. KubeEdge extends the orchestration capability down to edge environments to provide unified cluster management and sophisticated edge-specific features.</p><p>We are confident to see KubeEdge be applied to many more use cases in the near future, especially for edge computing such as robotics distributed systems, and AI/ML application deployment at edge. Not only development but also community engagement and growth are really important for open source based activity. KubeEdge also has been doing great work to encourage the developers and users to be engaged in the community, that really works to design the KubeEdge that can support broad use cases and requirements at edge environment and business logics. We will continue to engage and support KubeEdge development and community.”</p><p>– Tomoya FUjita, Software Engineer, Sony Corporation of America</p><p><strong>NIO</strong></p><p>“As a platform specifically developed for cloud-edge collaboration, KubeEdge can effectively address the challenges such as computing resource limited, a vast number of edge nodes, and differences in operating environments that the automotive field faces when applying the cloud native technology stack. After extensive research work, we have built NIO’s entire vehicle-cloud collaboration platform with KubeEdge as the core and used it in mass-produced vehicle models for the first time, bringing significant improvements in development and delivery efficiency, team collaboration, and so on. It will also achieve ultra-large-scale vehicle management. Hereby, we congratulate KubeEdge on its graduation. We also look forward to having deeper cooperation with the community, continuing to promote the development of the KubeEdge community, and continuously building innovative applications of cloud native solutions in the revolutionary EV field.”</p><p>– Saint Jiang, Architect of Digital Systems, Strategic New Business, NlO</p><p><strong>Zeblok</strong></p><p>“With KubeEdge’s graduation from CNCF, the edge computing landscape reaches a new frontier. At Zeblok Computational Inc., we’re thrilled to incorporate KubeEdge into our Ai-MicroCloud, delivering cutting-edge AI capabilities directly to the edge. This synergy drives innovation where real-time intelligence matters most.”– Vikarna Tathe, Platform Engineering Lead, Zeblok Computational Inc.</p><p><strong>OEHI</strong></p><p>“KubeEdge officially reaching the next level of maturity at CNCF is a strong recognition of the successful development efforts around this technology. The Open Edge and HPC Initiative (OEHI) strongly believes in the potential of KubeEdge as a key element of upcoming compute continuum infrastructures. To train people for this new paradigm of computing infrastructure design, OEHI co-organised a tutorial at ISC HPC 2024 where participants could get first-hand experience with KubeEdge. In the future, we will continue to promote this technology.”</p><p>– Dirk Pleiter, Chair, OEHI</p><p><strong>SF Technology</strong></p><p>“The graduation of the KubeEdge is exciting. It is a rising star in the field of cloud native edge computing. SF Technology has been deeply involved in the logistics field for many years. KubeEdge is like a powerful assistant for us to move towards intelligence. From the efficient operation of logistics sorting to the full life cycle processing of transportation links, the edge computing capabilities provided by KubeEdge help us create a smarter and more efficient logistics system. In its development process, we have witnessed its growth and transformation, and we have also actively integrated it into our business scenarios. SF Technology looks forward to walking hand in hand with KubeEdge and continuously exploring new possibilities in the future, pushing the intelligence of the logistics industry to a new height and allowing edge computing to play a greater value in the circulation of every package.”</p><p>– Panggang Cheng, Lead of Edge Cloud Container Product, SF Technology</p><p>In the future, the KubeEdge community will keep the open governance model as well as the collaborative concept, and will further improve the user experience, providing a more reliable and stable experience for users. Meanwhile, KubeEdge will continue to explore new areas, such as cloud edge collaborative AI, cloud edge collaborative robots, and edge cluster management.</p><ul><li>To learn more about KubeEdge:</li><li>Check out the project <a href="https://kubeedge.io/" target="_blank" rel="noopener noreferrer">website</a> and <a href="https://github.com/kubeedge/kubeedge" target="_blank" rel="noopener noreferrer">GitHub repository</a>.</li><li>Read the <a href="https://kubeedge.io/docs/" target="_blank" rel="noopener noreferrer">documentation</a>.</li><li>Join the community <a href="https://kubeedge.io/docs/community/slack" target="_blank" rel="noopener noreferrer">Slack</a>.</li><li>Follow the project on <a href="https://x.com/kubeedge" target="_blank" rel="noopener noreferrer">X</a>.</li></ul>]]></content>
        <author>
            <name>KubeEdge</name>
            <uri>https://github.com/kubeedge-bot</uri>
        </author>
        <category label="KubeEdge" term="KubeEdge"/>
        <category label="edge computing" term="edge computing"/>
        <category label="kubernetes edge computing" term="kubernetes edge computing"/>
        <category label="K8S edge orchestration" term="K8S edge orchestration"/>
        <category label="edge computing platform" term="edge computing platform"/>
        <category label="cncf graduation" term="cncf graduation"/>
        <category label="cloud native" term="cloud native"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[KubeEdge v1.18 is live!]]></title>
        <id>https://kubeedge.io/blog/release-v1.18</id>
        <link href="https://kubeedge.io/blog/release-v1.18"/>
        <updated>2024-07-26T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[On July 26, 2024, KubeEdge released v1.18. The new release features significant improvements in stability and security, while also enhancing usability.]]></summary>
        <content type="html"><![CDATA[<p>On July 26, 2024, KubeEdge released v1.18. The new release features significant improvements in stability and security, while also enhancing usability.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="118-whats-new">1.18 What's New<a href="#118-whats-new" class="hash-link" aria-label="Direct link to 1.18 What's New" title="Direct link to 1.18 What's New">​</a></h2><ul><li><a href="#router-manager-support-high-availabilityha">Router Manager Support High Availability</a></li><li><a href="#authorization-enhancement-for-cloudcore-websocket-api">Authorization Enhancement for CloudCore Websocket API</a></li><li><a href="#support-device-status-reporting">Support Device Status Reporting</a></li><li><a href="#keadm-tool-enhancement">Keadm Tool Enhancement</a></li><li><a href="#encapsulate-token-ca-and-certificate-operations">Encapsulate Token, CA and Certificate operations</a></li><li><a href="#upgrade-kubernetes-dependency-to-v1296">Upgrade Kubernetes Dependency to v1.29.6</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="router-manager-support-high-availabilityha">Router Manager Support High Availability(HA)<a href="#router-manager-support-high-availabilityha" class="hash-link" aria-label="Direct link to Router Manager Support High Availability(HA)" title="Direct link to Router Manager Support High Availability(HA)">​</a></h3><p>When CloudCore adopts high availability deployment, RouterManager needs to determine whether to route messages to the correct CloudCore. This feature is already supported in v1.18.0, and RouterManager supports high availability.</p><p>Refer to the link for more details.(<a href="https://github.com/kubeedge/kubeedge/pull/5619" target="_blank" rel="noopener noreferrer">#5619</a>, <a href="https://github.com/kubeedge/kubeedge/pull/5635" target="_blank" rel="noopener noreferrer">#5635</a>)</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="authorization-enhancement-for-cloudcore-websocket-api">Authorization Enhancement for CloudCore Websocket API<a href="#authorization-enhancement-for-cloudcore-websocket-api" class="hash-link" aria-label="Direct link to Authorization Enhancement for CloudCore Websocket API" title="Direct link to Authorization Enhancement for CloudCore Websocket API">​</a></h3><p>CloudCore need restrict the access to cluster resources for edge nodes. In this release，CloudCore supports node authorization mode. CloudHub identify the sender of messages and check whether the sender has sufficient permissions, so that CloudCore can restrict an edge node from operating the resources owned by other edge nodes.</p><p>Refer to the link for more details.(<a href="https://github.com/kubeedge/kubeedge/pull/5512" target="_blank" rel="noopener noreferrer">#5512</a>, <a href="https://github.com/kubeedge/kubeedge/pull/5585" target="_blank" rel="noopener noreferrer">#5585</a>)</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="support-device-status-reporting">Support Device Status Reporting<a href="#support-device-status-reporting" class="hash-link" aria-label="Direct link to Support Device Status Reporting" title="Direct link to Support Device Status Reporting">​</a></h3><p>Device status reporting is a capability required for device management. It was previously planned but not implemented. In version 1.18, we support this feature. Device status reporting can be easily implemented based on the community mapper template.</p><p>Refer to the link for more details.(<a href="https://github.com/kubeedge/kubeedge/pull/5649" target="_blank" rel="noopener noreferrer">#5649</a>, <a href="https://github.com/kubeedge/kubeedge/pull/5650" target="_blank" rel="noopener noreferrer">#5650</a>)</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="keadm-tool-enhancement">Keadm Tool Enhancement<a href="#keadm-tool-enhancement" class="hash-link" aria-label="Direct link to Keadm Tool Enhancement" title="Direct link to Keadm Tool Enhancement">​</a></h3><p>Before this release, keadm(KubeEdge Installation Tool) is only supported to configure a subset of parameters before EdgeCore was installed. Now we can use the '--set' flag to configure the parameters of the full configuration edgecore.yaml file, so that users can customize the parameters at installation time, without having to modify the configuration and restart the service after installation.</p><p>Refer to the link for more details.(<a href="https://github.com/kubeedge/kubeedge/pull/5564" target="_blank" rel="noopener noreferrer">#5564</a>, <a href="https://github.com/kubeedge/kubeedge/pull/5574" target="_blank" rel="noopener noreferrer">#5574</a>)</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="encapsulate-token-ca-and-certificate-operations">Encapsulate Token, CA and Certificate operations<a href="#encapsulate-token-ca-and-certificate-operations" class="hash-link" aria-label="Direct link to Encapsulate Token, CA and Certificate operations" title="Direct link to Encapsulate Token, CA and Certificate operations">​</a></h3><p>We refactor the token and certificate-related codes, summarize the same businesses, and abstract the ability of certificates to improve scalability, maintainability, and readability.</p><p>Refer to the link for more details.(<a href="https://github.com/kubeedge/kubeedge/pull/5502" target="_blank" rel="noopener noreferrer">#5502</a>, <a href="https://github.com/kubeedge/kubeedge/pull/5544" target="_blank" rel="noopener noreferrer">#5544</a>)</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="upgrade-kubernetes-dependency-to-v1296">Upgrade Kubernetes Dependency to v1.29.6<a href="#upgrade-kubernetes-dependency-to-v1296" class="hash-link" aria-label="Direct link to Upgrade Kubernetes Dependency to v1.29.6" title="Direct link to Upgrade Kubernetes Dependency to v1.29.6">​</a></h3><p>Upgrade the vendered kubernetes version to v1.29.6, users are now able to use the feature of new version on the cloud and on the edge side.</p><p>Refer to the link for more details. (<a href="https://github.com/kubeedge/kubeedge/pull/5656" target="_blank" rel="noopener noreferrer">#5656</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>The CloudCore Authorization feature is disabled by default in release 1.18. If you need to use this feature, please set <code>cloudhub.authorization.enable=true</code>.</li></ul>]]></content>
        <author>
            <name>KubeEdge SIG Release</name>
            <uri>https://github.com/kubeedge-bot</uri>
        </author>
        <category label="KubeEdge" term="KubeEdge"/>
        <category label="kubeedge" term="kubeedge"/>
        <category label="edge computing" term="edge computing"/>
        <category label="kubernetes edge computing" term="kubernetes edge computing"/>
        <category label="K8s edge orchestration" term="K8s edge orchestration"/>
        <category label="edge computing platform" term="edge computing platform"/>
        <category label="cloud native" term="cloud native"/>
        <category label="iot" term="iot"/>
        <category label="iiot" term="iiot"/>
        <category label="release v1.18" term="release v1.18"/>
        <category label="v1.18" term="v1.18"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[KubeEdge meets Cilium !!!]]></title>
        <id>https://kubeedge.io/blog/enable-cilium</id>
        <link href="https://kubeedge.io/blog/enable-cilium"/>
        <updated>2024-06-04T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[This blog introduces how to enable Cilium Container Network Interface with KubeEdge.]]></summary>
        <content type="html"><![CDATA[<p>This blog introduces how to enable <a href="https://github.com/cilium/cilium" target="_blank" rel="noopener noreferrer">Cilium</a> Container Network Interface with KubeEdge.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="why-cilium-for-kubeedge">Why <a href="https://github.com/cilium/cilium" target="_blank" rel="noopener noreferrer">Cilium</a> for KubeEdge<a href="#why-cilium-for-kubeedge" class="hash-link" aria-label="Direct link to why-cilium-for-kubeedge" title="Direct link to why-cilium-for-kubeedge">​</a></h2><p><a href="https://github.com/cilium/cilium" target="_blank" rel="noopener noreferrer">Cilium</a> is the one of the most advanced and efficient container network interface plugin for Kubernetes, that provides network connectivity and security for containerized applications in Kubernetes clusters.
It leverages <a href="https://ebpf.io/" target="_blank" rel="noopener noreferrer">eBPF (extended Berkeley Packet Filter)</a> technology to implement networking and security policies at the Linux kernel level, allowing for high-performance data plane operations and fine-grained security controls.</p><p>And KubeEdge extends the cluster orchestration capability down to edge environments to provide unified cluster management and sophisticated edge specific features.</p><p>Enabling <a href="https://github.com/cilium/cilium" target="_blank" rel="noopener noreferrer">Cilium</a> with KubeEdge allows us to take advantage of both benefits even for edge computing environments.
We can deploy the application containers where <code>EdgeCore</code> running and bind <a href="https://github.com/cilium/cilium" target="_blank" rel="noopener noreferrer">Cilium</a> to connect with workloads in the cloud infrastructure.
This is because <a href="https://github.com/cilium/cilium" target="_blank" rel="noopener noreferrer">Cilium</a> can also enable <a href="https://docs.cilium.io/en/latest/security/network/encryption-wireguard/" target="_blank" rel="noopener noreferrer">WireGuard</a> VPN with transparent encryption of traffic between Cilium-managed endpoints.</p><p>Further more, we can also rely on <a href="https://github.com/cilium/tetragon" target="_blank" rel="noopener noreferrer">Cilium Tetragon Security Observability and Runtime Enforcement</a> to confine security risk and vulnerability in edge environment.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="how-to-enable-cilium-with-kubeedge">How to enable <a href="https://github.com/cilium/cilium" target="_blank" rel="noopener noreferrer">Cilium</a> with KubeEdge<a href="#how-to-enable-cilium-with-kubeedge" class="hash-link" aria-label="Direct link to how-to-enable-cilium-with-kubeedge" title="Direct link to how-to-enable-cilium-with-kubeedge">​</a></h2><p>The following procedures to set up a simple cluster system with Kubernetes and KubeEdge with <a href="https://github.com/cilium/cilium" target="_blank" rel="noopener noreferrer">Cilium</a>.
Since this is a new approach and still <strong>beta</strong> phase, the following manual operations are required to do so.</p><p>After all the operations, we can develop the following cluster configuration with KubeEdge with <a href="https://github.com/cilium/cilium" target="_blank" rel="noopener noreferrer">Cilium</a>.</p><p><img loading="lazy" alt="overview" src="/assets/images/overview-f7454805dbe8ae6ec88dcc3e6ea52ec0.png" width="2834" height="1645" class="img_ev3q"></p><ul><li><a href="#prerequisites">Prerequisites</a></li><li><a href="#kubernetes-master-setup">Kubernetes Master Setup</a></li><li><a href="#cilium-install-and-setup">Cilium Install and Setup</a></li><li><a href="#kubeedge-cloudcore-setup">KubeEdge CloudCore Setup</a></li><li><a href="#kubeedge-edgecore-setup">KubeEdge EdgeCore Setup</a></li><li><a href="#Check-cilium-connectivity-from-pods">Check Cilium Connectivity from Pods</a></li></ul><h3 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></h3><ul><li><p><a href="https://github.com/kubeedge/kubeedge/blob/master/CHANGELOG/CHANGELOG-1.16.md" target="_blank" rel="noopener noreferrer">KubeEdge Release v1.16</a> or later required.</p><p>To enable Cilium with KubeEdge, we must use <a href="https://github.com/kubeedge/kubeedge/blob/master/CHANGELOG/CHANGELOG-1.16.md" target="_blank" rel="noopener noreferrer">KubeEdge Release v1.16</a> or later.
This is because that <code>cilium-agent</code> needs to issue <code>InClusterConfig</code> APIs to Kubernetes API server to configure <code>cilium-agent</code>.
This should be no problem with Kubernetes nodes, but with KubeEdge those API requests and responses need to be bypassed via <a href="https://kubeedge.io/docs/architecture/edge/metamanager/" target="_blank" rel="noopener noreferrer">KubeEdge MetaManager</a>.
You can see <a href="https://github.com/kubeedge/kubeedge/issues/4844" target="_blank" rel="noopener noreferrer">KubeEdge EdgeCore supports Cilium CNI</a> for more details.</p></li><li><p>Compatible Kubernetes version with <a href="https://github.com/kubeedge/kubeedge/blob/master/CHANGELOG/CHANGELOG-1.16.md" target="_blank" rel="noopener noreferrer">KubeEdge Release v1.16</a>.</p><p>You can find compatible and supported Kubernetes version <a href="https://github.com/kubeedge/kubeedge?tab=readme-ov-file#kubernetes-compatibility" target="_blank" rel="noopener noreferrer">here</a>.</p></li><li><p>It Requires super user rights (or root rights) to run commands.</p></li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="kubernetes-master-setup">Kubernetes Master Setup<a href="#kubernetes-master-setup" class="hash-link" aria-label="Direct link to Kubernetes Master Setup" title="Direct link to Kubernetes Master Setup">​</a></h3><p>Refer to <a href="https://kubeedge.io/docs/category/prerequisites" target="_blank" rel="noopener noreferrer">KubeEdge Setup Prerequisites</a>, and set up the Kubernetes API server as following.</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">### Check node status</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&gt; kubectl get nodes -o wide</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">NAME           STATUS   ROLES           AGE   VERSION    INTERNAL-IP     EXTERNAL-IP   OS-IMAGE             KERNEL-VERSION       CONTAINER-RUNTIME</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">tomoyafujita   Ready    control-plane   25s   v1.26.15   AA.BBB.CCC.DD   &lt;none&gt;        Ubuntu 20.04.6 LTS   5.15.0-102-generic   containerd://1.6.32</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">### Taint this node so that CloudCore can be deployed on the control-plane</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&gt; kubectl taint node tomoyafujita node-role.kubernetes.io/control-plane:NoSchedule-</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">node/tomoyafujita untainted</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&gt; kubectl get nodes -o json | jq '.items[].spec.taints'</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">null</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="cilium-install-and-setup">Cilium Install and Setup<a href="#cilium-install-and-setup" class="hash-link" aria-label="Direct link to Cilium Install and Setup" title="Direct link to Cilium Install and Setup">​</a></h3><p>Refer to <a href="https://docs.cilium.io/en/stable/gettingstarted/k8s-install-default/" target="_blank" rel="noopener noreferrer">Cilium Quick Installation</a>, install and set up cilium deployments in the cluster.</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">&gt; cilium version</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">cilium-cli: v0.16.9 compiled with go1.22.3 on linux/amd64</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">cilium image (default): v1.15.5</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">cilium image (stable): v1.15.5</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">cilium image (running): unknown. Unable to obtain cilium version. Reason: release: not found</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>and install Cilium with enabling wireguard VPN in the cluster,</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">&gt; cilium install --set encryption.enabled=true --set encryption.type=wireguard --set encryption.wireguard.persistentKeepalive=60</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" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&gt; cilium status</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"> /¯¯\__/¯¯\    Cilium:             OK</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> \__/¯¯\__/    Operator:           OK</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> /¯¯\__/¯¯\    Envoy DaemonSet:    disabled (using embedded mode)</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> \__/¯¯\__/    Hubble Relay:       disabled</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    \__/       ClusterMesh:        disabled</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">Deployment             cilium-operator    Desired: 1, Ready: 1/1, Available: 1/1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">DaemonSet              cilium             Desired: 1, Ready: 1/1, Available: 1/1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Containers:            cilium             Running: 1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                       cilium-operator    Running: 1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Cluster Pods:          1/2 managed by Cilium</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Helm chart version:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Image versions         cilium             quay.io/cilium/cilium:v1.15.5@sha256:4ce1666a73815101ec9a4d360af6c5b7f1193ab00d89b7124f8505dee147ca40: 1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                       cilium-operator    quay.io/cilium/operator-generic:v1.15.5@sha256:f5d3d19754074ca052be6aac5d1ffb1de1eb5f2d947222b5f10f6d97ad4383e8: 1</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>Add <code>nodeAffinity</code> for Cilium <code>DaemonSet</code> to make sure these pods are only created on cloud nodes.
These Cilium pods are generic Cilium <code>DaemonSet</code>, so supposed to be running on cloud nodes but where <code>EdgeCore</code> running.</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">### Edit Cilium DaemonSet with the following patch</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&gt;  kubectl edit ds -n kube-system cilium</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><div class="language-patch codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-patch codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">diff --git a/cilium-kubelet.yaml b/cilium-kubelet.yaml</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">index 21881e1..9946be9 100644</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">--- a/cilium-kubelet.yaml</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">+++ b/cilium-kubelet.yaml</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">@@ -29,6 +29,12 @@ spec:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">         k8s-app: cilium</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">     spec:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">       affinity:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">+        nodeAffinity:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">+          requiredDuringSchedulingIgnoredDuringExecution:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">+            nodeSelectorTerms:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">+              - matchExpressions:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">+                - key: node-role.kubernetes.io/edge</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">+                  operator: DoesNotExist</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">         podAntiAffinity:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">           requiredDuringSchedulingIgnoredDuringExecution:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">           - labelSelector:</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>After editing, Cilium pods will be restarted.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="kubeedge-cloudcore-setup">KubeEdge CloudCore Setup<a href="#kubeedge-cloudcore-setup" class="hash-link" aria-label="Direct link to KubeEdge CloudCore Setup" title="Direct link to KubeEdge CloudCore Setup">​</a></h3><p>1st of all, we need to install <code>Keadm</code> with the official procedure <a href="https://kubeedge.io/docs/setup/install-with-keadm" target="_blank" rel="noopener noreferrer">Installing KubeEdge with Keadm</a>.</p><p>In this blog, we use <code>Keadm v1.16.1</code> as following.</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">### Install v1.16.1 keadm command</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">wget</span><span class="token plain"> https://github.com/kubeedge/kubeedge/releases/download/v1.16.1/keadm-v1.16.1-linux-amd64.tar.gz</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">tar</span><span class="token plain"> -zxvf keadm-v1.16.1-linux-amd64.tar.gz</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">cp</span><span class="token plain"> keadm-v1.16.1-linux-amd64/keadm/keadm /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 operator" style="color:#393A34">&gt;</span><span class="token plain"> keadm version</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">version: version.Info</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">Major:</span><span class="token string" style="color:#e3116c">"1"</span><span class="token plain">, Minor:</span><span class="token string" style="color:#e3116c">"16"</span><span class="token plain">, GitVersion:</span><span class="token string" style="color:#e3116c">"v1.16.1"</span><span class="token plain">, GitCommit:</span><span class="token string" style="color:#e3116c">"bd7b42acbfbe3a453c7bb75a6bb8f1e8b3db7415"</span><span class="token plain">, GitTreeState:</span><span class="token string" style="color:#e3116c">"clean"</span><span class="token plain">, BuildDate:</span><span class="token string" style="color:#e3116c">"2024-03-27T02:57:08Z"</span><span class="token plain">, GoVersion:</span><span class="token string" style="color:#e3116c">"go1.20.10"</span><span class="token plain">, Compiler:</span><span class="token string" style="color:#e3116c">"gc"</span><span class="token plain">, Platform:</span><span class="token string" style="color:#e3116c">"linux/amd64"</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><p>and then, start the <code>CloudCore</code> with <code>v1.16.1</code>.</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">&gt; keadm init --advertise-address="AA.BBB.CCC.DD" --profile version=v1.16.1 --kube-config=/root/.kube/config</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Kubernetes version verification passed, KubeEdge installation will start...</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">CLOUDCORE started</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">=========CHART DETAILS=======</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">NAME: cloudcore</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">LAST DEPLOYED: Tue Jun  4 17:19:15 2024</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">NAMESPACE: kubeedge</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">STATUS: deployed</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">REVISION: 1</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>After <code>CloudCore</code> is started, we also need to enable <code>DynamicControllers</code>.</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">### edit ConfigMap of CloudCore to enable dynamicController</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&gt; kubectl edit cm -n kubeedge cloudcore</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&gt; kubectl delete pod -n kubeedge --selector=kubeedge=cloudcore</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">### Check ConfigMap</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&gt; kubectl get cm -n kubeedge cloudcore -o yaml | grep "dynamicController" -A 1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      dynamicController:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        enable: 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"><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>To manage and handle the APIs from <code>MetaManager</code> that are originally come from Cilium running in the edge nodes, we need to give access permission to <code>CloudCore</code> by editing <code>clusterRole</code> and <code>clusterRolebinding</code>.</p><p><code>clusterRole</code>:</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">### Edit and apply the following patch</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&gt; kubectl edit clusterrole cilium</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><div class="language-patch codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-patch codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">diff --git a/cilium-clusterrole.yaml b/cilium-clusterrole.yaml</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">index 736e35c..fd5512e 100644</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">--- a/cilium-clusterrole.yaml</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">+++ b/cilium-clusterrole.yaml</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">@@ -66,6 +66,7 @@ rules:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">   verbs:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">   - list</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">   - watch</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">+  - get</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> - apiGroups:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">   - cilium.io</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">   resources:</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><code>clusterRolebinding</code>:</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">### Edit and apply the following patch</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&gt; kubectl edit clusterrolebinding cilium</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><div class="language-patch codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-patch codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">diff --git a/cilium-clusterrolebinding.yaml b/cilium-clusterrolebinding.yaml</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">index 9676737..ac956de 100644</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">--- a/cilium-clusterrolebinding.yaml</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">+++ b/cilium-clusterrolebinding.yaml</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">@@ -12,3 +12,9 @@ subjects:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> - kind: ServiceAccount</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">   name: cilium</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">   namespace: kube-system</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">+- kind: ServiceAccount</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">+  name: cloudcore</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">+  namespace: kubeedge</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">+- kind: ServiceAccount</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">+  name: cloudcore</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">+  namespace: default</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>Finally, we get the token after <code>CloudCore</code> has restarted.</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">&gt; keadm gettoken</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&lt;TOKEN_HASH&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><h3 class="anchor anchorWithStickyNavbar_LWe7" id="kubeedge-edgecore-setup">KubeEdge EdgeCore Setup<a href="#kubeedge-edgecore-setup" class="hash-link" aria-label="Direct link to KubeEdge EdgeCore Setup" title="Direct link to KubeEdge EdgeCore Setup">​</a></h3><p>With the token provided above, we can start the <code>EdgeCore</code> to join the cluster system.</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">&gt; keadm join --cloudcore-ipport=AA.BBB.CCC.DD:10000 --kubeedge-version=v1.16.1 --cgroupdriver=systemd --token &lt;TOKEN_HASH&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">...&lt;snip&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">I0604 21:36:31.040859 2118064 join_others.go:265] KubeEdge edgecore is running, For logs visit: journalctl -u edgecore.service -xe</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">I0604 21:36:41.050154 2118064 join.go:94] 9. Install Complete!</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">&gt; systemctl status edgecore</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">● edgecore.service</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">     Loaded: loaded (/etc/systemd/system/edgecore.service; enabled; vendor preset: enabled)</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">     Active: active (running) since Tue 2024-06-04 21:36:31 PDT; 40s ago</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">   Main PID: 2118341 (edgecore)</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      Tasks: 24 (limit: 18670)</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">     Memory: 31.8M</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        CPU: 849ms</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">     CGroup: /system.slice/edgecore.service</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">             └─2118341 /usr/local/bin/edgecore</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>After <code>EdgeCore</code> is started, we need to enable <code>ServiceBus</code> and <code>MetaServer</code> to edit <code>edgecore.yaml</code>.</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">### Edit and apply the following patch</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&gt; vi /etc/kubeedge/config/edgecore.yaml</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">### Restart edgecore systemd-service</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&gt; systemctl restart edgecore</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><div class="language-patch codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-patch codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">diff --git a/edgecore.yaml b/edgecore.yaml</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">index 8d17418..5391776 100644</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">--- a/edgecore.yaml</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">+++ b/edgecore.yaml</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">@@ -62,6 +62,8 @@ modules:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">       cgroupDriver: systemd</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">       cgroupsPerQOS: true</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">       clusterDomain: cluster.local</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">+      clusterDNS:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">+      - 10.96.0.10</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">       configMapAndSecretChangeDetectionStrategy: Get</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">       containerLogMaxFiles: 5</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">       containerLogMaxSize: 10Mi</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">@@ -151,7 +151,7 @@ modules:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">     enable: true</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">     metaServer:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">       apiAudiences: null</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">-      enable: false</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">+      enable: true</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">       server: 127.0.0.1:10550</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">       serviceAccountIssuers:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">       - https://kubernetes.default.svc.cluster.local</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">@@ -161,7 +161,7 @@ modules:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">       tlsPrivateKeyFile: /etc/kubeedge/certs/server.key</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">     remoteQueryTimeout: 60</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">   serviceBus:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">-    enable: false</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">+    enable: true</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">     port: 9060</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">     server: 127.0.0.1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">     timeout: 60</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>And then, we need to create another <code>DaemonSet</code> of <code>cilium-agent</code> only for <code>EdgeCore</code> nodes.
We need to deploy <code>cilium-agent</code> pods to the nodes where KubeEdge <code>EdgeCore</code> runs and labeled with <code>kubernetes.io/edge=</code>.
Besides that, <code>cilium-agent</code> needs to query the APIs to <code>MetaServer</code> instead of Kubernetes API-server that is required to keep the edge autonomy provided by KubeEdge.</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">### Dump original Cilium DaemonSet configuration</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&gt; kubectl get ds -n kube-system cilium -o yaml &gt; cilium-edgecore.yaml</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">### Edit and apply the following patch</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&gt; vi cilium-edgecore.yaml</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">### Deploy cilium-agent aligns with edgecore</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&gt; kubectl apply -f cilium-edgecore.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><div class="language-patch codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-patch codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">diff --git a/cilium-edgecore.yaml b/cilium-edgecore.yaml</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">index bff0f0b..3d941d1 100644</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">--- a/cilium-edgecore.yaml</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">+++ b/cilium-edgecore.yaml</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">@@ -8,7 +8,7 @@ metadata:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">     app.kubernetes.io/name: cilium-agent</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">     app.kubernetes.io/part-of: cilium</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">     k8s-app: cilium</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">-  name: cilium</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">+  name: cilium-kubeedge</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">   namespace: kube-system</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"> spec:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">   revisionHistoryLimit: 10</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">@@ -29,6 +29,12 @@ spec:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">         k8s-app: cilium</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">     spec:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">       affinity:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">+        nodeAffinity:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">+          requiredDuringSchedulingIgnoredDuringExecution:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">+            nodeSelectorTerms:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">+              - matchExpressions:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">+                - key: node-role.kubernetes.io/edge</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">+                  operator: Exists</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">         podAntiAffinity:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">           requiredDuringSchedulingIgnoredDuringExecution:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">           - labelSelector:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">@@ -39,6 +45,8 @@ spec:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">       containers:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">       - args:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">         - --config-dir=/tmp/cilium/config-map</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">+        - --k8s-api-server=127.0.0.1:10550</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">+        - --auto-create-cilium-node-resource=true</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">         - --debug</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">         command:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">         - cilium-agent</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">@@ -178,7 +186,9 @@ spec:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">       dnsPolicy: ClusterFirst</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">       hostNetwork: true</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">       initContainers:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">-      - command:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">+      - args:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">+        - --k8s-api-server=127.0.0.1:10550</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">+        command:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">         - cilium</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">         - build-config</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">         env:</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>We can see below that <code>cilium-pq45v</code> (normal cilium-agent pod) running on cloud node, and <code>cilium-kubeedge-kkb7z</code> (edgecore specific <code>DaemonSet</code>) is running with edgecore.</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">&gt; kubectl get pods -A -o wide</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">NAMESPACE     NAME                                   READY   STATUS    RESTARTS   AGE     IP               NODE           NOMINATED NODE   READINESS GATES</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">kube-system   cilium-kubeedge-kkb7z                  1/1     Running   0          32s     XX.YYY.ZZZ.WWW   edgemaster     &lt;none&gt;           &lt;none&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">kube-system   cilium-operator-fdf6bc9f4-445p6        1/1     Running   0          3h40m   AA.BBB.CCC.DD    tomoyafujita   &lt;none&gt;           &lt;none&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">kube-system   cilium-pq45v                           1/1     Running   0          3h32m   AA.BBB.CCC.DD    tomoyafujita   &lt;none&gt;           &lt;none&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">kube-system   coredns-787d4945fb-2bbdf               1/1     Running   0          8h      10.0.0.104       tomoyafujita   &lt;none&gt;           &lt;none&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">kube-system   coredns-787d4945fb-nmd2p               1/1     Running   0          8h      10.0.0.130       tomoyafujita   &lt;none&gt;           &lt;none&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">kube-system   etcd-tomoyafujita                      1/1     Running   0          8h      AA.BBB.CCC.DD    tomoyafujita   &lt;none&gt;           &lt;none&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">kube-system   kube-apiserver-tomoyafujita            1/1     Running   1          8h      AA.BBB.CCC.DD    tomoyafujita   &lt;none&gt;           &lt;none&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">kube-system   kube-controller-manager-tomoyafujita   1/1     Running   0          8h      AA.BBB.CCC.DD    tomoyafujita   &lt;none&gt;           &lt;none&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">kube-system   kube-proxy-qmxqp                       1/1     Running   0          19m     XX.YYY.ZZZ.WWW   edgemaster     &lt;none&gt;           &lt;none&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">kube-system   kube-proxy-v2ht7                       1/1     Running   0          8h      AA.BBB.CCC.DD    tomoyafujita   &lt;none&gt;           &lt;none&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">kube-system   kube-scheduler-tomoyafujita            1/1     Running   1          8h      AA.BBB.CCC.DD    tomoyafujita   &lt;none&gt;           &lt;none&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">kubeedge      cloudcore-df8544847-6mlw2              1/1     Running   0          4h23m   AA.BBB.CCC.DD    tomoyafujita   &lt;none&gt;           &lt;none&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">kubeedge      edge-eclipse-mosquitto-9cw6r           1/1     Running   0          19m     XX.YYY.ZZZ.WWW   edgemaster     &lt;none&gt;           &lt;none&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><h3 class="anchor anchorWithStickyNavbar_LWe7" id="check-cilium-connectivity-from-pods">Check Cilium Connectivity from Pods<a href="#check-cilium-connectivity-from-pods" class="hash-link" aria-label="Direct link to Check Cilium Connectivity from Pods" title="Direct link to Check Cilium Connectivity from Pods">​</a></h3><p>Now Cilium is ready to be used for application pods and containers to provide network connectivity.
We can use busybox <code>DaemonSet</code> as following to try <code>ping</code> the network connectivity via Cilium.</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">&gt; cat busybox.yaml</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">apiVersion: apps/v1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">kind: DaemonSet</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">  name: busybox</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">spec:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  selector:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    matchLabels:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      app: busybox</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  template:</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">      labels:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        app: busybox</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    spec:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      containers:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      - image: busybox</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        command: ["sleep", "3600"]</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        imagePullPolicy: IfNotPresent</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        name: busybox</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">&gt; kubectl apply -f busybox.yaml</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">daemonset.apps/busybox created</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">&gt; kubectl get pods -o wide</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">NAME            READY   STATUS    RESTARTS   AGE   IP           NODE           NOMINATED NODE   READINESS GATES</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">busybox-mn98w   1/1     Running   0          84s   10.0.0.58    tomoyafujita   &lt;none&gt;           &lt;none&gt;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">busybox-z2mbw   1/1     Running   0          84s   10.0.1.121   edgemaster     &lt;none&gt;           &lt;none&gt;</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">&gt; kubectl exec --stdin --tty busybox-mn98w -- /bin/sh</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">/ # ping 10.0.1.121</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">PING 10.0.1.121 (10.0.1.121): 56 data bytes</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">64 bytes from 10.0.1.121: seq=0 ttl=63 time=1.326 ms</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">64 bytes from 10.0.1.121: seq=1 ttl=63 time=1.620 ms</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">64 bytes from 10.0.1.121: seq=2 ttl=63 time=1.341 ms</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">64 bytes from 10.0.1.121: seq=3 ttl=63 time=1.685 ms</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">^C</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">--- 10.0.1.121 ping statistics ---</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">4 packets transmitted, 4 packets received, 0% packet loss</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">round-trip min/avg/max = 1.326/1.493/1.685 ms</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">/ # exit</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&gt; kubectl exec --stdin --tty busybox-z2mbw -- /bin/sh</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">/ # ping 10.0.0.58</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">PING 10.0.0.58 (10.0.0.58): 56 data bytes</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">64 bytes from 10.0.0.58: seq=0 ttl=63 time=0.728 ms</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">64 bytes from 10.0.0.58: seq=1 ttl=63 time=1.178 ms</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">64 bytes from 10.0.0.58: seq=2 ttl=63 time=0.635 ms</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">64 bytes from 10.0.0.58: seq=3 ttl=63 time=1.152 ms</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">^C</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">--- 10.0.0.58 ping statistics ---</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">4 packets transmitted, 4 packets received, 0% packet loss</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">round-trip min/avg/max = 0.635/0.923/1.178 ms</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>Finally we can confirm the cross-communication via Cilium between <code>busybox</code> containers are just fine!!!</p><p>If you want to know more technical insights and development, see and subscribe <a href="https://github.com/kubeedge/kubeedge/issues/4844" target="_blank" rel="noopener noreferrer">KubeEdge EdgeCore supports Cilium CNI</a> for more details.</p>]]></content>
        <author>
            <name>Tomoya Fujita</name>
            <uri>https://github.com/fujitatomoya</uri>
        </author>
        <category label="KubeEdge" term="KubeEdge"/>
        <category label="kubeedge" term="kubeedge"/>
        <category label="edge computing" term="edge computing"/>
        <category label="kubernetes edge computing" term="kubernetes edge computing"/>
        <category label="K8s edge orchestration" term="K8s edge orchestration"/>
        <category label="edge computing platform" term="edge computing platform"/>
        <category label="cloud native" term="cloud native"/>
        <category label="iot" term="iot"/>
        <category label="iiot" term="iiot"/>
        <category label="Cilium" term="Cilium"/>
        <category label="CNI" term="CNI"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[KubeEdge v1.17 is live!]]></title>
        <id>https://kubeedge.io/blog/release-v1.17</id>
        <link href="https://kubeedge.io/blog/release-v1.17"/>
        <updated>2024-05-15T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[KubeEdge v1.17 is now available! This latest release introduces several new features and enhancements, including support for edge pods using InClusterConfig to access the Kubernetes API server, video streaming data reporting in Mappers, auto-restarting for EdgeCore modules, and more.]]></summary>
        <content type="html"><![CDATA[<p>KubeEdge v1.17 is now available! This latest release introduces several new features and enhancements, including support for edge pods using InClusterConfig to access the Kubernetes API server, video streaming data reporting in Mappers, auto-restarting for EdgeCore modules, and more.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="117-whats-new">1.17 What's New<a href="#117-whats-new" class="hash-link" aria-label="Direct link to 1.17 What's New" title="Direct link to 1.17 What's New">​</a></h2><ul><li><a href="#support-edge-pods-using-inclusterconfig-to-access-kube-apiserver">Support Edge Pods Using InClusterConfig to Access Kube-APIServer</a></li><li><a href="#mapper-supports-video-streaming-data-reporting">Mapper Supports Video Streaming Data Reporting</a></li><li><a href="#support-auto-restarting-for-edge-modules">Support Auto-Restarting for Edge Modules</a></li><li><a href="#introduce-keadm-ctl-command-to-support-pods-query-and-restart-at-edge">Introduce <code>keadm ctl</code> Command to Support Pods Query and Restart at Edge</a></li><li><a href="#keadm-enhancements">Keadm Enhancements</a></li><li><a href="#add-mysql-to-mapper-framework">Add MySQL to Mapper Framework</a></li><li><a href="#upgrade-kubernetes-dependency-to-v1286">Upgrade Kubernetes Dependency to v1.28.6</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="support-edge-pods-using-inclusterconfig-to-access-kube-apiserver">Support Edge Pods Using InClusterConfig to Access Kube-APIServer<a href="#support-edge-pods-using-inclusterconfig-to-access-kube-apiserver" class="hash-link" aria-label="Direct link to Support Edge Pods Using InClusterConfig to Access Kube-APIServer" title="Direct link to Support Edge Pods Using InClusterConfig to Access Kube-APIServer">​</a></h3><p>The <code>InClusterConfig</code> mechanism enables cloud pods to directly access the Kubernetes API server. With this release, KubeEdge now supports edge pods using the <code>InClusterConfig</code> mechanism to access the Kube-APIServer directly, even when the edge and cloud are in different network environments.</p><p>Refer to the link for more details. (<a href="https://github.com/kubeedge/kubeedge/pull/5524" target="_blank" rel="noopener noreferrer">#5524</a>, <a href="https://github.com/kubeedge/kubeedge/pull/5541" target="_blank" rel="noopener noreferrer">#5541</a>)</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="mapper-supports-video-streaming-data-reporting">Mapper Supports Video Streaming Data Reporting<a href="#mapper-supports-video-streaming-data-reporting" class="hash-link" aria-label="Direct link to Mapper Supports Video Streaming Data Reporting" title="Direct link to Mapper Supports Video Streaming Data Reporting">​</a></h3><p>Previously, Mappers could only process structured device data. In v1.17, video stream data processing features have been added to the Mapper-Framework.</p><ul><li><p><strong>Edge Camera Device Management</strong></p><p> v1.17 provides a built-in Mapper based on the Onvif protocol, which can manage Onvif network camera devices into the KubeEdge cluster and obtain the camera's authentication file and RTSP video stream.</p></li><li><p><strong>Video Stream Data Processing</strong></p><p> Video stream data processing capabilities have been introduced to the Mapper-Framework data plane. The video stream reported by edge camera devices can be saved as frame files or video files.</p></li></ul><p>Refer to the link for more details. (<a href="https://github.com/kubeedge/kubeedge/pull/5448" target="_blank" rel="noopener noreferrer">#5448</a>, <a href="https://github.com/kubeedge/kubeedge/pull/5514" target="_blank" rel="noopener noreferrer">#5514</a>, <a href="https://github.com/kubeedge/mappers-go/pull/127" target="_blank" rel="noopener noreferrer">mappers-go/#127</a>)</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="support-auto-restarting-for-edge-modules">Support Auto-Restarting for Edge Modules<a href="#support-auto-restarting-for-edge-modules" class="hash-link" aria-label="Direct link to Support Auto-Restarting for Edge Modules" title="Direct link to Support Auto-Restarting for Edge Modules">​</a></h3><p>EdgeCore modules could previously fail to start due to non-configurable and recoverable matters like process start order issues. In v1.17, the BeeHive framework has been improved to support automatically restarting modules. Users can now configure EdgeCore modules to automatically restart instead of restarting the entire component.</p><p>Refer to the link for more details. (<a href="https://github.com/kubeedge/kubeedge/pull/5509" target="_blank" rel="noopener noreferrer">#5509</a>, <a href="https://github.com/kubeedge/kubeedge/pull/5513" target="_blank" rel="noopener noreferrer">#5513</a>)</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="introduce-keadm-ctl-command-to-support-pods-query-and-restart-at-edge">Introduce <code>keadm ctl</code> Command to Support Pods Query and Restart at Edge<a href="#introduce-keadm-ctl-command-to-support-pods-query-and-restart-at-edge" class="hash-link" aria-label="Direct link to introduce-keadm-ctl-command-to-support-pods-query-and-restart-at-edge" title="Direct link to introduce-keadm-ctl-command-to-support-pods-query-and-restart-at-edge">​</a></h3><p>The new <code>keadm ctl</code> command has been introduced in v1.17, allowing users to query and restart pods on edge nodes when they are offline:</p><ul><li>Query: <code>keadm ctl get pod [flags]</code> </li><li>Restart: <code>keadm ctl restart pod [flags]</code></li></ul><p>Refer to the link for more details. (<a href="https://github.com/kubeedge/kubeedge/pull/5504" target="_blank" rel="noopener noreferrer">#5504</a>)</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="keadm-enhancements">Keadm Enhancements<a href="#keadm-enhancements" class="hash-link" aria-label="Direct link to Keadm Enhancements" title="Direct link to Keadm Enhancements">​</a></h3><p>Several enhancements were made to the <code>keadm</code> installation tool:</p><ul><li>Refactored the <code>keadm init</code> command</li><li>Changed the command <code>keadm generate</code> to <code>keadm manifest</code>  </li><li>Added <code>image-repository</code> flag to <code>keadm join</code> to support customization</li><li>Split the  <code>keadm reset</code> command into  <code>keadm reset cloud</code> and  <code>keadm reset edge</code>.</li></ul><p>Refer to the link for more details. (<a href="https://github.com/kubeedge/kubeedge/pull/5317" target="_blank" rel="noopener noreferrer">#5317</a>)</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="add-mysql-to-mapper-framework">Add MySQL to Mapper Framework<a href="#add-mysql-to-mapper-framework" class="hash-link" aria-label="Direct link to Add MySQL to Mapper Framework" title="Direct link to Add MySQL to Mapper Framework">​</a></h3><p>The Mapper Framework data plane now includes MySQL database support in its <code>pushMethod</code>. When using MySQL, basic configuration parameters for the MySQL client need to be added in the DeviceInstance.</p><p>Refer to the link for more details. (<a href="https://github.com/kubeedge/kubeedge/pull/5376" target="_blank" rel="noopener noreferrer">#5376</a>) </p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="upgrade-kubernetes-dependency-to-v1286">Upgrade Kubernetes Dependency to v1.28.6<a href="#upgrade-kubernetes-dependency-to-v1286" class="hash-link" aria-label="Direct link to Upgrade Kubernetes Dependency to v1.28.6" title="Direct link to Upgrade Kubernetes Dependency to v1.28.6">​</a></h3><p>The vendored Kubernetes version has been upgraded to v1.28.6, users are now able to use the latest features on both the cloud and edge side.</p><p>Refer to the link for more details. (<a href="https://github.com/kubeedge/kubeedge/pull/5412" target="_blank" rel="noopener noreferrer">#5412</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><p>To use the <code>InClusterConfig</code> feature for edge pods, you need to enable the metaServer and dynamicController switches, and set <code>featureGates.requireAuthorization=true</code> in the CloudCore and EdgeCore configuration files.</p></li><li><p>To use the <code>Auto-Restarting for Edge Modules</code> feature, you must enable the <code>moduleRestart</code> feature gate in EdgeCore.</p></li></ul><p>Download the v1.17.0 release from the <a href="https://github.com/kubeedge/kubeedge/releases/tag/v1.17.0" target="_blank" rel="noopener noreferrer">release page</a> and upgrade today to take advantage of these new capabilities!</p>]]></content>
        <author>
            <name>KubeEdge SIG Release</name>
            <uri>https://github.com/kubeedge-bot</uri>
        </author>
        <category label="KubeEdge" term="KubeEdge"/>
        <category label="kubeedge" term="kubeedge"/>
        <category label="edge computing" term="edge computing"/>
        <category label="kubernetes edge computing" term="kubernetes edge computing"/>
        <category label="K8s edge orchestration" term="K8s edge orchestration"/>
        <category label="edge computing platform" term="edge computing platform"/>
        <category label="cloud native" term="cloud native"/>
        <category label="iot" term="iot"/>
        <category label="iiot" term="iiot"/>
        <category label="release v1.17" term="release v1.17"/>
        <category label="v1.17" term="v1.17"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Summer OSPP 2024 is coming! KubeEdge community has launched registrations]]></title>
        <id>https://kubeedge.io/blog/summer-ospp</id>
        <link href="https://kubeedge.io/blog/summer-ospp"/>
        <updated>2024-04-30T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Please refer to the detailed introduction of the Summer OSPP in the Chinese version of the blog.    https://kubeedge.io/zh/blog/summer-ospp]]></summary>
        <content type="html"><![CDATA[<p>Please refer to the detailed introduction of the Summer OSPP in the Chinese version of the blog.    <a href="https://kubeedge.io/zh/blog/summer-ospp" target="_blank" rel="noopener noreferrer">https://kubeedge.io/zh/blog/summer-ospp</a></p>]]></content>
        <author>
            <name>KubeEdge</name>
            <uri>https://github.com/kubeedge-bot</uri>
        </author>
        <category label="KubeEdge" term="KubeEdge"/>
        <category label="edge computing" term="edge computing"/>
        <category label="kubernetes edge computing" term="kubernetes edge computing"/>
        <category label="K8s edge orchestration" term="K8s edge orchestration"/>
        <category label="edge computing platform" term="edge computing platform"/>
        <category label="cloud native" term="cloud native"/>
        <category label="OSPP" term="OSPP"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[KubeEdge v1.16 is live!]]></title>
        <id>https://kubeedge.io/blog/release-v1.16</id>
        <link href="https://kubeedge.io/blog/release-v1.16"/>
        <updated>2024-01-27T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[On January 23, 2024, KubeEdge released v1.16. The new version introduces several enhanced features, significantly improving cluster upgrades, cluster usability, and edge device management.]]></summary>
        <content type="html"><![CDATA[<p>On January 23, 2024, KubeEdge released v1.16. The new version introduces several enhanced features, significantly improving cluster upgrades, cluster usability, and edge device management.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="v116-whats-new">v1.16 What's New<a href="#v116-whats-new" class="hash-link" aria-label="Direct link to v1.16 What's New" title="Direct link to v1.16 What's New">​</a></h2><ul><li><a href="#support-cloud-and-edge-components-upgrade">Support Cloud and Edge Components Upgrade</a></li><li><a href="#alpha-implementation-of-images-prepull-on-edge-nodes">Alpha Implementation of Images PrePull on Edge Nodes</a></li><li><a href="#support-installing-windows-based-edge-nodes-with-keadm">Support Installing Windows-based Edge Nodes with Keadm</a></li><li><a href="#add-compatibility-tests-for-multiple-runtimes">Add Compatibility Tests for Multiple Runtimes</a></li><li><a href="#support-more-deployment-fields-to-the-edgeapplication-overrides">Support More Deployment Fields to the EdgeApplication Overrides</a></li><li><a href="#support-mapper-upgrade">Support Mapper Upgrade</a></li><li><a href="#integrate-redis-and-tdengine-database-in-dmi-data-plane">Integrate Redis and TDengine Database in DMI Data Plane</a></li><li><a href="#new-usb-camera-mapper">New USB Camera Mapper</a></li><li><a href="#keadms-enhancement">Keadm’s Enhancement</a></li><li><a href="#upgrade-kubernetes-dependency-to-v1277">Upgrade Kubernetes Dependency to v1.27.7</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="support-cloud-and-edge-components-upgrade">Support Cloud and Edge Components Upgrade<a href="#support-cloud-and-edge-components-upgrade" class="hash-link" aria-label="Direct link to Support Cloud and Edge Components Upgrade" title="Direct link to Support Cloud and Edge Components Upgrade">​</a></h3><p>The Cloud side and Edge side Upgrade capability is comprehensively enhanced in v1.16. Users can upgrade the cloud side components with Keadm tool, and upgrade edge nodes with the API through Kubernetes API-Server.</p><ul><li><p><strong>Cloud upgrade</strong></p><p>  Keadm supports the Cloud Upgrade command, and users can easily upgrade cloud components.</p><p>  Example:</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 upgrade cloud --advertise-address={advertise-address} --kubeedge-version=v1.16.0</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><li><p><strong>Edge upgrade</strong></p><p>  In KubeEdge v1.16, the node upgrade API was implemented. Users can remotely upgrade edge nodes in batches. The cloud-edge task architecture handles upgrade task flow and supports unified timeout processing, concurrency control, and subtask management, among other capabilities.</p><p>  Upgrade API Example:</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/v1alpha1</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"> NodeUpgradeJob</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"> upgrade</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">example</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">labels</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">description</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> upgrade</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">label</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">version</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"v1.16.0"</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">checkItems</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 string" style="color:#e3116c">"cpu"</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 string" style="color:#e3116c">"mem"</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 string" style="color:#e3116c">"disk"</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">"0.3"</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">2</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">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">"node-role.kubernetes.io/edge"</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">""</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">""</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><li><p><strong>KubeEdge version compatibility testing</strong></p><p>  KubeEdge v1.16 provides KubeEdge version compatibility testing, which avoids problems caused by incompatible cloud-edge versions during the upgrading process.</p></li></ul><p>Refer to the link for more details. (<a href="https://github.com/kubeedge/kubeedge/pull/5330" target="_blank" rel="noopener noreferrer">#5330</a>, <a href="https://github.com/kubeedge/kubeedge/pull/5229" target="_blank" rel="noopener noreferrer">#5229</a>, <a href="https://github.com/kubeedge/kubeedge/pull/5289" target="_blank" rel="noopener noreferrer">#5289</a>)</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="alpha-implementation-of-images-prepull-on-edge-nodes">Alpha Implementation of Images PrePull on Edge Nodes<a href="#alpha-implementation-of-images-prepull-on-edge-nodes" class="hash-link" aria-label="Direct link to Alpha Implementation of Images PrePull on Edge Nodes" title="Direct link to Alpha Implementation of Images PrePull on Edge Nodes">​</a></h3><p>In scenarios with unstable network or limited edge bandwidth, deploying or updating edge applications often results in high failure rates or reduced efficiency, especially with large-scale edge nodes.</p><p>Images PrePull feature has been introduced in v1.16. Users can perform batch images prepull on large-scale edge nodes with <code>ImagePrePullJob</code> API when the network is stable, to improve the success rate and efficiency of batch edge applications deploying and updating.</p><p>ImagePrePull API Example:</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/v1alpha1</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"> ImagePrePullJob</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"> imageprepull</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">example</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">labels</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">    description</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">ImagePrePullLabel</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">  imagePrePullTemplate：</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">images</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"> image1</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"> image2</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    nodes：</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"> edgenode1</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"> edgenode2</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">checkItems</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 string" style="color:#e3116c">"disk"</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">"0.3"</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">2</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">retryTimes</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">1</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>Refer to the link for more details. (<a href="https://github.com/kubeedge/kubeedge/pull/5310" target="_blank" rel="noopener noreferrer">#5310</a>, <a href="https://github.com/kubeedge/kubeedge/pull/5331" target="_blank" rel="noopener noreferrer">#5331</a>)</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="support-installing-windows-based-edge-nodes-with-keadm">Support Installing Windows-based Edge Nodes with Keadm<a href="#support-installing-windows-based-edge-nodes-with-keadm" class="hash-link" aria-label="Direct link to Support Installing Windows-based Edge Nodes with Keadm" title="Direct link to Support Installing Windows-based Edge Nodes with Keadm">​</a></h3><p>KubeEdge has supported the edge node running on Windows Server 2019 in v1.15, extending KubeEdge to the Windows ecosystem and expanding its use cases and ecosystem.</p><p>In this release, Windows-based Edge Nodes can be installed and registered to cloud with the installation tool <code>Keadm</code>, providing convenience for the application of KubeEdge in Windows OS.</p><p>Refer to the link for more details. (<a href="https://github.com/kubeedge/kubeedge/pull/4968" target="_blank" rel="noopener noreferrer">#4968</a>)</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="add-compatibility-tests-for-multiple-runtimes">Add Compatibility Tests for Multiple Runtimes<a href="#add-compatibility-tests-for-multiple-runtimes" class="hash-link" aria-label="Direct link to Add Compatibility Tests for Multiple Runtimes" title="Direct link to Add Compatibility Tests for Multiple Runtimes">​</a></h3><p>The e2e test of KubeEdge v1.16 has integrated compatibility tests for multiple container runtimes. Currently, four container runtime compatibility tests have been added, including <strong>containerd</strong>, <strong>docker</strong>, <strong>cri-o</strong>, and <strong>isulad</strong>.</p><p>Refer to the link for more details.(<a href="https://github.com/kubeedge/kubeedge/pull/5321" target="_blank" rel="noopener noreferrer">#5321</a>)</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="support-more-deployment-fields-to-the-edgeapplication-overrides">Support More Deployment Fields to the EdgeApplication Overrides<a href="#support-more-deployment-fields-to-the-edgeapplication-overrides" class="hash-link" aria-label="Direct link to Support More Deployment Fields to the EdgeApplication Overrides" title="Direct link to Support More Deployment Fields to the EdgeApplication Overrides">​</a></h3><p>In previous versions, only replicas and image of the EdgeApplication could be overridden. In this release, we support overriding more Deployment fields: env, command, args and resources.</p><p>Refer to the link for more details.(<a href="https://github.com/kubeedge/kubeedge/pull/5038" target="_blank" rel="noopener noreferrer">#5038</a>)</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="support-mapper-upgrade">Support Mapper Upgrade<a href="#support-mapper-upgrade" class="hash-link" aria-label="Direct link to Support Mapper Upgrade" title="Direct link to Support Mapper Upgrade">​</a></h3><p>Build mapper upgrade framework. Users can upgrade the mapper by changing the referenced mapper-framework package version.</p><ul><li><p><strong>Mapper-framework code decouple</strong></p><p>  The code in mapper-framework was decoupled into user-layer code and business-layer code, and create the <a href="https://github.com/kubeedge/mapper-framework" target="_blank" rel="noopener noreferrer">kubeedge/mapper-framework</a> repo to store the business layer code.</p></li><li><p><strong>Mapper upgrade framework</strong></p><p>  Update the way mapper-framework generates mapper projects. The current execution script will only generate user-level code through dependent references. When the mapper project needs to be upgraded, it can be directly made by changing the version of mapper-framework package.</p></li></ul><p>Refer to the link for more details.(<a href="https://github.com/kubeedge/kubeedge/pull/5308" target="_blank" rel="noopener noreferrer">#5308</a>, <a href="https://github.com/kubeedge/kubeedge/pull/5326" target="_blank" rel="noopener noreferrer">#5326</a>)</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="integrate-redis-and-tdengine-database-in-dmi-data-plane">Integrate Redis and TDengine Database in DMI Data Plane<a href="#integrate-redis-and-tdengine-database-in-dmi-data-plane" class="hash-link" aria-label="Direct link to Integrate Redis and TDengine Database in DMI Data Plane" title="Direct link to Integrate Redis and TDengine Database in DMI Data Plane">​</a></h3><p>Integrate redis and tdengine database in DMI data plane. The mapper project generated by mapper-framework has built-in ability to push data to redis and tdengine database. Users can push data directly through configuring device instance files.</p><p>Database Field Definition:</p><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">type DBMethodRedis struct </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 comment" style="color:#999988;font-style:italic">// RedisClientConfig of redis database</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic">// +optional</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    RedisClientConfig *RedisClientConfig `json</span><span class="token operator" style="color:#393A34">:</span><span class="token string" style="color:#e3116c">"redisClientConfig,omitempty"</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">type RedisClientConfig struct </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 comment" style="color:#999988;font-style:italic">// Addr of Redis database</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic">// +optional</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    Addr string `json</span><span class="token operator" style="color:#393A34">:</span><span class="token string" style="color:#e3116c">"addr,omitempty"</span><span class="token plain">`</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic">// Db of Redis database</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic">// +optional</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    DB int `json</span><span class="token operator" style="color:#393A34">:</span><span class="token string" style="color:#e3116c">"db,omitempty"</span><span class="token plain">`</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic">// Poolsize of Redis database</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic">// +optional</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    Poolsize int `json</span><span class="token operator" style="color:#393A34">:</span><span class="token string" style="color:#e3116c">"poo lsize,omitempty"</span><span class="token plain">`</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic">// MinIdleConns of Redis database</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic">// +optional</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    MinIdleConns int `json</span><span class="token operator" style="color:#393A34">:</span><span class="token string" style="color:#e3116c">"minIdleConns,omitempty"</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><div class="language-json codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-json codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">type DBMethodTDEngine struct </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 comment" style="color:#999988;font-style:italic">// tdengineClientConfig of tdengine database</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic">// +optional</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    TDEngineClientConfig *TDEngineClientConfig `json</span><span class="token operator" style="color:#393A34">:</span><span class="token string" style="color:#e3116c">"TDEngineClientConfig,omitempty"</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">type TDEngineClientConfig struct </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 comment" style="color:#999988;font-style:italic">// addr of tdEngine database</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic">// +optional</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    Addr string `json</span><span class="token operator" style="color:#393A34">:</span><span class="token string" style="color:#e3116c">"addr,omitempty"</span><span class="token plain">`</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic">// dbname of tdEngine database</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic">// +optional</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    DBName string `json</span><span class="token operator" style="color:#393A34">:</span><span class="token string" style="color:#e3116c">"dbName,omitempty"</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><p>Refer to the link for more details.(<a href="https://github.com/kubeedge/kubeedge/pull/5064" target="_blank" rel="noopener noreferrer">#5064</a>)</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="new-usb-camera-mapper">New USB Camera Mapper<a href="#new-usb-camera-mapper" class="hash-link" aria-label="Direct link to New USB Camera Mapper" title="Direct link to New USB Camera Mapper">​</a></h3><p>Based on the mapper and dmi framework in KubeEdge v1.15.0, a mapper for USB cameras has been developed, which supports data push to Influxdb, mqtt, and http. It has been successfully applied in practice.</p><p>Refer to the link for more details.(<a href="https://github.com/kubeedge/mappers-go/pull/122" target="_blank" rel="noopener noreferrer">#122</a>)</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="keadms-enhancement">Keadm’s Enhancement<a href="#keadms-enhancement" class="hash-link" aria-label="Direct link to Keadm’s Enhancement" title="Direct link to Keadm’s Enhancement">​</a></h3><ul><li><p>When using Keadm join in kubeEdge v1.16, it supports the selection of communication protocols for edge nodes and cloud center nodes. The cloud edge communication protocol is configured through the parameter --hub-protocol, and currently supports two communication protocols: websocket and quic.</p><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>When the --hub-protocol parameter is configured as quic, it is necessary to set the port of the parameter --cloudcore-ipport  to 10001 and modify configmap in cloudcore to open the quic protocol.</p></div></div><p>Refer to the link for more details.(<a href="https://github.com/kubeedge/kubeedge/pull/5156" target="_blank" rel="noopener noreferrer">#5156</a>)</p></li><li><p>In KubeEdge v1.16, it is already supported for Keadm to complete edgecore deployment through Keadm join without installing the CNI plugin, decoupling the deployment of edge nodes from the CNI plugin. At the same time, this feature has been synchronized to v1.12 and later versions.</p><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>If the application deployed on edge nodes needs to use container networks, it is still necessary to install the CNI plugin after deploying edgecore.</p></div></div><p>Refer to the link for more details.(<a href="https://github.com/kubeedge/kubeedge/pull/5196" target="_blank" rel="noopener noreferrer">#5196</a>)</p></li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="upgrade-kubernetes-dependency-to-v1277">Upgrade Kubernetes Dependency to v1.27.7<a href="#upgrade-kubernetes-dependency-to-v1277" class="hash-link" aria-label="Direct link to Upgrade Kubernetes Dependency to v1.27.7" title="Direct link to Upgrade Kubernetes Dependency to v1.27.7">​</a></h3><p>Upgrade the vendered kubernetes version to v1.27.7, users are now able to use the feature of new version on the cloud and on the edge side.</p><p>Refer to the link for more details. (<a href="https://github.com/kubeedge/kubeedge/pull/5121" target="_blank" rel="noopener noreferrer">#5121</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><p>Now we use DaemonSet to manage the mqtt broker mosquitto. You need to consider whether to use the static pod managed mqtt broker in the edge node or use the DaemonSet managed mqtt broker in the cloud, they cannot coexist and there will be port conflicts. You can read the guide <code>For edge node low version compatibility</code> in <a href="https://github.com/kubeedge/kubeedge/issues/5233" target="_blank" rel="noopener noreferrer">#5233</a>.</p></li><li><p>In this release, the flag <code>with-mqtt</code> will be set to deprecated and default to false, but will not be removed. After v1.18, the code related to static pod management will be removed in the edge, and the flag <code>with-mqtt</code> no longer supported.</p></li></ul>]]></content>
        <author>
            <name>KubeEdge SIG Release</name>
            <uri>https://github.com/kubeedge-bot</uri>
        </author>
        <category label="KubeEdge" term="KubeEdge"/>
        <category label="kubeedge" term="kubeedge"/>
        <category label="edge computing" term="edge computing"/>
        <category label="kubernetes edge computing" term="kubernetes edge computing"/>
        <category label="K8s edge orchestration" term="K8s edge orchestration"/>
        <category label="edge computing platform" term="edge computing platform"/>
        <category label="cloud native" term="cloud native"/>
        <category label="iot" term="iot"/>
        <category label="iiot" term="iiot"/>
        <category label="release v1.16" term="release v1.16"/>
        <category label="v1.16" term="v1.16"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[KubeEdge v1.15 is live!]]></title>
        <id>https://kubeedge.io/blog/release-v1.15</id>
        <link href="https://kubeedge.io/blog/release-v1.15"/>
        <updated>2023-10-13T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[On Oct 13, 2023, KubeEdge released v1.15. The new version introduces several enhanced features, significantly improving support for Windows-based edge nodes, device management, and data plane capabilities.]]></summary>
        <content type="html"><![CDATA[<p>On Oct 13, 2023, KubeEdge released v1.15. The new version introduces several enhanced features, significantly improving support for Windows-based edge nodes, device management, and data plane capabilities.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="v115-whats-new">v1.15 What's New<a href="#v115-whats-new" class="hash-link" aria-label="Direct link to v1.15 What's New" title="Direct link to v1.15 What's New">​</a></h2><ul><li><p><a href="#support-windows-based-edge-nodes">Support Windows-based Edge Nodes</a></p></li><li><p><a href="#new-v1beta1-version-of-device-api">New v1beta1 version of Device API</a></p></li><li><p><a href="#support-alpha-version-of-dmi-dateplane-and-mapper-framework">Support Alpha version of DMI DatePlane and Mapper-Framework</a></p></li><li><p><a href="#support-kubernetes-native-static-pod-on-edge-nodes">Support Kubernetes native Static Pod on Edge Nodes</a></p></li><li><p><a href="#support-more-kubernetes-native-plugin-running-on-edge-node">Support more Kubernetes Native Plugin Running on Edge Node</a></p></li><li><p><a href="#upgrade-kubernetes-dependency-to-v1267">Upgrade Kubernetes Dependency to v1.26.7</a></p></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="support-windows-based-edge-nodes">Support Windows-based Edge Nodes<a href="#support-windows-based-edge-nodes" class="hash-link" aria-label="Direct link to Support Windows-based Edge Nodes" title="Direct link to Support Windows-based Edge Nodes">​</a></h3><p>Edge computing involves various types of devices, including sensors, cameras, and industrial control devices, some of which may run on the Windows OS. In order to support these devices and use cases, supporting Windows Server nodes is necessary for KubeEdge.</p><p>In this release, KubeEdge supports the edge node running on Windows Server 2019, and supports Windows container running on edge node, thereby extending KubeEdge to the Windows ecosystem and expanding its use cases and ecosystem.</p><p>Refer to the link for more details. (<a href="https://github.com/kubeedge/kubeedge/pull/4914" target="_blank" rel="noopener noreferrer">#4914</a>, <a href="https://github.com/kubeedge/kubeedge/pull/4967" target="_blank" rel="noopener noreferrer">#4967</a>)</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="new-v1beta1-version-of-device-api">New v1beta1 version of Device API<a href="#new-v1beta1-version-of-device-api" class="hash-link" aria-label="Direct link to New v1beta1 version of Device API" title="Direct link to New v1beta1 version of Device API">​</a></h3><p>The device API is updated from <code>v1alpha2</code> to <code>v1beta1</code>, in v1beta1 API updates include:</p><ul><li><p>The built-in protocols include Modbus, Opc-UA and Bluetooth are removed in device instance, and the built-in mappers for these proytocols still exists and will be maintained and updated to latest version.</p></li><li><p>Users must define the protocol config through <code>CustomizedValue</code> in <code>ProtocolConfig</code>.</p></li><li><p>DMI date plane related fields are added, users can config the collection and reporting frequency of device data, and the destination to which(such as database, httpserver) data is pushed.</p></li><li><p>Controls whether to report device data to cloud.</p></li></ul><p>Refer to the link for more details. (<a href="https://github.com/kubeedge/kubeedge/pull/4983" target="_blank" rel="noopener noreferrer">#4983</a>)</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="support-alpha-version-of-dmi-dateplane-and-mapper-framework">Support Alpha version of DMI DatePlane and Mapper-Framework<a href="#support-alpha-version-of-dmi-dateplane-and-mapper-framework" class="hash-link" aria-label="Direct link to Support Alpha version of DMI DatePlane and Mapper-Framework" title="Direct link to Support Alpha version of DMI DatePlane and Mapper-Framework">​</a></h3><p>Alpha version of DMI date plane is supported, DMI date plane is mainly implemented in mapper, providing interface for pushing data, pulling data, and storing data in database.</p><p>To make writing mapper easier, a mapper development framework subproject <strong>Mapper-Framework</strong> is provided in this release. Mapper-Framework provides mapper runtime libs and tools for scaffolding and code generation to bootstrap a new mapper project. Users only need to run a command <code>make generate</code> to generate a mapper project, then add protocol related code to mapper.</p><p>Refer to the link for more details. (<a href="https://github.com/kubeedge/kubeedge/pull/5023" target="_blank" rel="noopener noreferrer">#5023</a>)</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="support-kubernetes-native-static-pod-on-edge-nodes">Support Kubernetes native Static Pod on Edge Nodes<a href="#support-kubernetes-native-static-pod-on-edge-nodes" class="hash-link" aria-label="Direct link to Support Kubernetes native Static Pod on Edge Nodes" title="Direct link to Support Kubernetes native Static Pod on Edge Nodes">​</a></h3><p>Kubernetes native <code>Static Pod</code> is supported on edge node in this release. Users can create pods on edge nodes by place pod manifests in <code>/etc/kubeedge/manifests</code>, same as that on the Kubernetes node.</p><p>Refer to the link for more details. (<a href="https://github.com/kubeedge/kubeedge/pull/4825" target="_blank" rel="noopener noreferrer">#4825</a>)</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="support-more-kubernetes-native-plugin-running-on-edge-node">Support more Kubernetes Native Plugin Running on Edge Node<a href="#support-more-kubernetes-native-plugin-running-on-edge-node" class="hash-link" aria-label="Direct link to Support more Kubernetes Native Plugin Running on Edge Node" title="Direct link to Support more Kubernetes Native Plugin Running on Edge Node">​</a></h3><p>Kubernetes non-resource kind request <code>/version</code> is supported from edge node, users now can do <code>/version</code> requests in edge node from metaserver. In addition, it can easily support other non-resource kind of requests like <code>/healthz</code> in edge node with the current framework. Many kubernetes plugins like cilium/calico which depend on these non-resource kind of requests, now can run on edge nodes.</p><p>Refer to the link for more details. (<a href="https://github.com/kubeedge/kubeedge/pull/4904" target="_blank" rel="noopener noreferrer">#4904</a>)</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="upgrade-kubernetes-dependency-to-v1267">Upgrade Kubernetes Dependency to v1.26.7<a href="#upgrade-kubernetes-dependency-to-v1267" class="hash-link" aria-label="Direct link to Upgrade Kubernetes Dependency to v1.26.7" title="Direct link to Upgrade Kubernetes Dependency to v1.26.7">​</a></h3><p>Upgrade the vendered kubernetes version to v1.26.7, users are now able to use the feature of new version on the cloud and on the edge side.</p><p>Refer to the link for more details. (<a href="https://github.com/kubeedge/kubeedge/pull/4929" target="_blank" rel="noopener noreferrer">#4929</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><p>In KubeEdge v1.15, new v1beta1 version of device API is incompatible with earlier versions of v1alpha1, users need to update the device API yamls to v1bata1 if you want to use v1.15.</p></li><li><p>In KubeEdge v1.15, users need to upgrade the containerd to v1.6.0 or later. Containerd minor version 1.5 and older will not be supported in KubeEdge v1.15.<br>
<!-- -->Ref: <a href="https://kubernetes.io/blog/2022/11/18/upcoming-changes-in-kubernetes-1-26/#cri-api-removal" target="_blank" rel="noopener noreferrer">https://kubernetes.io/blog/2022/11/18/upcoming-changes-in-kubernetes-1-26/#cri-api-removal</a></p></li><li><p>In KubeEdge v1.14, EdgeCore has removed the dockeshim support, so users can only use <code>remote</code> type runtime, and uses <code>containerd</code> runtime by default. If you want to use <code>docker</code> runtime in v1.15, you also need to first set <code>edged.containerRuntime=remote</code> and corresponding docker configuration like <code>RemoteRuntimeEndpoint</code> and <code>RemoteImageEndpoint</code> in EdgeCore, then install the cri-dockerd tools as docs below:
<a href="https://github.com/kubeedge/kubeedge/issues/4843" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubeedge/issues/4843</a></p></li></ul>]]></content>
        <author>
            <name>KubeEdge SIG Release</name>
            <uri>https://github.com/kubeedge-bot</uri>
        </author>
        <category label="KubeEdge" term="KubeEdge"/>
        <category label="kubeedge" term="kubeedge"/>
        <category label="edge computing" term="edge computing"/>
        <category label="kubernetes edge computing" term="kubernetes edge computing"/>
        <category label="K8s edge orchestration" term="K8s edge orchestration"/>
        <category label="edge computing platform" term="edge computing platform"/>
        <category label="cloud native" term="cloud native"/>
        <category label="iot" term="iot"/>
        <category label="iiot" term="iiot"/>
        <category label="release v1.15" term="release v1.15"/>
        <category label="v1.15" term="v1.15"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[KubeEdge v1.14 is live!]]></title>
        <id>https://kubeedge.io/blog/release-v1.14</id>
        <link href="https://kubeedge.io/blog/release-v1.14"/>
        <updated>2023-07-01T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[On July 1, 2023, KubeEdge released v1.14. The new version introduces several enhanced features, significantly improving security, reliability, and user experience.]]></summary>
        <content type="html"><![CDATA[<p>On July 1, 2023, KubeEdge released v1.14. The new version introduces several enhanced features, significantly improving security, reliability, and user experience.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="v114-whats-new">v1.14 What's New<a href="#v114-whats-new" class="hash-link" aria-label="Direct link to v1.14 What's New" title="Direct link to v1.14 What's New">​</a></h2><ul><li><p><a href="#support-authentication-and-authorization-for-kube-api-endpoint-for-applications-on-edge-nodes">Support Authentication and Authorization for Kube-API Endpoint for Applications On Edge Nodes</a></p></li><li><p><a href="#support-cluster-scope-resource-reliable-delivery-to-edge-node">Support Cluster Scope Resource Reliable Delivery to Edge Node</a></p></li><li><p><a href="#upgrade-kubernetes-dependency-to-v12414">Upgrade Kubernetes Dependency to v1.24.14</a></p></li><li><p><a href="#support-kubectl-attach-to-container-running-on-edge-node">Support Kubectl Attach to Container Running on Edge Node</a></p></li><li><p><a href="#alpha-version-of-kubeedge-dashboard">Alpha version of KubeEdge Dashboard</a></p></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="support-authentication-and-authorization-for-kube-api-endpoint-for-applications-on-edge-nodes">Support Authentication and Authorization for Kube-API Endpoint for Applications On Edge Nodes<a href="#support-authentication-and-authorization-for-kube-api-endpoint-for-applications-on-edge-nodes" class="hash-link" aria-label="Direct link to Support Authentication and Authorization for Kube-API Endpoint for Applications On Edge Nodes" title="Direct link to Support Authentication and Authorization for Kube-API Endpoint for Applications On Edge Nodes">​</a></h3><p>The Kube-API endpoint for edge applications is implemented through MetaServer in edegcore. However, in previous versions, the authentication and authorization of Kube-API endpoint are performed in the cloud, which prevents authentication and authorization especially in offline scenarios on the edge node.</p><p>In this release, the authentication and authorization functionalities are implemented within the MetaServer at edge, which allows for limiting the access permissions of edge applications when accessing Kube-API endpoint at edge.</p><p>Refer to the link for more details. (<a href="https://github.com/kubeedge/kubeedge/pull/4802" target="_blank" rel="noopener noreferrer">#4802</a>)</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="support-cluster-scope-resource-reliable-delivery-to-edge-node">Support Cluster Scope Resource Reliable Delivery to Edge Node<a href="#support-cluster-scope-resource-reliable-delivery-to-edge-node" class="hash-link" aria-label="Direct link to Support Cluster Scope Resource Reliable Delivery to Edge Node" title="Direct link to Support Cluster Scope Resource Reliable Delivery to Edge Node">​</a></h3><p>The cluster scope resource can guarantee deliver to the edge side reliably since this release, especially include using list-watch global resources, the cluster scope resource can be delivered to the edge side reliably, and the edge applications can work normally.</p><p>Refer to the link for more details. (<a href="https://github.com/kubeedge/kubeedge/pull/4758" target="_blank" rel="noopener noreferrer">#4758</a>)</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="upgrade-kubernetes-dependency-to-v12414">Upgrade Kubernetes Dependency to v1.24.14<a href="#upgrade-kubernetes-dependency-to-v12414" class="hash-link" aria-label="Direct link to Upgrade Kubernetes Dependency to v1.24.14" title="Direct link to Upgrade Kubernetes Dependency to v1.24.14">​</a></h3><p>Upgrade the vendered kubernetes version to v1.24.14, users are now able to use the feature of new version on the cloud and on the edge side.</p><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 dockershim has been removed, which means users can't use docker runtime directly in this release.</p></div></div><p>Refer to the link for more details. (<a href="https://github.com/kubeedge/kubeedge/pull/4789" target="_blank" rel="noopener noreferrer">#4789</a>)</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="support-kubectl-attach-to-container-running-on-edge-node">Support Kubectl Attach to Container Running on Edge Node<a href="#support-kubectl-attach-to-container-running-on-edge-node" class="hash-link" aria-label="Direct link to Support Kubectl Attach to Container Running on Edge Node" title="Direct link to Support Kubectl Attach to Container Running on Edge Node">​</a></h3><p>KubeEdge already support <code>kubectl logs/exe</code> command, <code>kubectl attach</code> is supported in this release. <code>kubectl attach</code> command can attach to a running container at edge node. Users can execute these commands in the cloud and no need to operate on the edge nodes.</p><p>Refer to the link for more details. (<a href="https://github.com/kubeedge/kubeedge/pull/4734" target="_blank" rel="noopener noreferrer">#4734</a>)</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="alpha-version-of-kubeedge-dashboard">Alpha version of KubeEdge Dashboard<a href="#alpha-version-of-kubeedge-dashboard" class="hash-link" aria-label="Direct link to Alpha version of KubeEdge Dashboard" title="Direct link to Alpha version of KubeEdge Dashboard">​</a></h3><p>KubeEdge dashboard provides a graphical user interface (GUI) for managing and monitoring your KubeEdge clusters. It allows users to manage edge applications running in the cluster and troubleshoot them.</p><p>Refer to the link for more details. (<a href="https://github.com/kubeedge/dashboard" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/dashboard</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>On KubeEdge v1.14, EdgeCore has removed the dockeshim support, so users can only use <code>remote</code> type runtime, and uses <code>containerd</code> runtime by default. If you want to use <code>docker</code> runtime, you must first set <code>edged.containerRuntime=remote</code> and corresponding docker configuration like <code>RemoteRuntimeEndpoint</code> and <code>RemoteImageEndpoint</code> in EdgeCore, then install the cri-dockerd tools as docs below: <a href="https://github.com/kubeedge/kubeedge/issues/4843" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubeedge/issues/4843</a></li></ul>]]></content>
        <author>
            <name>KubeEdge SIG Release</name>
            <uri>https://github.com/kubeedge-bot</uri>
        </author>
        <category label="KubeEdge" term="KubeEdge"/>
        <category label="kubeedge" term="kubeedge"/>
        <category label="edge computing" term="edge computing"/>
        <category label="kubernetes edge computing" term="kubernetes edge computing"/>
        <category label="K8s edge orchestration" term="K8s edge orchestration"/>
        <category label="edge computing platform" term="edge computing platform"/>
        <category label="cloud native" term="cloud native"/>
        <category label="iot" term="iot"/>
        <category label="iiot" term="iiot"/>
        <category label="release v1.14" term="release v1.14"/>
        <category label="v1.14" term="v1.14"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[KubeEdge - CNCF's First SLSA 3 Project]]></title>
        <id>https://kubeedge.io/blog/reach-slsa-l3</id>
        <link href="https://kubeedge.io/blog/reach-slsa-l3"/>
        <updated>2023-01-20T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[In July 2022, the KubeEdge community completed a third-party security audit of KubeEdge and released a paper on cloud native edge computing security threat analysis and protection. Based on the security threat model and audit suggestions, the community consistently strengthens the KubeEdge software supply chain. Now, we are excited to announce that KubeEdge v1.13.0 (including both binary and container image artifacts), released on January 18, 2023, achieves SLSA 3 compliance, first of its kind in the CNCF community.]]></summary>
        <content type="html"><![CDATA[<p>In July 2022, the KubeEdge community completed a <a href="https://github.com/kubeedge/community/blob/master/sig-security/sig-security-audit/KubeEdge-security-audit-2022.pdf" target="_blank" rel="noopener noreferrer">third-party security audit of KubeEdge</a> and released a paper on cloud native edge computing security threat analysis and protection. Based on the security threat model and audit suggestions, the community consistently strengthens the KubeEdge software supply chain. Now, we are excited to announce that KubeEdge v1.13.0 (including both binary and container image artifacts), released on January 18, 2023, achieves SLSA 3 compliance, first of its kind in the CNCF community.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="why-is-slsa-3-compliance-important-to-kubeedge">Why Is SLSA 3 Compliance Important to KubeEdge<a href="#why-is-slsa-3-compliance-important-to-kubeedge" class="hash-link" aria-label="Direct link to Why Is SLSA 3 Compliance Important to KubeEdge" title="Direct link to Why Is SLSA 3 Compliance Important to KubeEdge">​</a></h2><p>Software supply chain integrity attacks (unauthorized modification of software packages) have been increasing in the past three years. After KubeEdge reaches SLSA 3, the E2E security (from source code build to release) is hardened, preventing malicious tampering of binary and container image artifacts. Thanks to SLSA, we can enhance the integrity of software artifacts, against tampering or any type of unauthorized modification of the software or software package, and enable software to defend against common supply chain attacks.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="about-slsa">About SLSA<a href="#about-slsa" class="hash-link" aria-label="Direct link to About SLSA" title="Direct link to About SLSA">​</a></h2><p>Proposed by Google, SLSA (Supply Chain Levels for Software Artifacts) is a security framework and a check-list of standards and controls to prevent tampering, improve software supply chain integrity, and secure software packages and infrastructure in projects, businesses or enterprises. It is not a single tool, but a step-by-step outline to prevent artifacts from being tampered with and tampered artifacts from being used, and at the higher levels, to strengthen the platforms that make up a supply chain. Manufacturers follow the SLSA guidelines to safeguard their software, and users make decisions based on the security status of software packages.</p><p>SLSA is currently in alpha, and related definitions are subject to change.</p><p>The following figure describes the known attack points in software supply chains. For details, see <a href="https://slsa.dev/" target="_blank" rel="noopener noreferrer">https://slsa.dev/</a>.</p><p><img loading="lazy" alt="img" src="/assets/images/slsa-dev-9956b5ed19fef734a38384ffb8602be1.png" width="964" height="538" class="img_ev3q"></p><p><strong>SLSA introduces many new tools and concepts, such as:</strong></p><ul><li>Artifact: any artifact file generated by a build pipeline, such as container images, language packages, and compiled binary files.</li><li>Provenance: built metadata, including the build steps, build sources, and dependencies.</li><li>Digest: the result of a cryptographic hash function. The hash function generates a fixed-size value that uniquely identifies an artifact, such as an SHA-256 hash of a container image.</li><li>Attestation: an encrypted and signed file that records the source of software artifacts.</li><li>Immutable references: an identifier that is guaranteed to always point to the same, immutable artifact, such as a specific container image or language package.</li><li>Build integrity: verifies the output integrity of the build pipeline.</li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="how-kubeedge-reaches-slsa-3">How KubeEdge Reaches SLSA 3<a href="#how-kubeedge-reaches-slsa-3" class="hash-link" aria-label="Direct link to How KubeEdge Reaches SLSA 3" title="Direct link to How KubeEdge Reaches SLSA 3">​</a></h2><p>The SLSA requirements are arranged into four levels. The higher the level, the higher the requirements. For details, see <a href="https://slsa.dev/spec/v0.1/requirements" target="_blank" rel="noopener noreferrer">https://slsa.dev/spec/v0.1/requirements</a>.</p><p>When the third-party security audit report was released in July 2022, KubeEdge did not meet SLSA 3 requirements in terms of SLSA provenance. After continuous hardening by SIG-Security, KubeEdge finally achieved SLSA 3 in January 2023. The following table lists the compliance status of KubeEdge in <strong>Source, Build, Provenance, and Common</strong>. ("Y" indicates compliance, while blank indicates non-compliance.)</p><p><strong>SLSA requirements and compliance</strong></p><table><thead><tr><th><strong>Requirement</strong></th><th><strong>L1</strong></th><th><strong>L2</strong></th><th><strong>L3</strong></th><th><strong>L4</strong></th></tr></thead><tbody><tr><td><strong>Source</strong></td><td></td><td></td><td></td><td></td></tr><tr><td>Version  controlled</td><td></td><td>Y</td><td>Y</td><td>Y</td></tr><tr><td>Verified  history</td><td></td><td></td><td>Y</td><td>Y</td></tr><tr><td>Retained  indefinitely</td><td></td><td></td><td>Y</td><td>Y</td></tr><tr><td>Two-person  reviewed</td><td></td><td></td><td></td><td>Y</td></tr><tr><td><strong>Build</strong></td><td></td><td></td><td></td><td></td></tr><tr><td>Scripted  build</td><td>Y</td><td>Y</td><td>Y</td><td>Y</td></tr><tr><td>Build service</td><td></td><td>Y</td><td>Y</td><td>Y</td></tr><tr><td>Build as code</td><td></td><td></td><td>Y</td><td>Y</td></tr><tr><td>Ephemeral  environment</td><td></td><td></td><td>Y</td><td>Y</td></tr><tr><td>Isolated</td><td></td><td></td><td>Y</td><td>Y</td></tr><tr><td>Parameterless</td><td></td><td></td><td></td><td>Y</td></tr><tr><td>Hermetic</td><td></td><td></td><td></td><td>Y</td></tr><tr><td><strong>Provenance</strong></td><td></td><td></td><td></td><td></td></tr><tr><td>Available</td><td>Y</td><td>Y</td><td>Y</td><td>To-do</td></tr><tr><td>Authenticated</td><td></td><td>Y</td><td>Y</td><td>To-do</td></tr><tr><td>Service  generated</td><td></td><td>Y</td><td>Y</td><td>To-do</td></tr><tr><td>Non-falsifiable</td><td></td><td></td><td>Y</td><td>To-do</td></tr><tr><td>Dependencies  complete</td><td></td><td></td><td></td><td>To-do</td></tr><tr><td><strong>Common</strong></td><td></td><td></td><td></td><td></td></tr><tr><td>Security</td><td></td><td></td><td></td><td>Y</td></tr><tr><td>Access</td><td></td><td></td><td></td><td>Y</td></tr><tr><td>Superusers</td><td></td><td></td><td></td><td>Y</td></tr></tbody></table><p> This section describes how KubeEdge meets the build and provenance requirements of SLSA 3. The build/provenance requirements and corresponding KubeEdge solutions are as follows:</p><p><strong>Build requirements:</strong></p><p><strong>a)  Scripted build:</strong> All build steps were fully defined in some sort of "build script".</p><p><strong>b)  Build service:</strong> All build steps ran using some build services, not on a developer's workstation. Build services include GitHub Actions and those provided by third-party cloud platforms.</p><p><strong>c)  Build as code:</strong> The build definition and configuration executed by the build service is verifiably derived from text file definitions stored in a version control system.</p><p><strong>d)  Ephemeral environment:</strong> The build service ensured that the build steps ran in an ephemeral environment, such as a container or VM, provisioned solely for this build, and not reused from a prior build.</p><p><strong>e)  Isolated:</strong> The build service ensured that the build steps ran in an isolated environment free of influence from other build instances, whether prior or concurrent.</p><p><strong>f)   Parameterless:</strong> The build output cannot be affected by user parameters other than the build entry point and the top-level source location. In other words, the build is fully defined through the build script and nothing else.</p><p><strong>g)  Hermetic:</strong> All transitive build steps, sources, and dependencies were fully declared up front with immutable references, and the build steps ran with no network access.</p><p><strong>Solution:</strong></p><p>All KubeEdge build processes are automatically executed by scripts on GitHub. As a build service (with definition files and configuration files stored in the <strong>.github/workflows</strong> directory), GitHub Actions ensure that build steps are traceable and verifiable, the build environment is ephemeral and isolated, and the build parameters and dependencies cannot be tampered with. </p><p><strong>Provenance requirements:</strong></p><p><strong>a)  Available:</strong> The provenance is available to the consumer in a format that the consumer accepts. The format SHOULD be in-toto SLSA Provenance, but another format MAY be used if both producer and consumer agree and it meets all the other requirements.</p><p><strong>b)  Authenticated:</strong> The provenance's authenticity and integrity can be verified by the consumer. This SHOULD be through a digital signature from a private key accessible only to the service generating the provenance.</p><p><strong>c)  Service generated:</strong> The data in the provenance MUST be obtained from the build service.</p><p><strong>d)  Non-falsifiable:</strong> Provenance cannot be falsified by the build service's users.</p><p><strong>e)  Dependencies complete:</strong> Provenance records all build dependencies that were available while running the build steps. This includes the initial state of the machine, VM, or container of the build worker.</p><p><strong>Solution:</strong></p><p>slsa-github-generator, SLSA's official GitHub build project, is integrated into the artifacts (including binary files and container images) released in KubeEdge to achieve SLSA 3.</p><p>The KubeEdge version release process (<em>.github/workflows/release.yml</em>) integrates <em>slsa-framework/slsa-github-generator/.github/workflows/generator_generic_slsa3.yml</em> and <em>slsa-framework/slsa-github-generator/.github/workflows/generator_container_slsa3.yml</em> to ensure that the process of building and releasing artifacts (including binary files and container images) meets the SLSA 3 requirements.</p><p>For details about slsa-github-generator, see <a href="https://github.com/slsa-framework/slsa-github-generator" target="_blank" rel="noopener noreferrer">https://github.com/slsa-framework/slsa-github-generator</a>.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="about-provenance">About Provenance<a href="#about-provenance" class="hash-link" aria-label="Direct link to About Provenance" title="Direct link to About Provenance">​</a></h3><p>Provenance is the build metadata, a proof of the software build and release execution process and can be verified. It includes build steps, build sources, and dependencies, such as source code repositories, code branches, and configuration files. Provenance content of SLSA 3 is authentic, tamper-proof, and will not be changed by project maintainers. The provenance file (named <a href="https://github.com/kubeedge/kubeedge/releases/download/v1.13.0/multiple.intoto.jsonl" target="_blank" rel="noopener noreferrer">multiple.intoto.jsonl</a>) of binary artifacts is released with the release software package. The provenance file of a container image is uploaded to the KubeEdge Docker Hub public repository together with the image. For details about the Provenance formats, see <a href="https://github.com/slsa-framework/slsa-github-generator/blob/main/internal/builders/generic/README.md#provenance-format" target="_blank" rel="noopener noreferrer">https://github.com/slsa-framework/slsa-github-generator/blob/main/internal/builders/generic/README.md#provenance-format</a>.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="how-to-verify-that-kubeedge-release-artifacts-meet-slsa-3">How to Verify That KubeEdge Release Artifacts Meet SLSA 3<a href="#how-to-verify-that-kubeedge-release-artifacts-meet-slsa-3" class="hash-link" aria-label="Direct link to How to Verify That KubeEdge Release Artifacts Meet SLSA 3" title="Direct link to How to Verify That KubeEdge Release Artifacts Meet SLSA 3">​</a></h3><p>For details, see <a href="https://github.com/kubeedge/kubeedge/pull/4285" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubeedge/pull/4285</a>.</p><p>The following is an example:</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">$ COSIGN_EXPERIMENTAL=1 cosign verify-attestation --type slsaprovenance --policy policy.cue kubeedge/cloudcore:v1.13.0</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><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">    "_type": "https://in-toto.io/Statement/v0.1",</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    "predicateType": "https://slsa.dev/provenance/v0.2",</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    "subject": [{</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            "name": "index.docker.io/kubeedge/cloudcore",</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            "digest": {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                "sha256": "825642e63ab5b924e2fa0661cd14d544d0be151c4bdba6f3f42796c977fbe211"</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">        }</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">    "predicate": {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        "builder": {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            "id": "https://github.com/slsa-framework/slsa-github-generator/.github/workflows/generator_container_slsa3.yml@refs/tags/v1.4.0"</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">        "buildType": "https://github.com/slsa-framework/slsa-github-generator/container@v1",</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        "invocation": {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            "configSource": {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                "uri": "git+https://github.com/kubeedge/kubeedge@refs/tags/v1.13.0",</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                "digest": {</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                    "sha1": "ee357a0d5341241143e88d45df99fde865c987de"</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">                "entryPoint": ".github/workflows/release.yml"</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">...</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><h2 class="anchor anchorWithStickyNavbar_LWe7" id="signing-and-working-principles-of-slsa-github-generator">Signing and Working Principles of slsa-github-generator<a href="#signing-and-working-principles-of-slsa-github-generator" class="hash-link" aria-label="Direct link to Signing and Working Principles of slsa-github-generator" title="Direct link to Signing and Working Principles of slsa-github-generator">​</a></h2><p>OpenID Connect (OIDC) is used to prove the identity of a workflow to an external service (Sigstore). OIDC is a standard used across the web by identity providers to authenticate users for third parties. GitHub now supports OIDC in its workflows. Each time a workflow runs, a runner can create a unique JWT token from GitHub's OIDC provider. The token contains verifiable information about the workflow identity, including the caller repository, commit hash, trigger, and current (reusable) workflow path and reference.</p><p>With OIDC, the workflow proves its identity to Sigstore's Fulcio root certificate authority (an external authentication service). Fulcio signs a short-term certificate to prove the temporary signature key (generated in the runner) and binds the key to the workload identity. The signing record is stored in Sigstore's transparency log Rekor. A user can use the signed certificate as a trusted anchor to verify that the provenance was authenticated and cannot be falsified; it must have been created in a trusted builder. The process is as follows:</p><p><img loading="lazy" alt="img" src="/assets/images/sigstore-c01b845a047326ae858793968c0ee24e.png" width="1040" height="388" class="img_ev3q"></p><p>In 2022, slsa-github-generator was honored by the Sigstore community as Best User Adopter.</p><p><img loading="lazy" alt="img" src="/assets/images/best-user-adopter-3805ca4f3c13221d7b50b0a46613cd2a.png" width="798" height="324" class="img_ev3q"></p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="summary">Summary<a href="#summary" class="hash-link" aria-label="Direct link to Summary" title="Direct link to Summary">​</a></h2><p>SLSA plays an important role in the software supply chain security of KubeEdge. Based on the Sigstore capabilities, the entire software supply chain process of KubeEdge, from source code to release artifacts, is signed and verified to improve the security.</p><p><strong>References:</strong></p><p>[1]<!-- --> KubeEdge blog: <a href="https://kubeedge.io/en/blog/reach-slsa-l3/" target="_blank" rel="noopener noreferrer">https://kubeedge.io/en/blog/reach-slsa-l3/</a></p><p>[2]<!-- --> The third-party security audit of KubeEdge: <a href="https://github.com/kubeedge/community/blob/master/sig-security/sig-security-audit/KubeEdge-security-audit-2022.pdf" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/community/blob/master/sig-security/sig-security-audit/KubeEdge-security-audit-2022.pdf</a></p><p>[3]<!-- --> SLSA website: <a href="https://slsa.dev/" target="_blank" rel="noopener noreferrer">https://slsa.dev/</a></p><p>[4]<!-- --> Sigstore website: <a href="https://www.sigstore.dev/" target="_blank" rel="noopener noreferrer">https://www.sigstore.dev/</a></p><p>[5]<!-- --> SLSA Generator: <a href="https://github.com/slsa-framework/slsa-github-generator" target="_blank" rel="noopener noreferrer">https://github.com/slsa-framework/slsa-github-generator</a></p><p>[6]<!-- --> SLSA3 generic integration guide: <a href="https://slsa.dev/blog/2022/08/slsa-github-workflows-generic-ga" target="_blank" rel="noopener noreferrer">https://slsa.dev/blog/2022/08/slsa-github-workflows-generic-ga</a></p><p>[7]<!-- --> Improving software supply chain security with tamper-proof builds: <a href="https://security.googleblog.com/2022/04/improving-software-supply-chain.html" target="_blank" rel="noopener noreferrer">https://security.googleblog.com/2022/04/improving-software-supply-chain.html</a></p><p>[8]<!-- --> Sigstore November Roundup: <a href="https://blog.sigstore.dev/sigstore-november-roundup-8a852cec10fc/" target="_blank" rel="noopener noreferrer">https://blog.sigstore.dev/sigstore-november-roundup-8a852cec10fc/</a></p>]]></content>
        <author>
            <name>Vincent Lin</name>
            <uri>https://github.com/vincentgoat</uri>
        </author>
        <category label="KubeEdge" term="KubeEdge"/>
        <category label="edge computing" term="edge computing"/>
        <category label="slsa" term="slsa"/>
        <category label="Provenance" term="Provenance"/>
        <category label="slsa-github-generator" term="slsa-github-generator"/>
        <category label="sigstore" term="sigstore"/>
        <category label="Software supply chain" term="Software supply chain"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[KubeEdge v1.13 is live!]]></title>
        <id>https://kubeedge.io/blog/release-v1.13</id>
        <link href="https://kubeedge.io/blog/release-v1.13"/>
        <updated>2023-01-18T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[On Jan 18, 2023, KubeEdge released v1.13. The new version introduces several enhanced features, significantly improving performance, security, and edge device management.]]></summary>
        <content type="html"><![CDATA[<p>On Jan 18, 2023, KubeEdge released v1.13. The new version introduces several enhanced features, significantly improving performance, security, and edge device management.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="v113-whats-new">v1.13 What's New<a href="#v113-whats-new" class="hash-link" aria-label="Direct link to v1.13 What's New" title="Direct link to v1.13 What's New">​</a></h2><ul><li><p><a href="#performance-improvement">Performance Improvement</a></p></li><li><p><a href="#security-improvement">Security Improvement</a></p></li><li><p><a href="#upgrade-kubernetes-dependency-to-v12315">Upgrade Kubernetes Dependency to v1.23.15</a></p></li><li><p><a href="#modbus-mapper-based-on-dmi">Modbus Mapper based on DMI</a></p></li><li><p><a href="#support-rolling-upgrade-for-edge-nodes-from-cloud">Support Rolling Upgrade for Edge Nodes from Cloud</a></p></li><li><p><a href="#test-runner-for-conformance-test">Test Runner for conformance test</a></p></li><li><p><a href="#edgemesh-added-configurable-field-tunnellimitconfig-to-edge-tunnel-module">EdgeMesh: Added configurable field TunnelLimitConfig to edge-tunnel module</a></p></li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="performance-improvement">Performance Improvement<a href="#performance-improvement" class="hash-link" aria-label="Direct link to Performance Improvement" title="Direct link to Performance Improvement">​</a></h3><ul><li><p><strong>CloudCore memory usage is reduced by 40%</strong>, through unified generic Informer and reduce unnecessary cache. (<a href="https://github.com/kubeedge/kubeedge/pull/4375" target="_blank" rel="noopener noreferrer">#4375</a>, <a href="https://github.com/kubeedge/kubeedge/pull/4377" target="_blank" rel="noopener noreferrer">#4377</a>)</p></li><li><p>List-watch dynamicController processing optimization, each watcher has a separate channel and goroutine processing to improve processing efficiency (<a href="https://github.com/kubeedge/kubeedge/pull/4506" target="_blank" rel="noopener noreferrer">#4506</a>)</p></li><li><p>Added list-watch synchronization mechanism between cloud and edge and add dynamicController watch gc mechanism (<a href="https://github.com/kubeedge/kubeedge/pull/4484" target="_blank" rel="noopener noreferrer">#4484</a>)</p></li><li><p>Removed 10s hard delay when offline nodes turn online (<a href="https://github.com/kubeedge/kubeedge/pull/4490" target="_blank" rel="noopener noreferrer">#4490</a>)</p></li><li><p>Added prometheus monitor server and a metric connected_nodes to cloudHub. This metric tallies the number of connected nodes each cloudhub instance (<a href="https://github.com/kubeedge/kubeedge/pull/3646" target="_blank" rel="noopener noreferrer">#3646</a>)</p></li><li><p>Added pprof for visualization and analysis of profiling data (<a href="https://github.com/kubeedge/kubeedge/pull/3646" target="_blank" rel="noopener noreferrer">#3646</a>)</p></li><li><p>CloudCore configuration is now automatically adjusted according to nodeLimit to adapt to the number of nodes of different scales (<a href="https://github.com/kubeedge/kubeedge/pull/4376" target="_blank" rel="noopener noreferrer">#4376</a>)</p></li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="security-improvement">Security Improvement<a href="#security-improvement" class="hash-link" aria-label="Direct link to Security Improvement" title="Direct link to Security Improvement">​</a></h3><ul><li><p>KubeEdge is proud to announce that we are digitally signing all release artifacts (including binary artifacts and container images). Signing artifacts provides end users a chance to verify the integrity of the downloaded resource. It allows to mitigate man-in-the-middle attacks directly on the client side and therefore ensures the trustfulness of the remote serving the artifacts. By doing this, we reached the SLSA security assessment level L3 (<a href="https://github.com/kubeedge/kubeedge/pull/4285" target="_blank" rel="noopener noreferrer">#4285</a>)</p></li><li><p>Remove the token field in the edge node configuration file edgecore.yaml to eliminate the risk of edge information leakage (<a href="https://github.com/kubeedge/kubeedge/pull/4488" target="_blank" rel="noopener noreferrer">#4488</a>)</p></li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="upgrade-kubernetes-dependency-to-v12315">Upgrade Kubernetes Dependency to v1.23.15<a href="#upgrade-kubernetes-dependency-to-v12315" class="hash-link" aria-label="Direct link to Upgrade Kubernetes Dependency to v1.23.15" title="Direct link to Upgrade Kubernetes Dependency to v1.23.15">​</a></h3><p>Upgrade the vendered kubernetes version to v1.23.15, users are now able to use the feature of new version on the cloud and on the edge side.</p><p>Refer to the link for more details. (<a href="https://github.com/kubeedge/kubeedge/pull/4509" target="_blank" rel="noopener noreferrer">#4509</a>)</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="modbus-mapper-based-on-dmi">Modbus Mapper based on DMI<a href="#modbus-mapper-based-on-dmi" class="hash-link" aria-label="Direct link to Modbus Mapper based on DMI" title="Direct link to Modbus Mapper based on DMI">​</a></h3><p>Modbus Device Mapper based on DMI is provided, which is used to access Modbus protocol devices and uses DMI to synchronize the management plane messages of devices with edgecore.</p><p>Refer to the link for more details. (<a href="https://github.com/kubeedge/mappers-go/pull/79" target="_blank" rel="noopener noreferrer">mappers-go#79</a>)</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="support-rolling-upgrade-for-edge-nodes-from-cloud">Support Rolling Upgrade for Edge Nodes from Cloud<a href="#support-rolling-upgrade-for-edge-nodes-from-cloud" class="hash-link" aria-label="Direct link to Support Rolling Upgrade for Edge Nodes from Cloud" title="Direct link to Support Rolling Upgrade for Edge Nodes from Cloud">​</a></h3><p>Users now able to trigger rolling upgrade for edge nodes from cloud, and specify number of concurrent upgrade nodes with <code>nodeupgradejob.spec.concurrency</code>. The default Concurrency value is 1, which means upgrade edge nodes one by one.</p><p>Refer to the link for more details. (<a href="https://github.com/kubeedge/kubeedge/pull/4476" target="_blank" rel="noopener noreferrer">#4476</a>)</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="test-runner-for-conformance-test">Test Runner for conformance test<a href="#test-runner-for-conformance-test" class="hash-link" aria-label="Direct link to Test Runner for conformance test" title="Direct link to Test Runner for conformance test">​</a></h3><p>KubeEdge has provided the runner of the conformance test, which contains the scripts and related files of the conformance test.</p><p>Refer to the link for more details. (<a href="https://github.com/kubeedge/kubeedge/pull/4411" target="_blank" rel="noopener noreferrer">#4411</a>)</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="edgemesh-added-configurable-field-tunnellimitconfig-to-edge-tunnel-module">EdgeMesh: Added configurable field TunnelLimitConfig to edge-tunnel module<a href="#edgemesh-added-configurable-field-tunnellimitconfig-to-edge-tunnel-module" class="hash-link" aria-label="Direct link to EdgeMesh: Added configurable field TunnelLimitConfig to edge-tunnel module" title="Direct link to EdgeMesh: Added configurable field TunnelLimitConfig to edge-tunnel module">​</a></h3><p>The tunnel stream of the edge-tunnel module is used to manage the data stream state of the tunnel. Users can obtain a stable and configurable tunnel stream to ensure the reliability of user application traffic forwarding.</p><p>Users can configure the cache size of tunnel stream according to <code>TunnelLimitConfig</code> to support larger application relay traffic.</p><p>Refer to the link for more details. (<a href="https://github.com/kubeedge/edgemesh/pull/399" target="_blank" rel="noopener noreferrer">#399</a>)</p><p>Cancel the restrictions on the relay to ensure the stability of the user's streaming application or long link application.</p><p>Refer to the link for more details. (<a href="https://github.com/kubeedge/edgemesh/pull/400" target="_blank" rel="noopener noreferrer">#400</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>EdgeCore now uses <code>containerd</code> runtime by default on KubeEdge v1.13. If you want to use <code>docker</code> runtime, you must set <code>edged.containerRuntime=docker</code> and corresponding docker configuration like <code>DockerEndpoint</code>, <code>RemoteRuntimeEndpoint</code> and <code>RemoteImageEndpoint</code> in EdgeCore.</li></ul>]]></content>
        <author>
            <name>KubeEdge SIG Release</name>
            <uri>https://github.com/kubeedge-bot</uri>
        </author>
        <category label="KubeEdge" term="KubeEdge"/>
        <category label="kubeedge" term="kubeedge"/>
        <category label="edge computing" term="edge computing"/>
        <category label="kubernetes edge computing" term="kubernetes edge computing"/>
        <category label="K8s edge orchestration" term="K8s edge orchestration"/>
        <category label="edge computing platform" term="edge computing platform"/>
        <category label="cloud native" term="cloud native"/>
        <category label="iot" term="iot"/>
        <category label="iiot" term="iiot"/>
        <category label="release v1.13" term="release v1.13"/>
        <category label="v1.13" term="v1.13"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[KubeEdge v1.12 is live!]]></title>
        <id>https://kubeedge.io/blog/release-v1.12</id>
        <link href="https://kubeedge.io/blog/release-v1.12"/>
        <updated>2022-09-29T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[The KubeEdge community is thrilled to announce the release of KubeEdge v1.12! This release introduces several exciting new features and enhancements, including alpha implementation of the next-generation Cloud Native Device Management Interface (DMI), a new version of the lightweight Edged engine, high-availability mode for EdgeMesh, edge node upgrades from the cloud, authorization for the Edge Kube-API endpoint, and more.]]></summary>
        <content type="html"><![CDATA[<p>The KubeEdge community is thrilled to announce the release of KubeEdge v1.12! This release introduces several exciting new features and enhancements, including alpha implementation of the next-generation Cloud Native Device Management Interface (DMI), a new version of the lightweight Edged engine, high-availability mode for EdgeMesh, edge node upgrades from the cloud, authorization for the Edge Kube-API endpoint, and more.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="whats-new-in-kubeedge-v112">What's New in KubeEdge v1.12<a href="#whats-new-in-kubeedge-v112" class="hash-link" aria-label="Direct link to What's New in KubeEdge v1.12" title="Direct link to What's New in KubeEdge v1.12">​</a></h2><ul><li><p><a href="#alpha-implementation-of-next-gen-cloud-native-device-management-interface-dmi">Alpha Implementation of Next-Gen Cloud Native Device Management Interface (DMI)</a></p></li><li><p><a href="#next-gen-edged-graduates-to-ga-suitable-for-more-scenarios">Next-Gen Edged Graduates to GA: Suitable for More Scenarios</a></p></li><li><p><a href="#introducing-high-availability-mode-for-edgemesh">Introducing High-Availability Mode for EdgeMesh</a></p></li><li><p><a href="#support-edge-node-upgrade-from-the-cloud">Support Edge Node Upgrade from the Cloud</a></p></li><li><p><a href="#support-authorization-for-edge-kube-api-endpoint">Support Authorization for Edge Kube-API Endpoint</a></p></li><li><p><a href="#new-gige-mapper">New GigE Mapper</a></p></li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="alpha-implementation-of-next-gen-cloud-native-device-management-interface-dmi">Alpha Implementation of Next-Gen Cloud Native Device Management Interface (DMI)<a href="#alpha-implementation-of-next-gen-cloud-native-device-management-interface-dmi" class="hash-link" aria-label="Direct link to Alpha Implementation of Next-Gen Cloud Native Device Management Interface (DMI)" title="Direct link to Alpha Implementation of Next-Gen Cloud Native Device Management Interface (DMI)">​</a></h3><p>DMI makes KubeEdge's IoT device management more pluggable and modular in a cloud-native way, covering Device Lifecycle Management, Device Operation, and Device Data Management.</p><ul><li><p><strong>Device Lifecycle Management</strong>: Simplifies IoT device lifecycle management, making it as easy as managing a pod.</p></li><li><p><strong>Device Operation</strong>: Provides the ability to operate devices through the Kubernetes API.</p></li><li><p><strong>Device Data Management</strong>: Separates device data management from device management, allowing data to be consumed by local applications or synchronized to the cloud through a special tunnel.</p></li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="next-gen-edged-graduates-to-ga-suitable-for-more-scenarios">Next-Gen Edged Graduates to GA: Suitable for More Scenarios<a href="#next-gen-edged-graduates-to-ga-suitable-for-more-scenarios" class="hash-link" aria-label="Direct link to Next-Gen Edged Graduates to GA: Suitable for More Scenarios" title="Direct link to Next-Gen Edged Graduates to GA: Suitable for More Scenarios">​</a></h3><p>The new version of the lightweight Edged engine, optimized from Kubelet and integrated into EdgeCore, has graduated to General Availability (GA) in this release. The new Edged will continue to communicate with the cloud through a reliable transmission tunnel, making it suitable for a wider range of scenarios.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="introducing-high-availability-mode-for-edgemesh">Introducing High-Availability Mode for EdgeMesh<a href="#introducing-high-availability-mode-for-edgemesh" class="hash-link" aria-label="Direct link to Introducing High-Availability Mode for EdgeMesh" title="Direct link to Introducing High-Availability Mode for EdgeMesh">​</a></h3><p>KubeEdge v1.12 introduces a high-availability mode for EdgeMesh. Unlike the previous centralized relay mode, the EdgeMesh HA mode can set up multiple relay nodes. When some relay nodes fail, other relay nodes can continue to provide relay services, avoiding single points of failure and improving system stability.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="support-edge-node-upgrade-from-the-cloud">Support Edge Node Upgrade from the Cloud<a href="#support-edge-node-upgrade-from-the-cloud" class="hash-link" aria-label="Direct link to Support Edge Node Upgrade from the Cloud" title="Direct link to Support Edge Node Upgrade from the Cloud">​</a></h3><p>KubeEdge v1.12 introduces the NodeUpgradeJob v1alpha1 API to upgrade edge nodes from the cloud. With this API and its associated controller, users can upgrade selected edge nodes from the cloud and roll back to the original version if the upgrade fails.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="support-authorization-for-edge-kube-api-endpoint">Support Authorization for Edge Kube-API Endpoint<a href="#support-authorization-for-edge-kube-api-endpoint" class="hash-link" aria-label="Direct link to Support Authorization for Edge Kube-API Endpoint" title="Direct link to Support Authorization for Edge Kube-API Endpoint">​</a></h3><p>Authorization for the Edge Kube-API Endpoint is now available in KubeEdge v1.12. Third-party plugins and applications that depend on Kubernetes APIs on edge nodes must use a bearer token to communicate with the kube-apiserver via the HTTPS server in MetaServer.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="new-gige-mapper">New GigE Mapper<a href="#new-gige-mapper" class="hash-link" aria-label="Direct link to New GigE Mapper" title="Direct link to New GigE Mapper">​</a></h3><p>KubeEdge v1.12 includes a new GigE Device Mapper with a Golang implementation, which is used to access GigE Vision protocol cameras.</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><p>If you want to upgrade KubeEdge to v1.12, the configuration file in EdgeCore has been upgraded to v1alpha2. You must modify your configuration file for Edged in EdgeCore to adapt to the new Edged.</p></li><li><p>If you want to use authorization for the Edge Kube-API Endpoint, please enable the <code>RequireAuthorization</code> feature through the feature gate in both CloudCore and EdgeCore. If the <code>RequireAuthorization</code> feature is enabled, MetaServer will only serve HTTPS requests.</p></li><li><p>If you want to upgrade EdgeMesh to v1.12, you do not need to deploy the existing EdgeMesh-server, but you need to configure relayNodes.</p></li><li><p>If you want to run EdgeMesh v1.12 on KubeEdge v1.12 and use HTTPS requests to communicate with KubeEdge, you must set <code>kubeAPIConfig.metaServer.security.enable=true</code>.</p></li></ul><p>KubeEdge v1.12 brings exciting new features and improvements to the edge computing ecosystem. We invite you to explore the release and provide feedback to the community. Happy edge computing!</p>]]></content>
        <author>
            <name>KubeEdge SIG Release</name>
            <uri>https://github.com/kubeedge-bot</uri>
        </author>
        <category label="KubeEdge" term="KubeEdge"/>
        <category label="kubeedge" term="kubeedge"/>
        <category label="edge computing" term="edge computing"/>
        <category label="kubernetes edge computing" term="kubernetes edge computing"/>
        <category label="K8s edge orchestration" term="K8s edge orchestration"/>
        <category label="edge computing platform" term="edge computing platform"/>
        <category label="cloud native" term="cloud native"/>
        <category label="iot" term="iot"/>
        <category label="iiot" term="iiot"/>
        <category label="release v1.12" term="release v1.12"/>
        <category label="v1.12" term="v1.12"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Test Report on KubeEdge's Support for 100,000 Edge Nodes]]></title>
        <id>https://kubeedge.io/blog/scalability-test-report</id>
        <link href="https://kubeedge.io/blog/scalability-test-report"/>
        <updated>2022-07-13T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Abstract]]></summary>
        <content type="html"><![CDATA[<h2 class="anchor anchorWithStickyNavbar_LWe7" id="abstract">Abstract<a href="#abstract" class="hash-link" aria-label="Direct link to Abstract" title="Direct link to Abstract">​</a></h2><p>The population of KubeEdge brings in community interests in the scalability and scale of KubeEdge. Now, Kubernetes clusters powered by KubeEdge, as fully tested, can stably support 100,000 concurrent edge nodes and manage more than one million pods. This report introduces the metrics used in the test, the test procedure, and the method to connect to an ocean of edge nodes.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="background">Background<a href="#background" class="hash-link" aria-label="Direct link to Background" title="Direct link to Background">​</a></h2><p>Fast growing technologies, such as 5G networks, industrial Internet, and AI, are giving edge computing an important role in driving digital transformation. Cities, transportation, healthcare, manufacturing, and many other fields are becoming smart thanks to edge computing. According to Gartner, by 2023, the number of intelligent edge devices may be more than 20 times that of traditional IT devices. By 2028, the embedding of sensors, storage, computing, and advanced AI functions in edge devices will grow steadily. IoT devices are of various types and in large quantities. The increasing connected IoT devices are challenging management and O&amp;M.</p><p>At the same time, users in the KubeEdge community are expecting large-scale edge deployment. There are already some successful use cases for KubeEdge. In unmanned toll stations across China, there are nearly 100,000 edge nodes and more than 500,000 edge applications in this project, and the numbers keep growing. Another case is a vehicle-cloud collaboration platform, the industry-first cloud-edge-device system. It enables fast software upgrade and iteration for software-defined vehicles. On this platform, each vehicle is connected as an edge node, and the number of edge nodes will reach millions.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="introduction-to-kubeedge">Introduction to KubeEdge<a href="#introduction-to-kubeedge" class="hash-link" aria-label="Direct link to Introduction to KubeEdge" title="Direct link to Introduction to KubeEdge">​</a></h2><p><strong>KubeEdge</strong> is the <strong>industry's first cloud native edge computing framework</strong> designed for edge-cloud collaboration. Complementing Kubernetes for container orchestration and scheduling, KubeEdge allows applications, resources, data, and devices to collaborate between edges and the cloud. <strong>Devices, edges, and the cloud are now fully connected in edge computing</strong>.</p><p>In the KubeEdge architecture, the cloud is a unified control plane, which includes native Kubernetes management components and KubeEdge-developed CloudCore components. It listens to cloud resource changes and provides reliable, efficient cloud-edge messaging. At the edge side lie the EdgeCore components, including <a href="https://kubeedge.io/en/docs/architecture/edge/edged" target="_blank" rel="noopener noreferrer">Edged</a>, <a href="https://kubeedge.io/en/docs/architecture/edge/metamanager" target="_blank" rel="noopener noreferrer">MetaManager</a>, and <a href="https://kubeedge.io/en/docs/architecture/edge/edgehub" target="_blank" rel="noopener noreferrer">EdgeHub</a>. They receive messages from the cloud and manage the lifecycle of containers. The device mapper and event bus are responsible for device access.</p><p><img loading="lazy" alt="kubeedge-arch" src="/assets/images/kubeedge-arch-6555fd2e24b045c2ddc923dc2429f25d.png" width="814" height="403" class="img_ev3q"></p><p>Based on the Kubernetes control plane, KubeEdge allows nodes to be deployed more remotely and thereby extends edge-cloud collaboration. Kubernetes supports 5,000 nodes and 150,000 pods, which are far from enough for edge computing in Internet of Everything (IoE). The access of a large number of edge devices demands a scalable, centralized edge computing platform. To help users cost less and manage more in an easier way, KubeEdge, fully compatible with Kubernetes, optimizes the cloud-edge messaging and provides access support for mass edge nodes.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="slisslos">SLIs/SLOs<a href="#slisslos" class="hash-link" aria-label="Direct link to SLIs/SLOs" title="Direct link to SLIs/SLOs">​</a></h2><p>Scalability and performance are important features of Kubernetes clusters. Before performing the large-scale performance test, we need to define the measurement metrics. The Kubernetes community defines the following SLIs (Service Level Indicators) and SLOs (Service Level Objectives) to measure the cluster service quality.</p><ol><li>API Call Latency</li></ol><table><thead><tr><th><strong>Status</strong></th><th><strong>SLI</strong></th><th><strong>SLO</strong></th></tr></thead><tbody><tr><td><strong>Official</strong></td><td>Latency of mutating API calls for single objects for every (resource, verb) pair, measured as 99th percentile over last 5 minutes</td><td>In default Kubernetes installation, for every (resource, verb) pair, excluding virtual and aggregated resources and Custom Resource Definitions, 99th percentile per cluster-day &lt;= 1s</td></tr><tr><td><strong>Official</strong></td><td>Latency of non-streaming read-only API calls for every (resource, scope) pair, measured as 99th percentile over last 5 minutes</td><td>In default Kubernetes installation, for every (resource, scope) pair, excluding virtual and aggregated resources and Custom Resource Definitions, 99th percentile per cluster-day: (a) &lt;= 1s if <code>scope=resource</code> (b) &lt;= 30s<a href="https://github.com/kubernetes/community/blob/master/sig-scalability/slos/api_call_latency.md#footnote5" target="_blank" rel="noopener noreferrer">5</a> otherwise (if <code>scope=namespace</code> or <code>scope=cluster</code>)</td></tr></tbody></table><ol start="2"><li>Pod Startup Latency</li></ol><table><thead><tr><th><strong>Status</strong></th><th><strong>SLI</strong></th><th>SLO</th></tr></thead><tbody><tr><td><strong>Official</strong></td><td>Startup latency of schedulable stateless pods, excluding time to pull images and run init containers, measured from pod creation timestamp to when all its containers are reported as started and observed via watch, measured as 99th percentile over last 5 minutes</td><td>In default Kubernetes installation, 99th percentile per cluster-day &lt;= 5s</td></tr><tr><td><strong>WIP</strong></td><td>Startup latency of schedulable stateful pods, excluding time to pull images, run init containers, provision volumes (in delayed binding mode) and unmount/detach volumes (from previous pod if needed), measured from pod creation timestamp to when all its containers are reported as started and observed via watch, measured as 99th percentile over last 5 minutes</td><td>TBD</td></tr></tbody></table><p>The community also defines indicators such as in-cluster network programming latency (latency for Service updates or changes in ready pods to be reflected to iptables/IPVS rules), in-cluster network latency, DNS programming latency (latency for Service updates or changes in ready pods to be reflected to the DNS server), and DNS latency. These indicators have not yet been quantified. This test was conducted to satisfy all SLIs/SLOs in the official state.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="kubernetes-scalability-dimensions-and-thresholds">Kubernetes Scalability Dimensions and Thresholds<a href="#kubernetes-scalability-dimensions-and-thresholds" class="hash-link" aria-label="Direct link to Kubernetes Scalability Dimensions and Thresholds" title="Direct link to Kubernetes Scalability Dimensions and Thresholds">​</a></h2><p>Kubernetes scalability does not just mean the number of nodes (Scalability != #Nodes). Other dimensions include the number of namespaces, pods, Services, secrets, and ConfigMaps. Configurations that Kubernetes supports create the <strong>Scalability Envelope</strong> (which keeps evolving):</p><p><img loading="lazy" alt="k8s-scalability" src="/assets/images/k8s-scalability-043f8072737eb6188c2d4ca85872f614.png" width="927" height="596" class="img_ev3q"></p><p>Obviously, it is impossible for a Kubernetes cluster to expand resource objects without limitation while satisfying SLIs/SLOs. Therefore, the industry defines the upper limits of Kubernetes resource objects.</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">1. Pods/node 30</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">2. Backends &lt;= 50k &amp; Services &lt;= 10k &amp; Backends/service &lt;= 250</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">3. Pod churn 20/s</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">4. Secret &amp; configmap/node 30</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">5. Namespaces &lt;= 10k &amp; Pods &lt;= 150k &amp; Pods/namespace &lt;= 3k</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">6. ​    …..</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>Dimensions are sometimes not independent. As you move farther along one dimension, your cross-section wrt other dimensions gets smaller. For example, if 5000 nodes are expanded to 10,000 nodes, the specifications of other dimensions will be affected. A heavy workload is required if all scenarios are tested. In this test, we focus on the typical scenarios. <strong>We manage to host 100k edge nodes and 1000k pods in a single cluster while satisfying the SLIs/SLOs.</strong></p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="test-tools">Test Tools<a href="#test-tools" class="hash-link" aria-label="Direct link to Test Tools" title="Direct link to Test Tools">​</a></h2><h3 class="anchor anchorWithStickyNavbar_LWe7" id="clusterloader2">ClusterLoader2<a href="#clusterloader2" class="hash-link" aria-label="Direct link to ClusterLoader2" title="Direct link to ClusterLoader2">​</a></h3><p>ClusterLoader2 is an open source Kubernetes cluster performance test tool. It can test the Kubernetes SLIs/SLOs to check whether the cluster meets the service quality standards. It also visualizes data for locating cluster problems and optimizing cluster performance. After the test, users get a performance report with detailed test results.</p><p>Clusterloader2 performance metrics:</p><ul><li><strong>APIResponsivenessPrometheusSimple</strong></li><li><strong>APIResponsivenessPrometheus</strong></li><li><strong>CPUProfile</strong></li><li><strong>EtcdMetrics</strong></li><li><strong>MemoryProfile</strong></li><li><strong>MetricsForE2E</strong></li><li><strong>PodStartupLatency</strong></li><li><strong>ResourceUsageSummary</strong></li><li><strong>SchedulingMetrics</strong></li><li><strong>SchedulingThroughput</strong></li><li><strong>WaitForControlledPodsRunning</strong></li><li><strong>WaitForRunningPods</strong></li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="edgemark">Edgemark<a href="#edgemark" class="hash-link" aria-label="Direct link to Edgemark" title="Direct link to Edgemark">​</a></h3><p>Edgemark is a performance test tool similar to Kubemark. It simulates deploying KubeEdge edge nodes in the KubeEdge cluster scalability test to build ultra-large Kubernetes clusters, powered by KubeEdge, with limited resources. The objective is to expose the cluster control plane downsides that occur only in large-scale deployments. The following figure illustrates the Edgemark deployment:</p><p><img loading="lazy" alt="edgemark-deploy" src="/assets/images/edgemark-deploy-b38a5415c311968e2b69940911960d12.png" width="781" height="474" class="img_ev3q"></p><ul><li><strong>K8s master</strong>: the master node of the Kubernetes cluster</li><li><strong>Edgemark master</strong>: the master node of the simulated Kubernetes cluster</li><li><strong>CloudCore</strong>: the KubeEdge cloud management component, which is responsible for edge node access</li><li><strong>hollow pod</strong>: a pod started in the actual cluster. It registers with the Edgemark master as a virtual edge node by starting Edgemark in it. The Edgemark master can schedule pods to this virtual edge node.</li><li><strong>hollow edgeNode</strong>: a virtual node in the simulated cluster, registered from a hollow pod</li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="cluster-deployment-scheme-for-the-test">Cluster Deployment Scheme for the Test<a href="#cluster-deployment-scheme-for-the-test" class="hash-link" aria-label="Direct link to Cluster Deployment Scheme for the Test" title="Direct link to Cluster Deployment Scheme for the Test">​</a></h2><p><img loading="lazy" alt="deploy" src="/assets/images/deploy-ee260a17374a829a21d34e1289341b6b.png" width="497" height="535" class="img_ev3q"></p><p>The Kubernetes control plane is deployed with one master node. The etcd, kube-apiserver, kube-scheduler, and kube-controller are deployed as single-instance. The KubeEdge control plane is deployed with five CloudCore instances and connects to the kube-apiserver through the IP address of the master node. Hollow EdgeNodes are exposed by a load balancer and randomly connect to a CloudCore instance based on the round-robin policy of the load balancer.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="test-environment-information">Test Environment Information<a href="#test-environment-information" class="hash-link" aria-label="Direct link to Test Environment Information" title="Direct link to Test Environment Information">​</a></h2><p>Control Plane OS Version</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">CentOS 7.9 64bit 3.10.0-1160.15.2.el7.x86_64</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>Kubernetes Version</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">Major:"1", Minor:"23", GitVersion:"v1.23.4", GitCommit:"e6c093d87ea4cbb530a7b2ae91e54c0842d8308a", GitTreeState:"clean", BuildDate:"2022-02-16T12:38:05Z", GoVersion:"go1.17.7", Compiler:"gc", Platform:"linux/amd64"</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> KubeEdge Version</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">KubeEdge v1.11.0-alpha.0</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>Master Node Configurations</p><ul><li><strong>CPU</strong></li></ul><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">Architecture:          x86_64</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">CPU op-mode(s):        32-bit, 64-bit</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Byte Order:            Little Endian</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">CPU(s):                128</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">On-line CPU(s) list:   0-127</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Thread(s) per core:    2</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Core(s) per socket:    32</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Socket(s):             2</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">NUMA node(s):          2</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Vendor ID:             GenuineIntel</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">CPU family:            6</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Model:                 106</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Model name:            Intel(R) Xeon(R) Platinum 8378A CPU @ 3.00GHz</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Stepping:              6</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">CPU MHz:               2999.998</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><ul><li><strong>MEMORY</strong></li></ul><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">Total online memory:   256G</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><ul><li><strong>ETCD DISK</strong></li></ul><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">Type:   SAS_SSD</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Size:   300GB</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>CloudCore Node Configurations</p><ul><li><strong>CPU</strong></li></ul><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">Architecture:          x86_64</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">CPU op-mode(s):        32-bit, 64-bit</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Byte Order:            Little Endian</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">CPU(s):                12</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">On-line CPU(s) list:   0-11</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Thread(s) per core:    2</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Core(s) per socket:    6</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Socket(s):             1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">NUMA node(s):          1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Vendor ID:             GenuineIntel</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">CPU family:            6</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Model:                 106</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Model name:            Intel(R) Xeon(R) Platinum 8378A CPU @ 3.00GHz</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Stepping:              6</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">CPU MHz:               2999.998</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><ul><li><strong>MEMORY</strong></li></ul><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">Total online memory:   48G</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><h2 class="anchor anchorWithStickyNavbar_LWe7" id="component-parameter-configurations">Component Parameter Configurations<a href="#component-parameter-configurations" class="hash-link" aria-label="Direct link to Component Parameter Configurations" title="Direct link to Component Parameter Configurations">​</a></h2><p><strong>1.</strong>    <strong>kube-apiserver</strong> </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">--max-requests-inflight=2000</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">--max-mutating-requests-inflight=1000</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>2.</strong>    <strong>kube-controller-manager</strong> </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">--kube-api-qps=100</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">--kube-api-burst=100</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>3.</strong>    <strong>kube-scheduler</strong></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">--kube-api-qps=200</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">--kube-api-burst=400</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>4.</strong>    <strong>CloudCore</strong></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: cloudcore.config.kubeedge.io/v1alpha1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">kind: CloudCore</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">kubeAPIConfig:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  kubeConfig: ""</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  master: ""</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  qps: 60000</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  burst: 80000</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">  cloudHub:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    advertiseAddress:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      - xx.xx.xx.xx</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    nodeLimit: 30000</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    tlsCAFile: /etc/kubeedge/ca/rootCA.crt</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    tlsCertFile: /etc/kubeedge/certs/server.crt</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    tlsPrivateKeyFile: /etc/kubeedge/certs/server.key</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    unixsocket:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      address: unix:///var/lib/kubeedge/kubeedge.sock</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      enable: false</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    websocket:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      address: 0.0.0.0</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      enable: true</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      port: 10000</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  cloudStream:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    enable: false</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  deviceController:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    enable: false</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  dynamicController:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    enable: false</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  edgeController:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    buffer:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      configMapEvent: 102400</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      deletePod: 10240</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      endpointsEvent: 1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      podEvent: 102400</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      queryConfigMap: 10240</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      queryEndpoints: 1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      queryNode: 10240</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      queryPersistentVolume: 1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      queryPersistentVolumeClaim: 1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      querySecret: 10240</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      queryService: 1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      queryVolumeAttachment: 1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      ruleEndpointsEvent: 1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      rulesEvent: 1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      secretEvent: 1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      serviceEvent: 10240</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      updateNode: 15240</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      updateNodeStatus: 30000</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      updatePodStatus: 102400</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    enable: true</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    load:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      deletePodWorkers: 5000</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      queryConfigMapWorkers: 1000</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      queryEndpointsWorkers: 1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      queryNodeWorkers: 5000</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      queryPersistentVolumeClaimWorkers: 1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      queryPersistentVolumeWorkers: 1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      querySecretWorkers: 1000</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      queryServiceWorkers: 1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      queryVolumeAttachmentWorkers: 1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      updateNodeStatusWorkers: 10000</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      updateNodeWorkers: 5000</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      updatePodStatusWorkers: 20000</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      ServiceAccountTokenWorkers: 10000</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    nodeUpdateFrequency: 60</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  router:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    enable: false</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  syncController:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    enable: 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"><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><h2 class="anchor anchorWithStickyNavbar_LWe7" id="density-test">Density Test<a href="#density-test" class="hash-link" aria-label="Direct link to Density Test" title="Direct link to Density Test">​</a></h2><h3 class="anchor anchorWithStickyNavbar_LWe7" id="test-execution">Test Execution<a href="#test-execution" class="hash-link" aria-label="Direct link to Test Execution" title="Direct link to Test Execution">​</a></h3><p>Before using ClusterLoader2 to perform the performance test, we defined the test policy using the configuration file. In this test, we used the official <a href="https://links.jianshu.com/go?to=https%3A%2F%2Fgithub.com%2Fkubernetes%2Fperf-tests%2Fblob%2Fmaster%2Fclusterloader2%2Ftesting%2Fdensity%2Fconfig.yaml" target="_blank" rel="noopener noreferrer">Kubernetes density</a> case. The configuration file we used can be obtained here:</p><p><a href="https://github.com/kubernetes/perf-tests/blob/master/clusterloader2/testing/density/config.yaml" target="_blank" rel="noopener noreferrer">https://github.com/kubernetes/perf-tests/blob/master/clusterloader2/testing/density/config.yaml</a></p><p>The following table describes the detailed Kubernetes resource configurations:</p><table><thead><tr><th><strong>Maximum type</strong></th><th><strong>Maximum value</strong></th></tr></thead><tbody><tr><td>Number of Nodes</td><td>100,000</td></tr><tr><td>Number of Pods</td><td>1,000,000</td></tr><tr><td>Number of Pods per node</td><td>10</td></tr><tr><td>Number of Namespaces</td><td>400</td></tr><tr><td>Number of Pods per Namespace</td><td>2,500</td></tr></tbody></table><p>For details about the test method and procedure, see the following links:</p><p><a href="https://github.com/kubeedge/kubeedge/tree/master/build/edgemark" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubeedge/tree/master/build/edgemark</a></p><p><a href="https://github.com/kubernetes/perf-tests/blob/master/clusterloader2/docs/GETTING_STARTED.md" target="_blank" rel="noopener noreferrer">https://github.com/kubernetes/perf-tests/blob/master/clusterloader2/docs/GETTING_STARTED.md</a></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="test-results">Test Results<a href="#test-results" class="hash-link" aria-label="Direct link to Test Results" title="Direct link to Test Results">​</a></h3><p><strong>APIResponsivenessPrometheusSimple</strong>：</p><ol><li><p>mutating API latency（threshold=1s）：</p><p><img loading="lazy" alt="mutating-api-latency" src="/assets/images/mutating-api-latency-9b2abae070459061743febb86b77a1b0.png" width="928" height="308" class="img_ev3q"></p></li><li><p>Read-only API call latency(scope=resource, threshold=1s)</p><p><img loading="lazy" alt="read-only-api-call-resource" src="/assets/images/read-only-api-call-resource-e03c623e987d0d2d53e888d2b3050a26.png" width="928" height="346" class="img_ev3q"></p></li><li><p>Read-only API call latency(scope=namespace, threshold=5s)</p><p><img loading="lazy" alt="read-only-api-call-namespace" src="/assets/images/read-only-api-call-namespace-2ca663776ea2cfa6d1a49daa33245299.png" width="928" height="308" class="img_ev3q"></p></li><li><p>Read-only API call latency(scope=cluster, threshold=30s)</p><p><img loading="lazy" alt="read-only-api-call-cluster" src="/assets/images/read-only-api-call-cluster-bdc1e6ca6d157aadade103ba626f2239.png" width="929" height="305" class="img_ev3q"></p></li></ol><p><strong>PodStartupLatency</strong>：</p><table><thead><tr><th><strong>metric</strong></th><th><strong>p50(ms)</strong></th><th><strong>p90(ms)</strong></th><th><strong>p99(ms)</strong></th><th><strong>SLO(ms)</strong></th></tr></thead><tbody><tr><td>pod_startup</td><td>1688</td><td>2751</td><td>4087</td><td>5000</td></tr><tr><td>create_to_schedule</td><td>0</td><td>0</td><td>1000</td><td>N/A</td></tr><tr><td>schedule_to_run</td><td>1000</td><td>1000</td><td>1000</td><td>N/A</td></tr><tr><td>run_to_watch</td><td>1087</td><td>1674</td><td>2265</td><td>N/A</td></tr><tr><td>schedule_to_watch</td><td>1657</td><td>2724</td><td>3070</td><td>N/A</td></tr></tbody></table><p>Note: Theoretically, the latency should always be greater than 0. Because kube-apiserver does not support RFC339NANO, the timestamp precision can only be seconds. Therefore, when the latency is low, some values collected by ClusterLoader2 are 0 due to precision loss.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="conclusion-and-analysis">Conclusion and Analysis<a href="#conclusion-and-analysis" class="hash-link" aria-label="Direct link to Conclusion and Analysis" title="Direct link to Conclusion and Analysis">​</a></h2><p>From the preceding test results, the API call latency and pod startup latency meet the SLIs/SLOs defined by the Kubernetes community. Therefore, <strong>the KubeEdge-powered Kubernetes clusters can stably support 100,000 concurrent edge nodes and more than one million pods</strong>. In production, the network between edge nodes and the cloud is connected according to O&amp;M requirements due to reasons such as network security and partition management. Therefore, the number of edge nodes that can be managed by a single cluster can increase proportionally based on the proportion of offline edge nodes to online ones. In addition, data fragmentation is used on the Kubernetes control plane to store different resources to the corresponding etcd space, which allows for a larger service deployment scale.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="kubeedges-support-for-large-scale-edge-node-access">KubeEdge's Support for Large-Scale Edge Node Access<a href="#kubeedges-support-for-large-scale-edge-node-access" class="hash-link" aria-label="Direct link to KubeEdge's Support for Large-Scale Edge Node Access" title="Direct link to KubeEdge's Support for Large-Scale Edge Node Access">​</a></h3><h4 class="anchor anchorWithStickyNavbar_LWe7" id="1-efficient-cloud-edge-messaging">1. Efficient Cloud-Edge Messaging<a href="#1-efficient-cloud-edge-messaging" class="hash-link" aria-label="Direct link to 1. Efficient Cloud-Edge Messaging" title="Direct link to 1. Efficient Cloud-Edge Messaging">​</a></h4><p>List-watch is a unified mechanism for asynchronous messaging of Kubernetes components. The list operation calls the list API of a resource to obtain full resource data through non-persistent HTTP connections. The watch operation calls the watch API of a resource to monitor resource change events and obtain incremental change data through persistent HTTP connections and block-based transmission encoding. In Kubernetes, in addition to the list-watch of a node, pods allocated to the node, and full service metadata, kubelet must also watch (by default) the running pods mounted with secrets and ConfigMaps as data volumes. The number of list-watch operations could explode with increasing nodes and pods, which heavily burdens kube-apiserver.</p><p>KubeEdge uses the two-way multiplexing edge-cloud message channel and supports the WebSocket (default) and QUIC protocols. EdgeCore at the edge initiates a connection request to CloudCore on the cloud. CloudCore list-watches Kubernetes resource changes, and delivers metadata to the edge through this two-way channel. EdgeCore uploads the metadata, such as edge node status and application status, to CloudCore through this channel. CloudCore reports the received metadata to kube-apiserver.</p><p>CloudCore aggregates the upstream and downstream data. kube-apiserver processes only several list-watch requests from CloudCore. It can be effectively unburdened and the cluster performance gets improved.</p><p>Memory usage when the native Kubernetes kube-apiserver is used under the same node and pod scales:</p><p><img loading="lazy" alt="kube-apiserver-usage" src="/assets/images/kube-apiserver-usage-87f2606607b24894391e5811985f8887.png" width="1259" height="214" class="img_ev3q"></p><p>Memory usage when kube-apiserver is used in a KubeEdge-powered Kubernetes cluster:</p><p><img loading="lazy" alt="kubeedge-kube-apiserver-usage" src="/assets/images/kubeedge-kube-apiserver-usage-ee574433b9fdbfafb5bda5f3de8f6bf3.png" width="1876" height="278" class="img_ev3q"></p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="2-reliable-incremental-cloud-edge-data-transmission">2. Reliable Incremental Cloud-Edge Data Transmission<a href="#2-reliable-incremental-cloud-edge-data-transmission" class="hash-link" aria-label="Direct link to 2. Reliable Incremental Cloud-Edge Data Transmission" title="Direct link to 2. Reliable Incremental Cloud-Edge Data Transmission">​</a></h4><p>In the case of complex edge network topology or poor networking quality, cloud-edge communication may be compromised by high network latency, intermittent/frequent disconnection, and other issues. When the network recovers and edge nodes want to reconnect to the cloud, a large number of full list requests will be generated, pressuring kube-apiserver. Large-scale deployments may amplify this challenge to system stability. To solve it, KubeEdge records the version of the metadata successfully sent to the edge. When the cloud-edge network is reconnected, the cloud sends incremental metadata starting from the recorded metadata version.</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="3-lightweight-edge--edge-cloud-messaging-optimization">3. Lightweight Edge + Edge-Cloud Messaging Optimization<a href="#3-lightweight-edge--edge-cloud-messaging-optimization" class="hash-link" aria-label="Direct link to 3. Lightweight Edge + Edge-Cloud Messaging Optimization" title="Direct link to 3. Lightweight Edge + Edge-Cloud Messaging Optimization">​</a></h4><p>EdgeCore removes native kubelet features that are not used in edge deployments, such as in-tree volume and cloud-provider, trims the status information reported by nodes, and optimizes resource usage of edge agent software. EdgeCore can run with a minimum of 70 MB memory on edge devices whose memory is as minimum as 100 MB. The WebSocket channel, edge-cloud message combination, and data trim greatly reduces the communication pressure on the edge and cloud and the access pressure on the control plane. They ensure that the system can work properly even in the case of high latency and jitter.</p><p>When 100,000 edge nodes are connected, the number of ELB connections is 100,000.</p><p><img loading="lazy" alt="connect-number" src="/assets/images/connect-number-bf13549b16e4d3138a6c1eda70d085cb.png" width="561" height="254" class="img_ev3q"></p><p>When 100,000 edge nodes and more than 1,000,000 pods are deployed, the inbound rate of the ELB network is about 3 MB/s, and the average uplink bandwidth to each edge node is about 0.25 kbit/s.</p><p><img loading="lazy" alt="network" src="/assets/images/network-2e9db00d1cde872d9f350c6703d80c57.png" width="555" height="246" class="img_ev3q"></p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="next-steps">Next Steps<a href="#next-steps" class="hash-link" aria-label="Direct link to Next Steps" title="Direct link to Next Steps">​</a></h2><p>Targeted tests will be performed on edge devices, edge-cloud messaging, and edge service mesh. In addition, for some edge scenarios, such as large-scale node network disconnection and reconnection, high latency of edge networks, and intermittent disconnection, new SLIs/SLOs need to be introduced to measure the cluster service quality and perform large-scale tests.</p>]]></content>
        <author>
            <name>Wack Xu</name>
            <uri>https://github.com/wackxu</uri>
        </author>
        <category label="KubeEdge" term="KubeEdge"/>
        <category label="kubeedge" term="kubeedge"/>
        <category label="edge computing" term="edge computing"/>
        <category label="kubernetes edge computing" term="kubernetes edge computing"/>
        <category label="K8S edge orchestration" term="K8S edge orchestration"/>
        <category label="performance" term="performance"/>
        <category label="large scale" term="large scale"/>
        <category label="scalability test" term="scalability test"/>
        <category label="100,000 nodes" term="100,000 nodes"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[KubeEdge Holistic Security Audit Engagement]]></title>
        <id>https://kubeedge.io/blog/security-threat-model</id>
        <link href="https://kubeedge.io/blog/security-threat-model"/>
        <updated>2022-07-11T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[As the first cloud-native edge computing community, KubeEdge provides solutions for cloud-edge synergy and has been widely adopted in industries including Transportation, Energy, Internet, CDN, Manufacturing, Smart campus, etc. With the accelerated deployment of KubeEdge in this area based on cloud-edge synergy, the community will improve the security of KubeEdge continuously in cloud-native edge computing scenarios.]]></summary>
        <content type="html"><![CDATA[<p>As the first cloud-native edge computing community, KubeEdge provides solutions for cloud-edge synergy and has been widely adopted in industries including Transportation, Energy, Internet, CDN, Manufacturing, Smart campus, etc. With the accelerated deployment of KubeEdge in this area based on cloud-edge synergy, the community will improve the security of KubeEdge continuously in cloud-native edge computing scenarios.</p><p>The KubeEdge community attaches great importance to security and has set up <a href="https://github.com/kubeedge/community/tree/master/sig-security" target="_blank" rel="noopener noreferrer">Sig Security</a> and <a href="https://github.com/kubeedge/community/blob/master/team-security" target="_blank" rel="noopener noreferrer">Security Team</a> to design KubeEdge system security and quickly respond to and handle security vulnerabilities. To conduct a more comprehensive security assessment of the KubeEdge project, the KubeEdge community cooperates with Ada Logics Ltd. and The Open Source Technology Improvement Fund performed a holistic security audit of KubeEdge and output a security auditing report, including the security threat model and security issues related to the KubeEdge project. Thank you to experts Adam Korczynski and David Korczynski of <a href="https://adalogics.com/" target="_blank" rel="noopener noreferrer">Ada Logics</a> for their professional and comprehensive evaluation of the KubeEdge project, which has important guiding significance for the security protection of the KubeEdge project. Thank you Amir Montazery and Derek Zimmer of OSTIF and Cloud Native Computing Foundation (CNCF) who helped with this engagement.</p><p>The discovered security issues have been fixed and patched to the latest three minor release versions (v1.11.1, v1.10.2, v1.9.4) by KubeEdge maintainers according to the <a href="https://github.com/kubeedge/kubeedge/security/policy" target="_blank" rel="noopener noreferrer">kubeedge security policy</a>. Security advisories have been published <a href="https://github.com/kubeedge/kubeedge/security/advisories" target="_blank" rel="noopener noreferrer">here</a>.</p><p>For more details of the threat model and the mitigations, Please check KubeEdge Threat Model And Security Protection Analysis: <a href="https://github.com/kubeedge/community/tree/master/sig-security/sig-security-audit/KubeEdge-threat-model-and-security-protection-analysis.md" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/community/tree/master/sig-security/sig-security-audit/KubeEdge-threat-model-and-security-protection-analysis.md</a>.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="references">References:<a href="#references" class="hash-link" aria-label="Direct link to References:" title="Direct link to References:">​</a></h2><p>Audit report: <a href="https://github.com/kubeedge/community/tree/master/sig-security/sig-security-audit/KubeEdge-security-audit-2022.pdf" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/community/tree/master/sig-security/sig-security-audit/KubeEdge-security-audit-2022.pdf</a></p><p>OSTIF Blogpost: <a href="https://ostif.org/our-audit-of-kubeedge-is-complete-multiple-security-issues-found-and-fixed" target="_blank" rel="noopener noreferrer">https://ostif.org/our-audit-of-kubeedge-is-complete-multiple-security-issues-found-and-fixed</a></p><p>CNCF Blogpost:</p><p>KubeEdge Threat Model And Security Protection Analysis: <a href="https://github.com/kubeedge/community/tree/master/sig-security/sig-security-audit/KubeEdge-threat-model-and-security-protection-analysis.md" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/community/tree/master/sig-security/sig-security-audit/KubeEdge-threat-model-and-security-protection-analysis.md</a></p>]]></content>
        <author>
            <name>Vincent Lin</name>
            <uri>https://github.com/vincentgoat</uri>
        </author>
        <category label="KubeEdge" term="KubeEdge"/>
        <category label="kubeedge" term="kubeedge"/>
        <category label="edge computing" term="edge computing"/>
        <category label="kubernetes edge computing" term="kubernetes edge computing"/>
        <category label="threat model" term="threat model"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[KubeEdge v1.11 is live!]]></title>
        <id>https://kubeedge.io/blog/release-v1.11</id>
        <link href="https://kubeedge.io/blog/release-v1.11"/>
        <updated>2022-06-21T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[On Jun 21, 2022 KubeEdge released v1.11, introducing several exciting new features and enhancements that significantly improve node group management, mapper development, installation experience, and overall stability.]]></summary>
        <content type="html"><![CDATA[<p>On Jun 21, 2022 KubeEdge released v1.11, introducing several exciting new features and enhancements that significantly improve node group management, mapper development, installation experience, and overall stability.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="v111-whats-new">v1.11 What's New<a href="#v111-whats-new" class="hash-link" aria-label="Direct link to v1.11 What's New" title="Direct link to v1.11 What's New">​</a></h2><ul><li><a href="#node-group-management">Node Group Management</a></li><li><a href="#mapper-sdk">Mapper SDK</a></li><li><a href="#beta-sub-commands-in-keadm-to-ga">Beta sub-commands in Keadm to GA</a></li><li><a href="#deprecation-of-original-init-and-join">Deprecation of original <code>init</code> and <code>join</code></a></li><li><a href="#next-gen-edged-to-beta-suitable-for-more-scenarios">Next-gen Edged to Beta: Suitable for more scenarios</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="node-group-management">Node Group Management<a href="#node-group-management" class="hash-link" aria-label="Direct link to Node Group Management" title="Direct link to Node Group Management">​</a></h3><p>Users can now deploy applications to several node groups without writing deployment for every group. Node group management helps users to:</p><ul><li><p>Manage nodes in groups</p></li><li><p>Spread apps among node groups</p></li><li><p>Run different versions of app instances in different node groups</p></li><li><p>Limit service endpoints in the same location as the client</p></li></ul><p>Two new APIs have been introduced to implement Node Group Management:</p><ul><li><strong>NodeGroup API</strong>: represents a group of nodes that have the same labels.</li><li><strong>EdgeApplication API</strong>: contains the template of the application organized by node groups, and the information on how to deploy different editions of the application to different node groups.</li></ul><p>Refer to the links for more details (<a href="https://github.com/kubeedge/kubeedge/pull/3574" target="_blank" rel="noopener noreferrer">#3574</a>, <a href="https://github.com/kubeedge/kubeedge/pull/3719" target="_blank" rel="noopener noreferrer">#3719</a>).</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="mapper-sdk">Mapper SDK<a href="#mapper-sdk" class="hash-link" aria-label="Direct link to Mapper SDK" title="Direct link to Mapper SDK">​</a></h3><p>Mapper-sdk is a basic framework written in Go. Based on this framework, developers can more easily implement a new mapper. Mapper-sdk has realized the connection to KubeEdge, provides data conversion, and manages the basic properties and status of devices, etc., as well as basic capabilities and abstract definition of the driver interface. Developers only need to implement the customized protocol driver interface of the corresponding device to realize the function of mapper.</p><p>Refer to the link for more details (<a href="https://github.com/kubeedge/mappers-go/pull/70" target="_blank" rel="noopener noreferrer">#70</a>).</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="beta-sub-commands-in-keadm-to-ga">Beta sub-commands in Keadm to GA<a href="#beta-sub-commands-in-keadm-to-ga" class="hash-link" aria-label="Direct link to Beta sub-commands in Keadm to GA" title="Direct link to Beta sub-commands in Keadm to GA">​</a></h3><p>Some new sub-commands in Keadm have moved to GA, including containerized deployment, offline installation, etc. The original <code>init</code> and <code>join</code> behaviors have been replaced by the implementation from <code>beta init</code> and <code>beta join</code>:</p><ul><li><p>CloudCore will be running in containers and managed by Kubernetes Deployment by default.</p></li><li><p>Keadm now downloads releases that are packed as container images to edge nodes for node setup.</p></li><li><p><code>init</code>: CloudCore Helm Chart is integrated into <code>init</code>, which can be used to deploy containerized CloudCore.</p></li><li><p><code>join</code>: Installing edgecore as a system service from a Docker image, no need to download from the GitHub release.</p></li><li><p><code>reset</code>: Reset the node, clean up the resources installed on the node by <code>init</code> or <code>join</code>. It will automatically detect the type of node to clean up.</p></li><li><p><code>manifest generate</code>: Generate all the manifests to deploy the cloud-side components.</p></li></ul><p>Refer to the link for more details (<a href="https://github.com/kubeedge/kubeedge/pull/3900" target="_blank" rel="noopener noreferrer">#3900</a>).</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="deprecation-of-original-init-and-join">Deprecation of original <code>init</code> and <code>join</code><a href="#deprecation-of-original-init-and-join" class="hash-link" aria-label="Direct link to deprecation-of-original-init-and-join" title="Direct link to deprecation-of-original-init-and-join">​</a></h3><p>The original <code>init</code> and <code>join</code> sub-commands have been deprecated as they had issues with offline installation, etc.</p><p>Refer to the link for more details (<a href="https://github.com/kubeedge/kubeedge/pull/3900" target="_blank" rel="noopener noreferrer">#3900</a>).</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="next-gen-edged-to-beta-suitable-for-more-scenarios">Next-gen Edged to Beta: Suitable for more scenarios<a href="#next-gen-edged-to-beta-suitable-for-more-scenarios" class="hash-link" aria-label="Direct link to Next-gen Edged to Beta: Suitable for more scenarios" title="Direct link to Next-gen Edged to Beta: Suitable for more scenarios">​</a></h3><p>The new version of the lightweight engine Edged, optimized from Kubelet and integrated into edgecore, has moved to Beta. The new Edged will still communicate with the cloud through the reliable transmission tunnel.</p><p>Refer to the link for more details (Dev-Branch for beta: <a href="https://github.com/kubeedge/kubeedge/tree/feature-new-edged" target="_blank" rel="noopener noreferrer">feature-new-edged</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><p>If you want to use Keadm to deploy KubeEdge v1.11.0, please note that the behaviors of the <code>init</code> and <code>join</code> sub-commands have been changed.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="other-notable-changes">Other Notable Changes<a href="#other-notable-changes" class="hash-link" aria-label="Direct link to Other Notable Changes" title="Direct link to Other Notable Changes">​</a></h2><ul><li><p>Add custom image repo for keadm join beta (<a href="https://github.com/kubeedge/kubeedge/pull/3654" target="_blank" rel="noopener noreferrer">#3654</a>)</p></li><li><p>Keadm: beta join support remote runtime (<a href="https://github.com/kubeedge/kubeedge/pull/3655" target="_blank" rel="noopener noreferrer">#3655</a>)</p></li><li><p>Use sync mode to update pod status (<a href="https://github.com/kubeedge/kubeedge/pull/3658" target="_blank" rel="noopener noreferrer">#3658</a>)</p></li><li><p>Make log level configurable for local up kubeedge (<a href="https://github.com/kubeedge/kubeedge/pull/3664" target="_blank" rel="noopener noreferrer">#3664</a>)</p></li><li><p>Use dependency to pull images (<a href="https://github.com/kubeedge/kubeedge/pull/3671" target="_blank" rel="noopener noreferrer">#3671</a>)</p></li><li><p>Move apis and client under kubeedge/cloud/pkg/ to kubeedge/pkg/ (<a href="https://github.com/kubeedge/kubeedge/pull/3683" target="_blank" rel="noopener noreferrer">#3683</a>)</p></li><li><p>Add subresource field in application for API with subresource (<a href="https://github.com/kubeedge/kubeedge/pull/3693" target="_blank" rel="noopener noreferrer">#3693</a>)</p></li><li><p>Add Keadm beta e2e (<a href="https://github.com/kubeedge/kubeedge/pull/3699" target="_blank" rel="noopener noreferrer">#3699</a>)</p></li><li><p>Keadm beta config images: support remote runtime (<a href="https://github.com/kubeedge/kubeedge/pull/3700" target="_blank" rel="noopener noreferrer">#3700</a>)</p></li><li><p>Use unified image management (<a href="https://github.com/kubeedge/kubeedge/pull/3720" target="_blank" rel="noopener noreferrer">#3720</a>)</p></li><li><p>Use armhf as default for armv7/v6 (<a href="https://github.com/kubeedge/kubeedge/pull/3723" target="_blank" rel="noopener noreferrer">#3723</a>)</p></li><li><p>Add ErrStatus in api-server application (<a href="https://github.com/kubeedge/kubeedge/pull/3742" target="_blank" rel="noopener noreferrer">#3742</a>)</p></li><li><p>Support compile binaries with kubeedge/build-tools image (<a href="https://github.com/kubeedge/kubeedge/pull/3756" target="_blank" rel="noopener noreferrer">#3756</a>)</p></li><li><p>Add min TLS version for stream server (<a href="https://github.com/kubeedge/kubeedge/pull/3764" target="_blank" rel="noopener noreferrer">#3764</a>)</p></li><li><p>Adding security policy (<a href="https://github.com/kubeedge/kubeedge/pull/3778" target="_blank" rel="noopener noreferrer">#3778</a>)</p></li><li><p>Chart: add cert domain config in helm chart (<a href="https://github.com/kubeedge/kubeedge/pull/3802" target="_blank" rel="noopener noreferrer">#3802</a>)</p></li><li><p>Add domain support for certgen.sh (<a href="https://github.com/kubeedge/kubeedge/pull/3808" target="_blank" rel="noopener noreferrer">#3808</a>)</p></li><li><p>Remove default KubeConfig for cloudcore (<a href="https://github.com/kubeedge/kubeedge/pull/3836" target="_blank" rel="noopener noreferrer">#3836</a>)</p></li><li><p>Helm: Allow annotation of the cloudcore service (<a href="https://github.com/kubeedge/kubeedge/pull/3856" target="_blank" rel="noopener noreferrer">#3856</a>)</p></li><li><p>Add rate limiter for edgehub (<a href="https://github.com/kubeedge/kubeedge/pull/3862" target="_blank" rel="noopener noreferrer">#3862</a>)</p></li><li><p>Sync pod status immediately when status update (<a href="https://github.com/kubeedge/kubeedge/pull/3891" target="_blank" rel="noopener noreferrer">#3891</a>)</p></li></ul>]]></content>
        <author>
            <name>KubeEdge SIG Release</name>
            <uri>https://github.com/kubeedge-bot</uri>
        </author>
        <category label="KubeEdge" term="KubeEdge"/>
        <category label="kubeedge" term="kubeedge"/>
        <category label="edge computing" term="edge computing"/>
        <category label="kubernetes edge computing" term="kubernetes edge computing"/>
        <category label="K8s edge orchestration" term="K8s edge orchestration"/>
        <category label="edge computing platform" term="edge computing platform"/>
        <category label="cloud native" term="cloud native"/>
        <category label="iot" term="iot"/>
        <category label="iiot" term="iiot"/>
        <category label="release v1.11" term="release v1.11"/>
        <category label="v1.11" term="v1.11"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[KubeEdge v1.10 is live!]]></title>
        <id>https://kubeedge.io/blog/release-v1.10</id>
        <link href="https://kubeedge.io/blog/release-v1.10"/>
        <updated>2022-03-07T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[On Mar 7, 2022, KubeEdge released v1.10. The new version introduces several enhancements, significantly improving the installation experience, performance testing, network communication, and Kubernetes version compatibility.]]></summary>
        <content type="html"><![CDATA[<p>On Mar 7, 2022, KubeEdge released v1.10. The new version introduces several enhancements, significantly improving the installation experience, performance testing, network communication, and Kubernetes version compatibility.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="v110-whats-new">v1.10 What's New<a href="#v110-whats-new" class="hash-link" aria-label="Direct link to v1.10 What's New" title="Direct link to v1.10 What's New">​</a></h2><ul><li><a href="#installation-experience-improvement-with-keadm">Installation Experience Improvement with Keadm</a></li><li><a href="#preview-version-for-next-gen-edged-suitable-for-more-scenarios">Preview version for Next-gen Edged: Suitable for more scenarios</a></li><li><a href="#edgemark-support-large-scale-kubeedge-cluster-performance-testing">Edgemark: Support large-scale KubeEdge cluster performance testing</a></li><li><a href="#edgemesh-proxy-tunnel-supports-quic">EdgeMesh proxy tunnel supports quic</a></li><li><a href="#edgemesh-supports-proxy-for-udp-applications">EdgeMesh supports proxy for udp applications</a></li><li><a href="#edgemesh-support-ssh-login-between-cloud-edgeedge-edge-nodes">EdgeMesh support SSH login between cloud-edge/edge-edge nodes</a></li><li><a href="#kubernetes-dependencies-upgrade">Kubernetes Dependencies Upgrade</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="installation-experience-improvement-with-keadm">Installation Experience Improvement with Keadm<a href="#installation-experience-improvement-with-keadm" class="hash-link" aria-label="Direct link to Installation Experience Improvement with Keadm" title="Direct link to Installation Experience Improvement with Keadm">​</a></h3><p>Keadm adds some new sub-commands to improve the user experience, including containerized deployment, offline installation, etc. New sub-commands including: beta, config.</p><p><code>beta</code> provides some sub-commands that are still in testing, but have complete functions and can be used in advance. Sub-commands including: beta init, beta manifest generate, beta join, beta reset.</p><ul><li><p><code>beta init</code>: CloudCore Helm Chart is integrated in beta init, which can be used to deploy containerized CloudCore.</p></li><li><p><code>beta join</code>: Installing edgecore as system service from docker image, no need to download from github release.</p></li><li><p><code>beta reset</code>: Reset the node, clean up the resources installed on the node by <code>beta init</code> or <code>beta join</code>. It will automatically detect the type of node to clean up.</p></li><li><p><code>beta manifest generate</code>: Generate all the manifests to deploy the cloudside components.</p></li></ul><p><code>config</code> is used to configure kubeedge cluster, like cluster upgrade, API conversion, image preloading.
Now the image preloading has supported, sub-commands including: config images list, config images pull.</p><ul><li><p><code>config images list</code>: List all images required for kubeedge installation.</p></li><li><p><code>config images pull</code>: Pull all images required for kubeedge installation.</p></li></ul><p>Refer to the links for more details. (<a href="https://github.com/kubeedge/kubeedge/issues/3517" target="_blank" rel="noopener noreferrer">#3517</a>, <a href="https://github.com/kubeedge/kubeedge/pull/3540" target="_blank" rel="noopener noreferrer">#3540</a>, <a href="https://github.com/kubeedge/kubeedge/pull/3554" target="_blank" rel="noopener noreferrer">#3554</a>, <a href="https://github.com/kubeedge/kubeedge/pull/3534" target="_blank" rel="noopener noreferrer">#3534</a>)</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="preview-version-for-next-gen-edged-suitable-for-more-scenarios">Preview version for Next-gen Edged: Suitable for more scenarios<a href="#preview-version-for-next-gen-edged-suitable-for-more-scenarios" class="hash-link" aria-label="Direct link to Preview version for Next-gen Edged: Suitable for more scenarios" title="Direct link to Preview version for Next-gen Edged: Suitable for more scenarios">​</a></h3><p>A new version of the lightweight engine Edged, which is optimized from kubelet and integrated in edgecore, and occupies less resource.
Users can customize lightweight optimization according to their needs.</p><p>Refer to the links for more details. (Dev-Branch for previewing: <a href="https://github.com/kubeedge/kubeedge/tree/feature-new-edged" target="_blank" rel="noopener noreferrer">feature-new-edged</a>)</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="edgemark-support-large-scale-kubeedge-cluster-performance-testing">Edgemark: Support large-scale KubeEdge cluster performance testing<a href="#edgemark-support-large-scale-kubeedge-cluster-performance-testing" class="hash-link" aria-label="Direct link to Edgemark: Support large-scale KubeEdge cluster performance testing" title="Direct link to Edgemark: Support large-scale KubeEdge cluster performance testing">​</a></h3><p>Edgemark is a performance testing tool inherited from Kubemark. The primary use case of Edgemark is also scalability testing, it allows users to simulate edge clusters, which can be much bigger than the real ones. </p><p>Edgemark consists of two parts: real cloud part components and a set of "Hollow" Edge Nodes. In "Hollow" Edge Nodes, EdgeCore runs in container. The edged module runs with an injected mock CRI part that doesn't do anything. So the hollow edge node doesn't actually start any containers, and also doesn't mount any volumes.</p><p>Refer to the link for more details. (<a href="https://github.com/kubeedge/kubeedge/pull/3637" target="_blank" rel="noopener noreferrer">#3637</a>)</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="edgemesh-proxy-tunnel-supports-quic">EdgeMesh proxy tunnel supports quic<a href="#edgemesh-proxy-tunnel-supports-quic" class="hash-link" aria-label="Direct link to EdgeMesh proxy tunnel supports quic" title="Direct link to EdgeMesh proxy tunnel supports quic">​</a></h3><p>Users can choose edgemesh's proxy tunnel as quic protocol to transmit data. In edge scenarios, nodes are often in a weak network environment. Compared with the traditional tcp protocol, the quic protocol has better performance and QoS in the weak network environment.  </p><p>Refer to the link for more details. (<a href="https://github.com/kubeedge/edgemesh/pull/281" target="_blank" rel="noopener noreferrer">#281</a>)</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="edgemesh-supports-proxy-for-udp-applications">EdgeMesh supports proxy for udp applications<a href="#edgemesh-supports-proxy-for-udp-applications" class="hash-link" aria-label="Direct link to EdgeMesh supports proxy for udp applications" title="Direct link to EdgeMesh supports proxy for udp applications">​</a></h3><p>Some users' services use the udp protocol, and now edgemesh can also support the proxy of udp applications.</p><p>Refer to the link for more details. (<a href="https://github.com/kubeedge/edgemesh/pull/295" target="_blank" rel="noopener noreferrer">#295</a>)</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="edgemesh-support-ssh-login-between-cloud-edgeedge-edge-nodes">EdgeMesh support SSH login between cloud-edge/edge-edge nodes<a href="#edgemesh-support-ssh-login-between-cloud-edgeedge-edge-nodes" class="hash-link" aria-label="Direct link to EdgeMesh support SSH login between cloud-edge/edge-edge nodes" title="Direct link to EdgeMesh support SSH login between cloud-edge/edge-edge nodes">​</a></h3><p>Edge nodes are generally distributed in the Private network environment, but it is often necessary to ssh login and operate the edge node. EdgeMesh provide a socks5proxy based on the tunnel inside EdgeMesh, which supports forwarding ssh requests from cloud/edge nodes to edge nodes.  </p><p>Refer to the links for more details. (<a href="https://github.com/kubeedge/edgemesh/pull/258" target="_blank" rel="noopener noreferrer">#258</a>, <a href="https://github.com/kubeedge/edgemesh/pull/242" target="_blank" rel="noopener noreferrer">#242</a>)</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="kubernetes-dependencies-upgrade">Kubernetes Dependencies Upgrade<a href="#kubernetes-dependencies-upgrade" class="hash-link" aria-label="Direct link to Kubernetes Dependencies Upgrade" title="Direct link to Kubernetes Dependencies Upgrade">​</a></h3><p>Upgrade the vendered kubernetes version to v1.22.6, users now can use the feature of new version on the cloud and on the edge side.</p><p>Refer to the link for more details. (<a href="https://github.com/kubeedge/kubeedge/pull/3624" target="_blank" rel="noopener noreferrer">#3624</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><p>If you want to deploy the KubeEdge v1.10.0, please note that the Kubernetes dependency is 1.22.6.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="other-notable-changes">Other Notable Changes<a href="#other-notable-changes" class="hash-link" aria-label="Direct link to Other Notable Changes" title="Direct link to Other Notable Changes">​</a></h2><ul><li><p>Remove dependency on os/exec and curl in favor of net/http (<a href="https://github.com/kubeedge/kubeedge/pull/3409" target="_blank" rel="noopener noreferrer">#3409</a>, <a href="https://github.com/mjlshen" target="_blank" rel="noopener noreferrer">@mjlshen</a>)</p></li><li><p>Optimize script when create stream cert (<a href="https://github.com/kubeedge/kubeedge/pull/3412" target="_blank" rel="noopener noreferrer">#3412</a>, <a href="https://github.com/gujun4990" target="_blank" rel="noopener noreferrer">@gujun4990</a>)</p></li><li><p>Cloudhub: prevent dropping volume messages (<a href="https://github.com/kubeedge/kubeedge/pull/3457" target="_blank" rel="noopener noreferrer">#3457</a>, <a href="https://github.com/moolen" target="_blank" rel="noopener noreferrer">@moolen</a>)</p></li><li><p>Modify the log view command after edgecore is running (<a href="https://github.com/kubeedge/kubeedge/pull/3456" target="_blank" rel="noopener noreferrer">#3456</a>, <a href="https://github.com/zc2638" target="_blank" rel="noopener noreferrer">@zc2638</a>)</p></li><li><p>Optimize the iptables manager (<a href="https://github.com/kubeedge/kubeedge/pull/3461" target="_blank" rel="noopener noreferrer">#3461</a>, <a href="https://github.com/zhu733756" target="_blank" rel="noopener noreferrer">@zhu733756</a>)</p></li><li><p>Add script for build release (<a href="https://github.com/kubeedge/kubeedge/pull/3467" target="_blank" rel="noopener noreferrer">#3467</a>, <a href="https://github.com/gy95" target="_blank" rel="noopener noreferrer">@gy95</a>)</p></li><li><p>Using latest codes to do keadm_e2e (<a href="https://github.com/kubeedge/kubeedge/pull/3469" target="_blank" rel="noopener noreferrer">#3469</a>, <a href="https://github.com/gy95" target="_blank" rel="noopener noreferrer">@gy95</a>)</p></li><li><p>Change the resourceType of msg issued by synccontroller (<a href="https://github.com/kubeedge/kubeedge/pull/3496" target="_blank" rel="noopener noreferrer">#3496</a>, <a href="https://github.com/Rachel-Shao" target="_blank" rel="noopener noreferrer">@Rachel-Shao</a>)</p></li><li><p>Add a basic image for building various components of KubeEdge (<a href="https://github.com/kubeedge/kubeedge/pull/3513" target="_blank" rel="noopener noreferrer">#3513</a>, <a href="https://github.com/zc2638" target="_blank" rel="noopener noreferrer">@zc2638</a>)</p></li><li><p>Supporting crossbuild all components (<a href="https://github.com/kubeedge/kubeedge/pull/3515" target="_blank" rel="noopener noreferrer">#3515</a>, [@fisher</p></li></ul>]]></content>
        <author>
            <name>KubeEdge SIG Release</name>
            <uri>https://github.com/kubeedge-bot</uri>
        </author>
        <category label="KubeEdge" term="KubeEdge"/>
        <category label="kubeedge" term="kubeedge"/>
        <category label="edge computing" term="edge computing"/>
        <category label="kubernetes edge computing" term="kubernetes edge computing"/>
        <category label="K8s edge orchestration" term="K8s edge orchestration"/>
        <category label="edge computing platform" term="edge computing platform"/>
        <category label="cloud native" term="cloud native"/>
        <category label="iot" term="iot"/>
        <category label="iiot" term="iiot"/>
        <category label="release v1.10" term="release v1.10"/>
        <category label="v1.10" term="v1.10"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[KubeEdge v1.9 is live!]]></title>
        <id>https://kubeedge.io/blog/release-v1.9</id>
        <link href="https://kubeedge.io/blog/release-v1.9"/>
        <updated>2021-12-06T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[KubeEdge is an open source system extending native containerized application orchestration and device management to]]></summary>
        <content type="html"><![CDATA[<p><strong>KubeEdge</strong> is an open source system extending native containerized application orchestration and device management to
hosts at the Edge. It is built upon Kubernetes and provides core infrastructure support for networking, application
deployment and metadata synchronization between cloud and edge. It also supports MQTT and allows developers to author
custom logic and enable resource constrained device communication at the Edge.</p><p>On December 6th, the KubeEdge community is proud to announce the availability of KubeEdge 1.9. This release includes a
major upgrade for Custom HTTP Request Routing from Edge to Cloud through ServiceBus for Applications,
CloudCore run independently of the Kubernetes Master host and containerized deployment using Helm,
EdgeMesh add tls and encryption security, and compiled into rpm package, which includes:</p><ul><li><p>Custom HTTP Request Routing from Edge to Cloud through ServiceBus for Applications</p></li><li><p>CloudCore run independently of the Kubernetes Master host</p></li><li><p>EdgeMesh add tls and encryption security</p></li><li><p>Enhance the ease of use of EdgeMesh</p></li><li><p>Support containerized deployment of CloudCore using Helm</p></li><li><p>Support compiled into rpm package and installed on OS such as openEuler using yum package manager</p></li><li><p>40+ bug fixes and enhancements.</p></li></ul><p>Please refer to <a href="https://github.com/kubeedge/kubeedge/blob/master/CHANGELOG/CHANGELOG-1.9.md" target="_blank" rel="noopener noreferrer">CHANGELOG v1.9</a> for a
full list of features in this release</p><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>Release details - <a href="https://github.com/kubeedge/kubeedge/releases/tag/v1.9.0" target="_blank" rel="noopener noreferrer">Release v1.9</a></p></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>How to set up KubeEdge - <a href="https://kubeedge.io/en/docs/setup/keadm/" target="_blank" rel="noopener noreferrer">Setup</a></p></div></div><h2 class="anchor anchorWithStickyNavbar_LWe7" id="release-highlights"><strong>Release Highlights</strong><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="support-custom-http-request-routing-from-edge-to-cloud-through-servicebus-for-applications">Support Custom HTTP Request Routing from Edge to Cloud through ServiceBus for Applications<a href="#support-custom-http-request-routing-from-edge-to-cloud-through-servicebus-for-applications" class="hash-link" aria-label="Direct link to Support Custom HTTP Request Routing from Edge to Cloud through ServiceBus for Applications" title="Direct link to Support Custom HTTP Request Routing from Edge to Cloud through ServiceBus for Applications">​</a></h3><p>A HTTP server is added to ServiceBus, to support custom http request routing from edge to cloud
for applications. This simplifies the rest api access with http server on the cloud while client is in the edge.</p><p>Refer to the links for more details.
(<a href="https://github.com/kubeedge/kubeedge/issues/3254" target="_blank" rel="noopener noreferrer">#3254</a>, <a href="https://github.com/kubeedge/kubeedge/pull/3301" target="_blank" rel="noopener noreferrer">#3301</a>)</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="support-cloudcore-to-run-independently-of-the-kubernetes-master-host">Support CloudCore to run independently of the Kubernetes Master host<a href="#support-cloudcore-to-run-independently-of-the-kubernetes-master-host" class="hash-link" aria-label="Direct link to Support CloudCore to run independently of the Kubernetes Master host" title="Direct link to Support CloudCore to run independently of the Kubernetes Master host">​</a></h3><p>CloudCore now supports to run independently of the Kubernetes Master host, iptablesmanager has been added as an independent
component, users only need to deploy the iptablesmanager to Kubernetes Master host, which now can
add the iptable rules for Cloud-Edge tunnel automatically</p><p>Refer to the links for more details.
(<a href="https://github.com/kubeedge/kubeedge/pull/3265" target="_blank" rel="noopener noreferrer">#3265</a>)</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="edgemesh-add-tls-and-encryption-security">EdgeMesh add tls and encryption security<a href="#edgemesh-add-tls-and-encryption-security" class="hash-link" aria-label="Direct link to EdgeMesh add tls and encryption security" title="Direct link to EdgeMesh add tls and encryption security">​</a></h3><p>EdgeMesh's tunnel module adds tls and encryption security capabilities.
These features bring more secure protection measures to the user's edgemesh-server component and
reduce the risk of edgemesh-server being attacked.</p><p>Refer to the links for more details.
(<a href="https://github.com/kubeedge/edgemesh/pull/127" target="_blank" rel="noopener noreferrer">EdgeMesh#127</a>)</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="enhanced-the-ease-of-use-of-edgemesh">Enhanced the ease of use of EdgeMesh<a href="#enhanced-the-ease-of-use-of-edgemesh" class="hash-link" aria-label="Direct link to Enhanced the ease of use of EdgeMesh" title="Direct link to Enhanced the ease of use of EdgeMesh">​</a></h3><p>EdgeMesh has many improvements in ease of use. Now users can easily deploy EdgeMesh's server and
agent components with a single command of helm. At the same time, the restriction on service port
naming is removed, and the docker0 dependency is removed, making it easier for users to use EdgeMesh.</p><p>Refer to the links for more details.
(<a href="https://github.com/kubeedge/edgemesh/pull/123" target="_blank" rel="noopener noreferrer">EdgeMesh#123</a>, <a href="https://github.com/kubeedge/edgemesh/pull/126" target="_blank" rel="noopener noreferrer">EdgeMesh#126</a>, <a href="https://github.com/kubeedge/edgemesh/pull/136" target="_blank" rel="noopener noreferrer">EdgeMesh#136</a>, <a href="https://github.com/kubeedge/edgemesh/pull/175" target="_blank" rel="noopener noreferrer">EdgeMesh#175</a>)</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="support-containerized-deployment-of-cloudcore-using-helm">Support containerized deployment of CloudCore using Helm<a href="#support-containerized-deployment-of-cloudcore-using-helm" class="hash-link" aria-label="Direct link to Support containerized deployment of CloudCore using Helm" title="Direct link to Support containerized deployment of CloudCore using Helm">​</a></h3><p>CloudCore now supports containerized deployment using Helm, which provides better containerized deployment experience.</p><p>Refer to the links for more details.
(<a href="https://github.com/kubeedge/kubeedge/pull/3265" target="_blank" rel="noopener noreferrer">#3265</a>)</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="support-compiled-into-rpm-package-and-installed-on-os-such-as-openeuler-using-yum-package-manager">Support compiled into rpm package and installed on OS such as openEuler using yum package manager<a href="#support-compiled-into-rpm-package-and-installed-on-os-such-as-openeuler-using-yum-package-manager" class="hash-link" aria-label="Direct link to Support compiled into rpm package and installed on OS such as openEuler using yum package manager" title="Direct link to Support compiled into rpm package and installed on OS such as openEuler using yum package manager">​</a></h3><p>KubeEdge now supports compiled into rpm package and installed on OS such as openEuler using yum package manager.</p><p>Refer to the links for more details.
(<a href="https://github.com/kubeedge/kubeedge/pull/3089" target="_blank" rel="noopener noreferrer">#3089</a>, <a href="https://github.com/kubeedge/kubeedge/pull/3171" target="_blank" rel="noopener noreferrer">#3171</a>)</p><p>In addition to the above new features, KubeEdge v1.9 also includes the following enhancements:</p><ul><li><p>Rpminstaller: add support for openEuler (<a href="https://github.com/kubeedge/kubeedge/pull/3089" target="_blank" rel="noopener noreferrer">#3089</a>)</p></li><li><p>Replaced 'kubeedge/pause' with multi arch image (<a href="https://github.com/kubeedge/kubeedge/pull/3114" target="_blank" rel="noopener noreferrer">#3114</a>)</p></li><li><p>Make meta server addr configurable (<a href="https://github.com/kubeedge/kubeedge/pull/3119" target="_blank" rel="noopener noreferrer">#3119</a>)</p></li><li><p>Added iptables to Dockerfile and made cloudcore privileged (<a href="https://github.com/kubeedge/kubeedge/pull/3129" target="_blank" rel="noopener noreferrer">#3129</a>)</p></li><li><p>Added CustomInterfaceEnabled and CustomInterfaceName for edgecore (<a href="https://github.com/kubeedge/kubeedge/pull/3130" target="_blank" rel="noopener noreferrer">#3130</a>)</p></li><li><p>Add experimental feature (<a href="https://github.com/kubeedge/kubeedge/pull/3131" target="_blank" rel="noopener noreferrer">#3131</a>)</p></li><li><p>Feat(edge): node ephemeral storage info (<a href="https://github.com/kubeedge/kubeedge/pull/3157" target="_blank" rel="noopener noreferrer">#3157</a>)</p></li><li><p>Support envFrom configmap in edge pods (<a href="https://github.com/kubeedge/kubeedge/pull/3176" target="_blank" rel="noopener noreferrer">#3176</a>)</p></li><li><p>Update golang to 1.16 (<a href="https://github.com/kubeedge/kubeedge/pull/3190" target="_blank" rel="noopener noreferrer">#3190</a>)</p></li><li><p>Metaserver: support shutdown server graceful  (<a href="https://github.com/kubeedge/kubeedge/pull/3239" target="_blank" rel="noopener noreferrer">#3239</a>)</p></li><li><p>Support labelselector for metaserver (<a href="https://github.com/kubeedge/kubeedge/pull/3262" target="_blank" rel="noopener noreferrer">#3262</a>)</p></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="future-outlook"><strong>Future Outlook</strong><a href="#future-outlook" class="hash-link" aria-label="Direct link to future-outlook" title="Direct link to future-outlook">​</a></h2><p>With the release of v1.9, KubeEdge supports custom HTTP request routing from Edge to Cloud through ServiceBus for applications,
supports CloudCore running independently of the Kubernetes Master host, supports containerized deployment of CloudCore using Helm,
supports tls and encryption security and the ease of use of EdgeMesh.
Thanks to Huawei, China Unicom, DaoCloud, Zhejiang University SEL Lab, ARM and other organizations for their contributions,
as well as all community contributors for their support!</p><p>The community plans to further improve the user experience and the stability of KubeEdge in subsequent versions and
create the best “open source” intelligent edge computing platform for everyone to freely use.</p><p>For more details regarding KubeEdge, please follow and join us here:</p><p><a href="https://kubeedge.io" target="_blank" rel="noopener noreferrer">https://kubeedge.io</a></p>]]></content>
        <author>
            <name>Kevin Wang</name>
            <uri>https://github.com/kevin-wangzefeng</uri>
        </author>
        <author>
            <name>Fei Xu</name>
            <uri>https://github.com/fisherxu</uri>
        </author>
        <category label="KubeEdge" term="KubeEdge"/>
        <category label="kubeedge" term="kubeedge"/>
        <category label="edge computing" term="edge computing"/>
        <category label="kubernetes edge computing" term="kubernetes edge computing"/>
        <category label="K8s edge orchestration" term="K8s edge orchestration"/>
        <category label="edge computing platform" term="edge computing platform"/>
        <category label="cloud native" term="cloud native"/>
        <category label="iot" term="iot"/>
        <category label="iiot" term="iiot"/>
        <category label="release v1.9" term="release v1.9"/>
        <category label="v1.9" term="v1.9"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[KubeEdge v1.8 is live!]]></title>
        <id>https://kubeedge.io/blog/release-v1.8</id>
        <link href="https://kubeedge.io/blog/release-v1.8"/>
        <updated>2021-08-31T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[KubeEdge is an open source system extending native containerized application orchestration and device management to hosts at the Edge. It is built upon Kubernetes and provides core infrastructure support for networking, application deployment and metadata synchronization between cloud and edge. It also supports MQTT and allows developers to author custom logic and enable resource constrained device communication at the Edge.]]></summary>
        <content type="html"><![CDATA[<p><strong>KubeEdge</strong> is an open source system extending native containerized application orchestration and device management to hosts at the Edge. It is built upon Kubernetes and provides core infrastructure support for networking, application deployment and metadata synchronization between cloud and edge. It also supports MQTT and allows developers to author custom logic and enable resource constrained device communication at the Edge.</p><p>On October 31st, the KubeEdge community is proud to announce the availability of KubeEdge 1.8. This release includes a major upgrade for Active-Active HA Support of CloudCore for Large Scale Cluster, EdgeMesh Architecture Modification, EdgeMesh Cross LAN Communication, and Kubernetes Dependencies Upgrade, which includes:</p><ul><li><p>Active-Active HA Support of CloudCore for Large Scale Cluster <!-- -->[Beta]</p></li><li><p>EdgeMesh Architecture Modification</p></li><li><p>EdgeMesh Cross LAN Communication</p></li><li><p>Onvif Device Mapper</p></li><li><p>Kubernetes Dependencies Upgrade</p></li><li><p>30+ bug fixes and enhancements.</p></li></ul><p>Please refer to <a href="https://github.com/kubeedge/kubeedge/blob/master/CHANGELOG/CHANGELOG-1.8.md" target="_blank" rel="noopener noreferrer">CHANGELOG v1.8</a> for a full list of features in this release</p><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>Release details - <a href="https://github.com/kubeedge/kubeedge/releases/tag/v1.8.0" target="_blank" rel="noopener noreferrer">Release v1.8</a></p></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>How to set up KubeEdge - <a href="https://kubeedge.io/en/docs/setup/keadm/" target="_blank" rel="noopener noreferrer">Setup</a></p></div></div><h2 class="anchor anchorWithStickyNavbar_LWe7" id="release-highlights"><strong>Release Highlights</strong><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="active-active-ha-support-of-cloudcore-for-large-scale-cluster-beta">Active-Active HA Support of CloudCore for Large Scale Cluster <!-- -->[Beta]<a href="#active-active-ha-support-of-cloudcore-for-large-scale-cluster-beta" class="hash-link" aria-label="Direct link to active-active-ha-support-of-cloudcore-for-large-scale-cluster-beta" title="Direct link to active-active-ha-support-of-cloudcore-for-large-scale-cluster-beta">​</a></h3><p>CloudCore now supports Active-Active HA mode deployment, which provides better scalability support for large scale clusters. Cloud-Edge tunnel can also work with multiple CloudCore instances. CloudCore now can add the iptable rules for Cloud-Edge tunnel automatically.</p><p>Refer to the links for more details.
(<a href="https://github.com/kubeedge/kubeedge/issues/1560" target="_blank" rel="noopener noreferrer">#1560</a>, <a href="https://github.com/kubeedge/kubeedge/pull/2999" target="_blank" rel="noopener noreferrer">#2999</a>)</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="edgemesh-architecture-modification">EdgeMesh Architecture Modification<a href="#edgemesh-architecture-modification" class="hash-link" aria-label="Direct link to EdgeMesh Architecture Modification" title="Direct link to EdgeMesh Architecture Modification">​</a></h3><p>EdgeMesh now has two parts: edgemesh-server and edgemesh-agent.
The edgemesh-server requires a public IP address, when users use cross lan communication, it can act as a relay server in the LibP2P mode or assist the agent to establish p2p hole punching.
The edgemesh-agent is used to proxy all application traffic of user nodes, acts as an agent for communication between pods at different locations.</p><p>Refer to the links for more details.
(<a href="https://github.com/kubeedge/edgemesh/pull/19" target="_blank" rel="noopener noreferrer">edgemesh#19</a>)</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="edgemesh-cross-lan-communication">EdgeMesh Cross LAN Communication<a href="#edgemesh-cross-lan-communication" class="hash-link" aria-label="Direct link to EdgeMesh Cross LAN Communication" title="Direct link to EdgeMesh Cross LAN Communication">​</a></h3><p>Users can use cross LAN communication feature to implement cross LAN edge to edge application communication and cross LAN edge to cloud application communication.</p><p>Refer to the links for more details.
(<a href="https://github.com/kubeedge/edgemesh/pull/26" target="_blank" rel="noopener noreferrer">edgemesh#26</a>, <a href="https://github.com/kubeedge/edgemesh/pull/37" target="_blank" rel="noopener noreferrer">edgemesh#37</a>, <a href="https://github.com/kubeedge/edgemesh/pull/57" target="_blank" rel="noopener noreferrer">edgemesh#57</a>)</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="onvif-device-mapper">Onvif Device Mapper<a href="#onvif-device-mapper" class="hash-link" aria-label="Direct link to Onvif Device Mapper" title="Direct link to Onvif Device Mapper">​</a></h3><p>Onvif Device Mapper with Golang implementation is provided, based on new Device Mapper Standard.
Users now can use onvif device mapper to manage the ONVIF IP camera.</p><p>Refer to the links for more details.
(<a href="https://github.com/kubeedge/mappers-go/pull/48" target="_blank" rel="noopener noreferrer">mappers-go#48</a>)</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="kubernetes-dependencies-upgrade">Kubernetes Dependencies Upgrade<a href="#kubernetes-dependencies-upgrade" class="hash-link" aria-label="Direct link to Kubernetes Dependencies Upgrade" title="Direct link to Kubernetes Dependencies Upgrade">​</a></h3><p>Upgrade the vendered kubernetes version to v1.21.4, users now can use the feature of new version on the cloud and on the edge side.</p><p>Refer to the links for more details.
(<a href="https://github.com/kubeedge/kubeedge/pull/3021" target="_blank" rel="noopener noreferrer">#3021</a>, <a href="https://github.com/kubeedge/kubeedge/pull/3034" target="_blank" rel="noopener noreferrer">#3034</a>)</p><p>In addition to the above new features, KubeEdge v1.8 also includes the following enhancements:</p><ul><li><p>Refactor edgesite: import functions and structs instead of copying code (<a href="https://github.com/kubeedge/kubeedge/pull/2893" target="_blank" rel="noopener noreferrer">#2893</a>)</p></li><li><p>Avoiding update cm after created a new cm (<a href="https://github.com/kubeedge/kubeedge/pull/2913" target="_blank" rel="noopener noreferrer">#2913</a>)</p></li><li><p>Solved the checksum file download problem when ke was installed offline (<a href="https://github.com/kubeedge/kubeedge/pull/2909" target="_blank" rel="noopener noreferrer">#2909</a>)</p></li><li><p>cloudcore support configmap dynamic update when the env of container inject from configmap or secret (<a href="https://github.com/kubeedge/kubeedge/pull/2931" target="_blank" rel="noopener noreferrer">#2931</a>)</p></li><li><p>Remove edgemesh from edgecore (<a href="https://github.com/kubeedge/kubeedge/pull/2916" target="_blank" rel="noopener noreferrer">#2916</a>)</p></li><li><p>keadm: support customsized labels when use join command (<a href="https://github.com/kubeedge/kubeedge/pull/2827" target="_blank" rel="noopener noreferrer">#2827</a>)</p></li><li><p>support k8s v1.21.X (<a href="https://github.com/kubeedge/kubeedge/pull/3021" target="_blank" rel="noopener noreferrer">#3021</a>)</p></li><li><p>Handling node/*/membership/detail (<a href="https://github.com/kubeedge/kubeedge/pull/3025" target="_blank" rel="noopener noreferrer">#3025</a>)</p></li><li><p>sync the response message unconditionally (<a href="https://github.com/kubeedge/kubeedge/pull/3014" target="_blank" rel="noopener noreferrer">#3014</a>)</p></li><li><p>support default NVIDIA SMI command (<a href="https://github.com/kubeedge/kubeedge/pull/2680" target="_blank" rel="noopener noreferrer">#2680</a>)</p></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="future-outlook"><strong>Future Outlook</strong><a href="#future-outlook" class="hash-link" aria-label="Direct link to future-outlook" title="Direct link to future-outlook">​</a></h2><p>With the release of v1.8, KubeEdge supports Active-Active HA mode deployment, which provides better scalability support for large scale clusters,
supports cross LAN communication by EdgeMesh, and supports Onvif Device Mapper. Thanks to Huawei, China
Unicom, DaoCloud, Zhejiang University SEL Lab, ARM and other organizations for their contributions, as well as all community contributors for their support!</p><p>The community plans to further improve the user experience and the stability of KubeEdge in subsequent versions and create the best “open source” intelligent edge computing platform for everyone to freely use.</p><p>For more details regarding KubeEdge, please follow and join us here:</p><p><a href="https://kubeedge.io" target="_blank" rel="noopener noreferrer">https://kubeedge.io</a></p>]]></content>
        <author>
            <name>Kevin Wang</name>
            <uri>https://github.com/kevin-wangzefeng</uri>
        </author>
        <author>
            <name>Fei Xu</name>
            <uri>https://github.com/fisherxu</uri>
        </author>
        <category label="KubeEdge" term="KubeEdge"/>
        <category label="kubeedge" term="kubeedge"/>
        <category label="edge computing" term="edge computing"/>
        <category label="kubernetes edge computing" term="kubernetes edge computing"/>
        <category label="K8s edge orchestration" term="K8s edge orchestration"/>
        <category label="edge computing platform" term="edge computing platform"/>
        <category label="cloud native" term="cloud native"/>
        <category label="iot" term="iot"/>
        <category label="iiot" term="iiot"/>
        <category label="release v1.8" term="release v1.8"/>
        <category label="v1.8" term="v1.8"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[KubeEdge v1.7 is live!]]></title>
        <id>https://kubeedge.io/blog/release-v1.7</id>
        <link href="https://kubeedge.io/blog/release-v1.7"/>
        <updated>2021-06-10T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[KubeEdge is an open source system extending native containerized application orchestration and device management to hosts at the Edge. It is built upon Kubernetes and provides core infrastructure support for networking, application deployment and metadata synchronization between cloud and edge. It also supports MQTT and allows developers to author custom logic and enable resource constrained device communication at the Edge.]]></summary>
        <content type="html"><![CDATA[<p><strong>KubeEdge</strong> is an open source system extending native containerized application orchestration and device management to hosts at the Edge. It is built upon Kubernetes and provides core infrastructure support for networking, application deployment and metadata synchronization between cloud and edge. It also supports MQTT and allows developers to author custom logic and enable resource constrained device communication at the Edge.  </p><p>On June 10th, the KubeEdge community is proud to announce the availability of KubeEdge 1.7. This release includes a major upgrade for Active-Active HA Support of CloudCore for Large Cluster and a new Device Mapper Framework, which includes:</p><ul><li><p>Active-Active HA Support of CloudCore for Large Scale Cluster <!-- -->[Alpha]</p></li><li><p>Support to manage Clusters on Edge <!-- -->[Alpha]</p></li><li><p>Decoupled EdgeMesh from EdgeCore</p></li><li><p>Autonomic Kube-API Endpoint for Applications On Edge Nodes <!-- -->[Beta]</p></li><li><p>Custom HTTP Request Routing between Cloud and Edge for Applications <!-- -->[Alpha]</p></li><li><p>Kubernetes Dependencies Upgrade</p></li><li><p>34+ bug fixes and enhancements.</p></li></ul><p>Please refer to <a href="https://github.com/kubeedge/kubeedge/blob/master/CHANGELOG/CHANGELOG-1.7.md" target="_blank" rel="noopener noreferrer">CHANGELOG v1.7</a> for a full list of features in this release</p><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>Release details - <a href="https://github.com/kubeedge/kubeedge/releases/tag/v1.7.1" target="_blank" rel="noopener noreferrer">Release v1.7</a></p></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>How to set up KubeEdge - <a href="https://kubeedge.io/en/docs/setup/keadm/" target="_blank" rel="noopener noreferrer">Setup</a></p></div></div><h2 class="anchor anchorWithStickyNavbar_LWe7" id="release-highlights"><strong>Release Highlights</strong><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="active-active-ha-support-of-cloudcore-for-large-scale-cluster-alpha">Active-Active HA Support of CloudCore for Large Scale Cluster <!-- -->[Alpha]<a href="#active-active-ha-support-of-cloudcore-for-large-scale-cluster-alpha" class="hash-link" aria-label="Direct link to active-active-ha-support-of-cloudcore-for-large-scale-cluster-alpha" title="Direct link to active-active-ha-support-of-cloudcore-for-large-scale-cluster-alpha">​</a></h3><p>CloudCore now supports Active-Active HA mode deployment, which provides better scalability support for large scale clusters.
Cloud-Edge tunnel can also work with multiple CloudCore instances.</p><p>Refer to the links for more details.
(<a href="https://github.com/kubeedge/kubeedge/issues/1560" target="_blank" rel="noopener noreferrer">#1560</a>, <a href="https://github.com/kubeedge/kubeedge/pull/2867" target="_blank" rel="noopener noreferrer">#2867</a>)</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="support-to-manage-clusters-on-edge-alpha">Support to manage Clusters on Edge <!-- -->[Alpha]<a href="#support-to-manage-clusters-on-edge-alpha" class="hash-link" aria-label="Direct link to support-to-manage-clusters-on-edge-alpha" title="Direct link to support-to-manage-clusters-on-edge-alpha">​</a></h3><p>In some scenarios, uses may have full-size Kubernetes clusters deployed on the edge.
With EdgeSite, users are now able to access clusters on edge (in private network, behind NATed gateway, etc) from center cloud.
(<a href="https://github.com/kubeedge/kubeedge/pull/2650" target="_blank" rel="noopener noreferrer">#2650</a>, <a href="https://github.com/kubeedge/kubeedge/pull/2858" target="_blank" rel="noopener noreferrer">#2858</a>)</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="decoupled-edgemesh-from-edgecore">Decoupled EdgeMesh from EdgeCore<a href="#decoupled-edgemesh-from-edgecore" class="hash-link" aria-label="Direct link to Decoupled EdgeMesh from EdgeCore" title="Direct link to Decoupled EdgeMesh from EdgeCore">​</a></h3><p>EdgeMesh aims to provide simplified network and services for edge applications.
The EdgeMesh module is now decoupled from EdgeCore and able to be deployed as an independent components in containers.</p><p>Refer to <a href="https://github.com/kubeedge/edgemesh" target="_blank" rel="noopener noreferrer">EdgeMesh</a> for more details</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="mapper-framework">Mapper Framework<a href="#mapper-framework" class="hash-link" aria-label="Direct link to Mapper Framework" title="Direct link to Mapper Framework">​</a></h3><p>Users are now able to use mapper framework to generate a new device mapper.
This simplifies the mapper development when users trying to integrate with new protocols or new devices.
(<a href="https://github.com/kubeedge/mappers-go/pull/41" target="_blank" rel="noopener noreferrer">mappers-go#41</a>)</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="autonomic-kube-api-endpoint-for-applications-on-edge-nodes-beta">Autonomic Kube-API Endpoint for Applications On Edge Nodes <!-- -->[Beta]<a href="#autonomic-kube-api-endpoint-for-applications-on-edge-nodes-beta" class="hash-link" aria-label="Direct link to autonomic-kube-api-endpoint-for-applications-on-edge-nodes-beta" title="Direct link to autonomic-kube-api-endpoint-for-applications-on-edge-nodes-beta">​</a></h3><p>Autonomic Kube-API Endpoint provides native Kubernetes API access on edge nodes.
It's very useful in cases users want to run third-party plugins and applications that depends on Kubernetes APIs on edge nodes.
With reliable message delivery and data autonomy provided by KubeEdge,
list-watch connections on edge nodes keep available even when nodes are located in high latency network or frequently get disconnected to the Cloud.</p><p>In this release, a bunch of corner case issues are fixed and the stability is improved. And the feature maturity is now Beta.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="custom-http-request-routing-between-cloud-and-edge-for-applications-alpha">Custom HTTP Request Routing between Cloud and Edge for Applications <!-- -->[Alpha]<a href="#custom-http-request-routing-between-cloud-and-edge-for-applications-alpha" class="hash-link" aria-label="Direct link to custom-http-request-routing-between-cloud-and-edge-for-applications-alpha" title="Direct link to custom-http-request-routing-between-cloud-and-edge-for-applications-alpha">​</a></h3><p>A new RuleEndpointType <code>servicebus</code> is added to RuleEndpoint API, to support custom http request routing between cloud and edge for applications. This simplifies the rest api access with http server on the edge while client is in the cloud. (<a href="https://github.com/kubeedge/kubeedge/pull/2588" target="_blank" rel="noopener noreferrer">#2588</a>)</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="28-bug-fixes-and-enhancements">28+ bug fixes and enhancements<a href="#28-bug-fixes-and-enhancements" class="hash-link" aria-label="Direct link to 28+ bug fixes and enhancements" title="Direct link to 28+ bug fixes and enhancements">​</a></h3><p>In addition to the above new features, KubeEdge v1.7 also includes the following enhancements:</p><ul><li><p>Implement update rule status</p></li><li><p>Install crd for router in keadm</p></li><li><p>Remove synckeeper in edgehub</p></li><li><p>upstream: refactor kubeClientGet</p></li><li><p>make customsiz labels available when restart</p></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="future-outlook"><strong>Future Outlook</strong><a href="#future-outlook" class="hash-link" aria-label="Direct link to future-outlook" title="Direct link to future-outlook">​</a></h2><p>With the release of v1.7, KubeEdge supports Active-Active HA mode deployment, which provides better scalability support for large scale clusters. Thanks to Huawei, China Unicom, Zhejiang University SEL Lab, ARM and other organizations for their contributions, as well as all community contributors for their support!</p><p>The community plans to further improve the user experience and the stability of KubeEdge in subsequent versions and create the best “open source” intelligent edge computing platform for everyone to freely use.</p><p>For more details regarding KubeEdge, please follow and join us here:</p><p><a href="https://kubeedge.io" target="_blank" rel="noopener noreferrer">https://kubeedge.io</a></p>]]></content>
        <author>
            <name>Kevin Wang</name>
            <uri>https://github.com/kevin-wangzefeng</uri>
        </author>
        <author>
            <name>Fei Xu</name>
            <uri>https://github.com/fisherxu</uri>
        </author>
        <category label="KubeEdge" term="KubeEdge"/>
        <category label="kubeedge" term="kubeedge"/>
        <category label="edge computing" term="edge computing"/>
        <category label="kubernetes edge computing" term="kubernetes edge computing"/>
        <category label="K8s edge orchestration" term="K8s edge orchestration"/>
        <category label="edge computing platform" term="edge computing platform"/>
        <category label="cloud native" term="cloud native"/>
        <category label="iot" term="iot"/>
        <category label="iiot" term="iiot"/>
        <category label="release v1.7" term="release v1.7"/>
        <category label="v1.7" term="v1.7"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[KubeEdge v1.6 is live!]]></title>
        <id>https://kubeedge.io/blog/release-v1.6</id>
        <link href="https://kubeedge.io/blog/release-v1.6"/>
        <updated>2021-02-27T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[KubeEdge is an open source system extending native containerized application orchestration and device management to hosts at the Edge. It is built upon Kubernetes and provides core infrastructure support for networking, application deployment and metadata synchronization between cloud and edge. It also supports MQTT and allows developers to author custom logic and enable resource constrained device communication at the Edge.]]></summary>
        <content type="html"><![CDATA[<p><strong>KubeEdge</strong> is an open source system extending native containerized application orchestration and device management to hosts at the Edge. It is built upon Kubernetes and provides core infrastructure support for networking, application deployment and metadata synchronization between cloud and edge. It also supports MQTT and allows developers to author custom logic and enable resource constrained device communication at the Edge.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="kubeedge-v16-a-major-upgrade-for-maintainability"><strong>KubeEdge v1.6: A major upgrade for maintainability</strong><a href="#kubeedge-v16-a-major-upgrade-for-maintainability" class="hash-link" aria-label="Direct link to kubeedge-v16-a-major-upgrade-for-maintainability" title="Direct link to kubeedge-v16-a-major-upgrade-for-maintainability">​</a></h2><p>On 27th February, the KubeEdge community is proud to announce the availability of KubeEdge 1.6. This release includes a major upgrade for maintainability, which includes:</p><ul><li><p>Support Autonomic Kube-API Endpoint for Applications On Edge Nodes <!-- -->[Alpha]</p></li><li><p>Custom Message Routing between Cloud and Edge for Applications <!-- -->[Alpha]</p></li><li><p>Simplified Application Autonomy Configuration When Node Is Off-line</p></li><li><p>New home for Device Mappers code</p></li><li><p>OPC-UA Device Mapper</p></li><li><p>24+ bug fixes and enhancements.</p></li></ul><p>Please refer to <a href="https://github.com/kubeedge/kubeedge/blob/master/CHANGELOG/CHANGELOG-1.6.md" target="_blank" rel="noopener noreferrer">CHANGELOG v1.6</a> for a full list of features in this release.</p><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>Release details - <a href="https://github.com/kubeedge/kubeedge/releases/tag/v1.6.0" target="_blank" rel="noopener noreferrer">Release v1.6</a></p></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>How to set up KubeEdge - <a href="https://kubeedge.io/en/docs/setup/keadm/" target="_blank" rel="noopener noreferrer">KubeEdge Setup</a></p></div></div><h2 class="anchor anchorWithStickyNavbar_LWe7" id="release-highlights"><strong>Release Highlights</strong><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="support-autonomic-kube-api-endpoint-for-applications-on-edge-nodes-alpha">Support Autonomic Kube-API Endpoint for Applications On Edge Nodes <!-- -->[Alpha]<a href="#support-autonomic-kube-api-endpoint-for-applications-on-edge-nodes-alpha" class="hash-link" aria-label="Direct link to support-autonomic-kube-api-endpoint-for-applications-on-edge-nodes-alpha" title="Direct link to support-autonomic-kube-api-endpoint-for-applications-on-edge-nodes-alpha">​</a></h3><p>Autonomic Kube-API Endpoint is now available on edge nodes! Users are now able to run third-party plugins and applications that depends on Kubernetes APIs on edge nodes. List-watch connections are established between client and the local endpoint provided by EdgeCore. With reliable message delivery and data autonomy provided by KubeEdge, list-watch connections on edge nodes keep available even when nodes are located in high latency network or frequently get disconnected to the Cloud.</p><p>This is very useful in cases that users want to install customized versions of Kubelet, Kube-Proxy, CNI and CSI plugins with KubeEdge. Particularly, Kubernetes CRDs are also supported on edge nodes. (<a href="https://github.com/kubeedge/kubeedge/pull/2508" target="_blank" rel="noopener noreferrer">#2508</a>, <a href="https://github.com/kubeedge/kubeedge/pull/2587" target="_blank" rel="noopener noreferrer">#2587</a>)</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="custom-message-routing-between-cloud-and-edge-for-applications-alpha">Custom Message Routing between Cloud and Edge for Applications <!-- -->[Alpha]<a href="#custom-message-routing-between-cloud-and-edge-for-applications-alpha" class="hash-link" aria-label="Direct link to custom-message-routing-between-cloud-and-edge-for-applications-alpha" title="Direct link to custom-message-routing-between-cloud-and-edge-for-applications-alpha">​</a></h3><p>Added support of routing management with Rule, RuleEndpoint API and a router module. Users are now able to use KubeEdge to deliver their custom messages between cloud and edge.</p><p>Note that it's designed for control data exchange between cloud and edge, not suitable for large data delivery. The data size of delivery at one time is limited to 12MB.</p><p>Refer to <a href="https://kubeedge.io/en/docs/developer/custom_message_deliver/" target="_blank" rel="noopener noreferrer">custom message deliver</a> for more details. (<a href="https://github.com/kubeedge/kubeedge/pull/2413" target="_blank" rel="noopener noreferrer">#2413</a>)</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="simplified-application-autonomy-configuration-when-node-is-off-line">Simplified Application Autonomy Configuration When Node Is Off-line<a href="#simplified-application-autonomy-configuration-when-node-is-off-line" class="hash-link" aria-label="Direct link to Simplified Application Autonomy Configuration When Node Is Off-line" title="Direct link to Simplified Application Autonomy Configuration When Node Is Off-line">​</a></h3><p>If user wants any application to stay on edge nodes when disconnected to the cloud, simply add label <code>app-offline.kubeedge.io=autonomy</code> to its pods. KubeEdge will automatically override pod default toleration configuration for Taint <code>node.kubernetes.io/unreachable</code> to avoid Kubernetes evicting pods from unreachable nodes. (<a href="https://github.com/kubeedge/kubeedge/pull/2499" target="_blank" rel="noopener noreferrer">#2499</a>)</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="new-home-for-device-mappers-code">New home for Device Mappers code<a href="#new-home-for-device-mappers-code" class="hash-link" aria-label="Direct link to New home for Device Mappers code" title="Direct link to New home for Device Mappers code">​</a></h3><p>Device Mappers implementations now have a new home <a href="https://github.com/kubeedge/mappers-go" target="_blank" rel="noopener noreferrer">kubeedge/mappers-go</a>.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="opc-ua-device-mapper">OPC-UA Device Mapper<a href="#opc-ua-device-mapper" class="hash-link" aria-label="Direct link to OPC-UA Device Mapper" title="Direct link to OPC-UA Device Mapper">​</a></h3><p>OPC-UA Device Mapper with Golang implementation is provided, based on new Device Mapper Standard. (<a href="https://github.com/kubeedge/mappers-go/pull/4" target="_blank" rel="noopener noreferrer">mappers-go#4</a>).</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="24-bug-fixes-and-enhancements">24+ bug fixes and enhancements<a href="#24-bug-fixes-and-enhancements" class="hash-link" aria-label="Direct link to 24+ bug fixes and enhancements" title="Direct link to 24+ bug fixes and enhancements">​</a></h3><p>In addition to the above new features, KubeEdge v1.6 also includes the following enhancements:</p><ul><li><p>support kubectl get --raw /api/v1/nodes/{node}/proxy/metrics (<a href="https://github.com/kubeedge/kubeedge/pull/2437" target="_blank" rel="noopener noreferrer">#2437</a>)</p></li><li><p>support more metric path in cloud (<a href="https://github.com/kubeedge/kubeedge/pull/2482" target="_blank" rel="noopener noreferrer">#2482</a>)</p></li><li><p>edgecore: add nfs localpath support (<a href="https://github.com/kubeedge/kubeedge/pull/2529" target="_blank" rel="noopener noreferrer">#2529</a>)</p></li><li><p>add func that make subscribed topics persistence (<a href="https://github.com/kubeedge/kubeedge/pull/2457" target="_blank" rel="noopener noreferrer">#2457</a>)</p></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="future-outlook"><strong>Future Outlook</strong><a href="#future-outlook" class="hash-link" aria-label="Direct link to future-outlook" title="Direct link to future-outlook">​</a></h2><p>With the release of v1.6, KubeEdge provides autonomic Kube-API endpoint for applications On Edge nodes, custom message routing between Cloud and Edge, a new repository for Device Mappers, a more friendly user experience, and a more friendly community contributor experience. Thanks to Huawei, China Unicom, Zhejiang University SEL Lab, ARM and other organizations for their contributions, as well as all community contributors for their support!</p><p>The community plans to further improve the user experience and the stability of KubeEdge in subsequent versions and create the best “open source” intelligent edge computing platform for everyone to freely use.</p><p>For more details regarding KubeEdge, please follow and join us here:</p><p><a href="https://kubeedge.io" target="_blank" rel="noopener noreferrer">https://kubeedge.io</a></p>]]></content>
        <author>
            <name>Kevin Wang</name>
            <uri>https://github.com/kevin-wangzefeng</uri>
        </author>
        <author>
            <name>Fei Xu</name>
            <uri>https://github.com/fisherxu</uri>
        </author>
        <category label="KubeEdge" term="KubeEdge"/>
        <category label="kubeedge" term="kubeedge"/>
        <category label="edge computing" term="edge computing"/>
        <category label="kubernetes edge computing" term="kubernetes edge computing"/>
        <category label="K8s edge orchestration" term="K8s edge orchestration"/>
        <category label="edge computing platform" term="edge computing platform"/>
        <category label="cloud native" term="cloud native"/>
        <category label="iot" term="iot"/>
        <category label="iiot" term="iiot"/>
        <category label="release v1.6" term="release v1.6"/>
        <category label="v1.6" term="v1.6"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[KubeEdge v1.5 is live!]]></title>
        <id>https://kubeedge.io/blog/release-v1.5</id>
        <link href="https://kubeedge.io/blog/release-v1.5"/>
        <updated>2020-11-16T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[KubeEdge is an open source system extending native containerized application orchestration and device management to hosts at the Edge. It is built upon Kubernetes and provides core infrastructure support for networking, application deployment and metadata synchronization between cloud and edge. It also supports MQTT and allows developers to author custom logic and enable resource constrained device communication at the Edge.]]></summary>
        <content type="html"><![CDATA[<p><strong>KubeEdge</strong> is an open source system extending native containerized application orchestration and device management to hosts at the Edge. It is built upon Kubernetes and provides core infrastructure support for networking, application deployment and metadata synchronization between cloud and edge. It also supports MQTT and allows developers to author custom logic and enable resource constrained device communication at the Edge.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="kubeedge-v15-a-major-upgrade-for-maintainability-and-edge-devices-management"><strong>KubeEdge v1.5: A major upgrade for maintainability and edge devices management</strong><a href="#kubeedge-v15-a-major-upgrade-for-maintainability-and-edge-devices-management" class="hash-link" aria-label="Direct link to kubeedge-v15-a-major-upgrade-for-maintainability-and-edge-devices-management" title="Direct link to kubeedge-v15-a-major-upgrade-for-maintainability-and-edge-devices-management">​</a></h2><p>On 16th November, the KubeEdge community is proud to announce the availability of KubeEdge 1.5. This release includes a major upgrade for maintainability and edge devices management, which includes:</p><ul><li><p>Simplified Device Mapper reference architecture</p></li><li><p>Modbus Mapper Golang Implementation</p></li><li><p>Support Remote Exec to Pods on Edge From Cloud</p></li><li><p>Support Keadm Debug Command for Trouble Shooting On Edge Nodes</p></li><li><p>Kubernetes Dependencies Upgrade</p></li><li><p>23+ bug fixes and enhancements.</p></li></ul><p>Please refer to <a href="https://github.com/kubeedge/kubeedge/blob/master/CHANGELOG/CHANGELOG-1.5.md" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubeedge/blob/master/CHANGELOG/CHANGELOG-1.5.md</a> for a full list of features in this release</p><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>Release details - <a href="https://github.com/kubeedge/kubeedge/releases/tag/v1.5.0" target="_blank" rel="noopener noreferrer">Release v1.5</a></p></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>How to set up KubeEdge - <a href="https://kubeedge.io/en/docs/setup/keadm/" target="_blank" rel="noopener noreferrer">KubeEdge Setup</a></p></div></div><h2 class="anchor anchorWithStickyNavbar_LWe7" id="release-highlights"><strong>Release Highlights</strong><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="simplified-device-mapper-reference-architecture">Simplified Device Mapper reference architecture<a href="#simplified-device-mapper-reference-architecture" class="hash-link" aria-label="Direct link to Simplified Device Mapper reference architecture" title="Direct link to Simplified Device Mapper reference architecture">​</a></h3><p>New version of Mapper reference architecture:</p><ul><li>Simplified Mapper code structure</li><li>Extracted common code into SDK</li><li>Added new building blocks: Configmap parser, Driver, Event process, Timer</li></ul><p>Users are now able to develop mappers based on the new design standard.(<a href="https://github.com/kubeedge/kubeedge/pull/2147" target="_blank" rel="noopener noreferrer">#2147</a>).</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="modbus-mapper-golang-implementation">Modbus Mapper Golang Implementation<a href="#modbus-mapper-golang-implementation" class="hash-link" aria-label="Direct link to Modbus Mapper Golang Implementation" title="Direct link to Modbus Mapper Golang Implementation">​</a></h3><p>A new modbus mapper with Golang implementation is provided, based on new Device Mapper Standard. (<a href="https://github.com/kubeedge/kubeedge/pull/2282" target="_blank" rel="noopener noreferrer">#2282</a>).</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="support-remote-exec-to-pods-on-edge-from-cloud">Support Remote Exec to Pods on Edge From Cloud<a href="#support-remote-exec-to-pods-on-edge-from-cloud" class="hash-link" aria-label="Direct link to Support Remote Exec to Pods on Edge From Cloud" title="Direct link to Support Remote Exec to Pods on Edge From Cloud">​</a></h3><p>Users are now able to use <code>K8s exec api</code> or <code>kubectl exec</code> command to connect to pods on the edge node. (<a href="https://github.com/kubeedge/kubeedge/pull/2075" target="_blank" rel="noopener noreferrer">#2075</a>).</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="support-keadm-debug-command-for-trouble-shooting-on-edge-nodes">Support Keadm Debug Command for Trouble Shooting On Edge Nodes<a href="#support-keadm-debug-command-for-trouble-shooting-on-edge-nodes" class="hash-link" aria-label="Direct link to Support Keadm Debug Command for Trouble Shooting On Edge Nodes" title="Direct link to Support Keadm Debug Command for Trouble Shooting On Edge Nodes">​</a></h3><p>A set of keadm debug subcommands are added for Trouble Shooting On Edge Nodes.
Users are now able to use <code>keadm debug get</code> and <code>keadm debug collect</code> to get/collect KubeEdge local data for trouble shooting,
and use <code>keadm debug check</code> and <code>keadm debug diagnose</code> to check local environment configuration. (<a href="https://github.com/kubeedge/kubeedge/pull/1939" target="_blank" rel="noopener noreferrer">#1939</a>)</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="kubernetes-dependencies-upgrade">Kubernetes Dependencies Upgrade<a href="#kubernetes-dependencies-upgrade" class="hash-link" aria-label="Direct link to Kubernetes Dependencies Upgrade" title="Direct link to Kubernetes Dependencies Upgrade">​</a></h3><p>Upgrade the vendered kubernetes version to v1.19.3, users now can use the feature of new version
on the cloud and on the edge side. (<a href="https://github.com/kubeedge/kubeedge/pull/2223" target="_blank" rel="noopener noreferrer">#2223</a>)</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="future-outlook"><strong>Future Outlook</strong><a href="#future-outlook" class="hash-link" aria-label="Direct link to future-outlook" title="Direct link to future-outlook">​</a></h2><p>With the release of v1.5, KubeEdge provides more complete device mapper, support for remote exec from Cloud to Pods on Edge, a more friendly user experience, and a more friendly community contributor experience. Thanks to Huawei, China Unicom, Zhejiang University SEL Lab, ARM and other organizations for their contributions, as well as all community contributors for their support!</p><p>The community plans to further improve the user experience and the stability of KubeEdge in subsequent versions and create the best “open source” intelligent edge computing platform for everyone to freely use.</p><p>For more details regarding KubeEdge, please follow and join us here:</p><p><a href="https://kubeedge.io" target="_blank" rel="noopener noreferrer">https://kubeedge.io</a></p>]]></content>
        <author>
            <name>Kevin Wang</name>
            <uri>https://github.com/kevin-wangzefeng</uri>
        </author>
        <author>
            <name>Fei Xu</name>
            <uri>https://github.com/fisherxu</uri>
        </author>
        <category label="KubeEdge" term="KubeEdge"/>
        <category label="kubeedge" term="kubeedge"/>
        <category label="edge computing" term="edge computing"/>
        <category label="kubernetes edge computing" term="kubernetes edge computing"/>
        <category label="K8s edge orchestration" term="K8s edge orchestration"/>
        <category label="edge computing platform" term="edge computing platform"/>
        <category label="cloud native" term="cloud native"/>
        <category label="iot" term="iot"/>
        <category label="iiot" term="iiot"/>
        <category label="release v1.5" term="release v1.5"/>
        <category label="v1.5" term="v1.5"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[KubeEdge v1.4 is live!]]></title>
        <id>https://kubeedge.io/blog/release-v1.4</id>
        <link href="https://kubeedge.io/blog/release-v1.4"/>
        <updated>2020-08-15T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[KubeEdge is an open source system extending native containerized application orchestration and device management to hosts at the Edge. It is built upon Kubernetes and provides core infrastructure support for networking, application deployment and metadata synchronization between cloud and edge. It also supports MQTT and allows developers to author custom logic and enable resource constrained device communication at the Edge.]]></summary>
        <content type="html"><![CDATA[<p><strong>KubeEdge</strong> is an open source system extending native containerized application orchestration and device management to hosts at the Edge. It is built upon Kubernetes and provides core infrastructure support for networking, application deployment and metadata synchronization between cloud and edge. It also supports MQTT and allows developers to author custom logic and enable resource constrained device communication at the Edge.  </p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="kubeedge-v14-a-major-upgrade-for-maintainability-and-edge-devices-management"><strong>KubeEdge v1.4: A major upgrade for maintainability and edge devices management</strong><a href="#kubeedge-v14-a-major-upgrade-for-maintainability-and-edge-devices-management" class="hash-link" aria-label="Direct link to kubeedge-v14-a-major-upgrade-for-maintainability-and-edge-devices-management" title="Direct link to kubeedge-v14-a-major-upgrade-for-maintainability-and-edge-devices-management">​</a></h2><p>On August 15th, the KubeEdge community is proud to announce the availability of KubeEdge 1.4. This release includes a major upgrade for maintainability and edge devices management, which includes:</p><ul><li><p>Enhance Devices Management</p></li><li><p>Metrics-Server Support for metrics collection across cloud and edge</p></li><li><p>EdgeNode Certificate Rotation</p></li><li><p>Kubernetes Dependencies Upgrade</p></li><li><p>34+ bug fixes and enhancements.</p></li></ul><p>Please refer to <a href="https://github.com/kubeedge/kubeedge/blob/master/CHANGELOG/CHANGELOG-1.4.md" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubeedge/blob/master/CHANGELOG/CHANGELOG-1.4.md</a> for a full list of features in this release</p><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>Release details - <a href="https://github.com/kubeedge/kubeedge/releases/tag/v1.4.0" target="_blank" rel="noopener noreferrer">Release v1.4</a></p></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>How to set up KubeEdge - <a href="https://github.com/kubeedge/kubeedge#usage" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubeedge - usage</a></p></div></div><h2 class="anchor anchorWithStickyNavbar_LWe7" id="release-highlights"><strong>Release Highlights</strong><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="enhance-devices-management">Enhance Devices Management<a href="#enhance-devices-management" class="hash-link" aria-label="Direct link to Enhance Devices Management" title="Direct link to Enhance Devices Management">​</a></h3><p>Upgrade device API from v1alpha1 to v1alpha2, enhancement include:</p><ul><li>A new field is added to explicitly provide customized protocol support</li><li>Introduced data section to allow users defining data to get and process on the edge</li><li>Moved propertyVistors from device model to Device instance API</li></ul><p>Users are now able to customize the protocol of the edge device and also able to get and process the date in edge side.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="metrics-server-support-for-metrics-collection-across-cloud-and-edge">Metrics-Server Support for metrics collection across cloud and edge<a href="#metrics-server-support-for-metrics-collection-across-cloud-and-edge" class="hash-link" aria-label="Direct link to Metrics-Server Support for metrics collection across cloud and edge" title="Direct link to Metrics-Server Support for metrics collection across cloud and edge">​</a></h3><p>With KubeEdge v1.4 users are now able to deploy metrics-server to collect resource metrics from edge nodes. Follow the instructions here to deploy the metrics-server.</p><p>Ref: <a href="https://github.com/kubeedge/kubeedge/blob/master/docs/setup/keadm.md#support-metrics-server-in-cloud" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubeedge/blob/master/docs/setup/keadm.md#support-metrics-server-in-cloud</a></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="edgenode-certificate-rotation">EdgeNode Certificate Rotation<a href="#edgenode-certificate-rotation" class="hash-link" aria-label="Direct link to EdgeNode Certificate Rotation" title="Direct link to EdgeNode Certificate Rotation">​</a></h3><p>EdgeNodes are now able to automatically apply for new certificate when the certificate is about to expire and enforce TLS between CloudCore and EdgeCore.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="kubernetes-dependencies-upgrade">Kubernetes Dependencies Upgrade<a href="#kubernetes-dependencies-upgrade" class="hash-link" aria-label="Direct link to Kubernetes Dependencies Upgrade" title="Direct link to Kubernetes Dependencies Upgrade">​</a></h3><p>Upgrade the venderod kubernetes version to v1.18.6, users now can use the feature of new version on the cloud and on the edge side. </p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="34-bug-fixes-and-enhancements">34+ bug fixes and enhancements<a href="#34-bug-fixes-and-enhancements" class="hash-link" aria-label="Direct link to 34+ bug fixes and enhancements" title="Direct link to 34+ bug fixes and enhancements">​</a></h3><p>In addition to the above new features, KubeEdge v1.4 also includes the following enhancements:</p><ul><li><p>Add tree to store copy of dependency's license</p></li><li><p>Add garbage collection of reliablesyncs when node unregisters</p></li><li><p>Fix too long time to get node ready when reconnect </p></li><li><p>Auto detect sandbox image</p></li><li><p>Run edgecore as system service</p></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="future-outlook"><strong>Future Outlook</strong><a href="#future-outlook" class="hash-link" aria-label="Direct link to future-outlook" title="Direct link to future-outlook">​</a></h2><p>With the release of v1.4, KubeEdge provides more complete edge application monitoring and management capabilities, a more stable and reliable cloud-side collaborative transmission mechanism, a more friendly user experience, and a more friendly community contributor experience. Thanks to Huawei, China Unicom, Zhejiang University SEL Lab, ARM and other organizations for their contributions, as well as all community contributors for their support!</p><p>The community plans to further improve the user experience and the stability of KubeEdge in subsequent versions and create the best “open source” intelligent edge computing platform for everyone to freely use.</p><p>For more details regarding KubeEdge, please follow and join us here:</p><p><a href="https://kubeedge.io" target="_blank" rel="noopener noreferrer">https://kubeedge.io</a></p>]]></content>
        <author>
            <name>Kevin Wang</name>
            <uri>https://github.com/kevin-wangzefeng</uri>
        </author>
        <author>
            <name>Fei Xu</name>
            <uri>https://github.com/fisherxu</uri>
        </author>
        <category label="KubeEdge" term="KubeEdge"/>
        <category label="kubeedge" term="kubeedge"/>
        <category label="edge computing" term="edge computing"/>
        <category label="kubernetes edge computing" term="kubernetes edge computing"/>
        <category label="K8s edge orchestration" term="K8s edge orchestration"/>
        <category label="edge computing platform" term="edge computing platform"/>
        <category label="cloud native" term="cloud native"/>
        <category label="iot" term="iot"/>
        <category label="iiot" term="iiot"/>
        <category label="release v1.4" term="release v1.4"/>
        <category label="v1.4" term="v1.4"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[KubeEdge v1.3 is live!]]></title>
        <id>https://kubeedge.io/blog/release-v1.3</id>
        <link href="https://kubeedge.io/blog/release-v1.3"/>
        <updated>2020-05-30T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[KubeEdge is an open source system extending native containerized application orchestration and device management to hosts at the Edge. It is built upon Kubernetes and provides core infrastructure support for networking, application deployment and metadata synchronization between cloud and edge. It also supports MQTT and allows developers to author custom logic and enable resource constrained device communication at the Edge.]]></summary>
        <content type="html"><![CDATA[<p><strong>KubeEdge</strong> is an open source system extending native containerized application orchestration and device management to hosts at the Edge. It is built upon Kubernetes and provides core infrastructure support for networking, application deployment and metadata synchronization between cloud and edge. It also supports MQTT and allows developers to author custom logic and enable resource constrained device communication at the Edge.  </p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="kubeedge-v13-a-major-upgrade-for-maintainability"><strong>KubeEdge v1.3: A major upgrade for maintainability</strong><a href="#kubeedge-v13-a-major-upgrade-for-maintainability" class="hash-link" aria-label="Direct link to kubeedge-v13-a-major-upgrade-for-maintainability" title="Direct link to kubeedge-v13-a-major-upgrade-for-maintainability">​</a></h2><p>On May 15th, the KubeEdge community is proud to announce the availability of KubeEdge 1.3. This release includes a major upgrade for maintainability, which includes:</p><ul><li><p>Collecting logs from pods at edge in cloud</p></li><li><p>Edge node and container monitoring</p></li><li><p>High availability of KubeEdge cloud components</p></li><li><p>Automated TLS bootstrapping for edge nodes</p></li><li><p>CRI-O and Kata Containers runtime support</p></li><li><p>25+ bug fixes and enhancements.</p></li></ul><p>Please refer to <a href="https://github.com/kubeedge/kubeedge/blob/master/CHANGELOG-1.3.md" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubeedge/blob/master/CHANGELOG-1.3.md</a> for a full list of features in this release</p><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>Release details - <a href="https://github.com/kubeedge/kubeedge/releases/tag/v1.3.0" target="_blank" rel="noopener noreferrer">Release v1.3</a></p></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>How to set up KubeEdge - <a href="https://github.com/kubeedge/kubeedge#usage" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubeedge - usage</a></p></div></div><h2 class="anchor anchorWithStickyNavbar_LWe7" id="release-highlights"><strong>Release Highlights</strong><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="collecting-logs-from-pods-at-edge-in-cloud">Collecting logs from pods at edge in cloud<a href="#collecting-logs-from-pods-at-edge-in-cloud" class="hash-link" aria-label="Direct link to Collecting logs from pods at edge in cloud" title="Direct link to Collecting logs from pods at edge in cloud">​</a></h3><p>In most edge computing scenarios, the edge node is in a private network, and the pod logs running on the edge node cannot be directly pulled from the cloud, resulting issues for maintenance and debugging.</p><p>KubeEdge v1.3 includes a built-in streaming data channel which enables cloud to easily obtain edge application container logs via the <em>kubectl</em> <em>logs</em> command, without having to build another VPN server to solve private network access problems.</p><p>In addition, the KubeEdge community plans to provide a <em>kubectl exec</em> command support for edge containers in subsequent versions, so that users can easily connect to the edge application container from the cloud for debugging purposes. </p><p>See more feature details: <a href="https://docs.kubeedge.io/en/latest/setup/kubeedge_install_source.html" target="_blank" rel="noopener noreferrer">https://docs.kubeedge.io/en/latest/setup/kubeedge_install_source.html</a></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="edge-node-and-container-monitoring">Edge node and container monitoring<a href="#edge-node-and-container-monitoring" class="hash-link" aria-label="Direct link to Edge node and container monitoring" title="Direct link to Edge node and container monitoring">​</a></h3><p>KubeEdge v1.3 provides a monitoring interface for edge nodes. Users can obtain edge node and its container information, and integrate it with third-party monitoring systems. This feature is enabled by default. Users have the option to disable this built-in monitoring module through the EnableMetrics item during configuration.</p><p>In the next version, KubeEdge will support the aggregation of edge node and application container monitoring information in the cloud.</p><p>See more feature details: <a href="https://github.com/kubeedge/kubeedge/pull/1573" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubeedge/pull/1573</a></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="high-availability-of-kubeedge-cloud-components">High availability of KubeEdge cloud components<a href="#high-availability-of-kubeedge-cloud-components" class="hash-link" aria-label="Direct link to High availability of KubeEdge cloud components" title="Direct link to High availability of KubeEdge cloud components">​</a></h3><p>In previous releases, the availability of KubeEdge cloud components rely on the automatic recovery mechanism of Kubernetes Deployment. In some extreme cases, this recovery can take a long time to recover from failures.</p><p>KubeEdge v1.3 has a built-in high-availability for the KubeEdge cloud component, CloudCore. When the CloudCore instance fails, a standby CloudCore instance is automatically switched on to minimize the impact of cloud component failures. </p><p>In subsequent versions, the KubeEdge community will further optimize the high concurrency of cloud components to improve throughput in large-scale edge nodes scenarios. </p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="automated-tls-bootstrapping-for-edge-nodes">Automated TLS bootstrapping for edge nodes<a href="#automated-tls-bootstrapping-for-edge-nodes" class="hash-link" aria-label="Direct link to Automated TLS bootstrapping for edge nodes" title="Direct link to Automated TLS bootstrapping for edge nodes">​</a></h3><p>KubeEdge v1.3 introduced automated TLS bootstrapping for edge nodes, which simplifies the operation for users to configure cloud-edge secure channels and improves ease-of-use.</p><p>By default, KubeEdge generates a self-signed certificate for users, which is used for encrypted communication between cloud components and edge nodes. For scenarios that require an unified management of certificates, users can also use certificates issued by designated trust authorities.</p><p>For future releases, the KubeEdge community will support automatic renewal of the node's certificate after expiration.</p><p>See more feature details: <a href="https://github.com/kubeedge/kubeedge/blob/master/docs/setup/kubeedge_configure.md" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubeedge/blob/master/docs/setup/kubeedge_configure.md</a></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="more-container-runtime-support">More container runtime support<a href="#more-container-runtime-support" class="hash-link" aria-label="Direct link to More container runtime support" title="Direct link to More container runtime support">​</a></h3><p>KubeEdge v1.3 adds support of CRI-O and Kata Containers as container runtime.</p><ul><li><p>CRI-O, a CNCF incubation project, is a lightweight container, taking up to 30MB memory, and is in compliance with OCI standards. </p></li><li><p>Kata Containers is an open source container runtime based on lightweight virtual machines. It is designed to combine the security advantages of virtual machines (VMs) with the speed and the manageability of containers.</p></li></ul><p>With v1.3, KubeEdge has official support for all mainstream container runtimes including Docker, containerd, CRI-O and Kata Containers.</p><p>See more feature details: <a href="https://github.com/kubeedge/kubeedge/blob/master/docs/setup/kubeedge_cri_configure.md" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubeedge/blob/master/docs/setup/kubeedge_cri_configure.md</a></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="25-bug-fixes-and-enhancements">25+ bug fixes and enhancements<a href="#25-bug-fixes-and-enhancements" class="hash-link" aria-label="Direct link to 25+ bug fixes and enhancements" title="Direct link to 25+ bug fixes and enhancements">​</a></h3><p>In addition to the above new features, KubeEdge v1.3 also includes the following enhancements:</p><ul><li><p>Added the support for keadm to install KubeEdge on CentOS systems</p></li><li><p>EdgeMesh no longer depends on initContainer, and will take over traffic on the host during startup</p></li><li><p>Fixed the issue that some pods in “the terminating state” cannot be deleted </p></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="future-outlook"><strong>Future Outlook</strong><a href="#future-outlook" class="hash-link" aria-label="Direct link to future-outlook" title="Direct link to future-outlook">​</a></h2><p>With the release of v1.3, KubeEdge provides more complete edge application monitoring and management capabilities, a more stable and reliable cloud-side collaborative transmission mechanism, a more friendly user experience, and a more friendly community contributor experience. Thanks to Huawei, China Unicom, Zhejiang University SEL Lab, ARM and other organizations for their contributions, as well as all community contributors for their support!</p><p>The community plans to further improve the user experience and the stability of KubeEdge in subsequent versions and create the best “open source” intelligent edge computing platform for everyone to freely use. Please refer to the roadmap document for future release plans:</p><p><a href="https://github.com/kubeedge/kubeedge/blob/master/docs/getting-started/roadmap.md" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubeedge/blob/master/docs/getting-started/roadmap.md</a></p><p>For more details regarding KubeEdge, please follow and join us here:</p><p><a href="https://kubeedge.io" target="_blank" rel="noopener noreferrer">https://kubeedge.io</a></p>]]></content>
        <author>
            <name>Yin Ding</name>
            <uri>https://github.com/dingyin</uri>
        </author>
        <author>
            <name>Kevin Wang</name>
            <uri>https://github.com/kevin-wangzefeng</uri>
        </author>
        <category label="KubeEdge" term="KubeEdge"/>
        <category label="kubeedge" term="kubeedge"/>
        <category label="edge computing" term="edge computing"/>
        <category label="kubernetes edge computing" term="kubernetes edge computing"/>
        <category label="K8S edge orchestration" term="K8S edge orchestration"/>
        <category label="edge computing platform" term="edge computing platform"/>
        <category label="cloud native" term="cloud native"/>
        <category label="iot" term="iot"/>
        <category label="iiot" term="iiot"/>
        <category label="release v1.3" term="release v1.3"/>
        <category label="v1.3" term="v1.3"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[KubeEdge v1.2 is out now]]></title>
        <id>https://kubeedge.io/blog/release-v1.2</id>
        <link href="https://kubeedge.io/blog/release-v1.2"/>
        <updated>2020-02-15T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[KubeEdge is an open source system extending native containerized application orchestration and device management to hosts at the Edge. It is built upon Kubernetes and provides core infrastructure support for networking, application deployment and metadata synchronization between cloud and edge. It also supports MQTT and allows developers to author custom logic and enable resource constrained device communication at the Edge.]]></summary>
        <content type="html"><![CDATA[<p><strong>KubeEdge</strong> is an open source system extending native containerized application orchestration and device management to hosts at the Edge. It is built upon Kubernetes and provides core infrastructure support for networking, application deployment and metadata synchronization between cloud and edge. It also supports MQTT and allows developers to author custom logic and enable resource constrained device communication at the Edge.  </p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="today-we-announce-the-v12-release-of-kubeedge"><strong>Today we announce the v1.2 release of KubeEdge.</strong><a href="#today-we-announce-the-v12-release-of-kubeedge" class="hash-link" aria-label="Direct link to today-we-announce-the-v12-release-of-kubeedge" title="Direct link to today-we-announce-the-v12-release-of-kubeedge">​</a></h2><p>On February 9th, the KubeEdge community is proud to announce the availability of KubeEdge 1.2. This release includes a major upgrade on reliability, which includes more reliable message delivery from cloud to edge, component Config API, edge nodes auto-registration, Kubernetes v1.17.1 support, and 30+ fixes.</p><p>Please refer to <a href="https://github.com/kubeedge/kubeedge/blob/release-1.2/CHANGELOG-1.2.md" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubeedge/blob/release-1.2/CHANGELOG-1.2.md</a> for a full list of features in this release, and the following for some highlights.</p><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>Check out the release here:  <a href="https://github.com/kubeedge/kubeedge/releases/tag/v1.2.0" target="_blank" rel="noopener noreferrer">Release v1.2</a>  </p></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>Instructions on how to setup KubeEdge can be found <a href="https://github.com/kubeedge/kubeedge#usage" target="_blank" rel="noopener noreferrer">here</a>  </p></div></div><h3 class="anchor anchorWithStickyNavbar_LWe7" id="a-major-upgrade-on-cloud-edge-transmission-reliability">A major upgrade on Cloud-Edge transmission reliability<a href="#a-major-upgrade-on-cloud-edge-transmission-reliability" class="hash-link" aria-label="Direct link to A major upgrade on Cloud-Edge transmission reliability" title="Direct link to A major upgrade on Cloud-Edge transmission reliability">​</a></h3><p>In an Edge Computing scenario, the instability of edge network could cause the reliability issues of edge’s communication to cloud, which could further cause data loss during communication. To improve Cloud-Edge transmission reliability, KubeEdge v1.2 includes following update：</p><ol><li>Added a verification mechanism for application layer message sending. There is a handshake mechanism built in to acknowledge (via ACK message) the successful state synchronization between cloud and edge. If the acknowledgement fails due to some reason, the application layer loop will trigger the retransmission mechanism to re-synchronize the state.</li><li>Implemented persistent cloud side collaborative messages. During the cloud-edge status synchronization process, cloud will record in real time the latest message version number (ResourceVersion) of each edge node that is successfully synchronized, and persist it to Kubernetes in the form of CRD. This mechanism can ensure the order and the continuity of message after a cloud failure or an edge node offline restart, avoiding cloud/edge inconsistent status caused by resending old messages.</li><li>Implemented a periodic check for cloud-edge data to ensure consistency. Based on the above two features, KubeEdge 1.2 includes a new module that synchronizes Controller to CloudCore. This module periodically checks the synchronization status of edge nodes, compares the information of resources in Kubernetes, and synchronizes states, and ensure the ultimate state consistency between cloud and edge. </li></ol><p>See more details here:
<a href="https://github.com/kubeedge/kubeedge/blob/master/docs/proposals/reliable-message-delivery.md" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubeedge/blob/master/docs/proposals/reliable-message-delivery.md</a></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="component-config-api">Component Config API<a href="#component-config-api" class="hash-link" aria-label="Direct link to Component Config API" title="Direct link to Component Config API">​</a></h3><p>An important improvement that KubeEdge v1.2 offers is the ability to update configuration of all components such as CloudCore, EdgeCore, EdgeSite, etc. by using the Kubernetes style Component Config API, and API versions to support backward compatibility.</p><p>In previous KubeEdge versions, the configuration of KubeEdge components were scattered in separate files for each module, so the maintenance was cumbersome. In this release, the team has aggregated all configurations, so users need to only update a configuration file, and the path of the configuration file can be easily set by using <em>"- -config"</em>.</p><p>This release also offers two options for configuration: default configuration and minimum configuration. Users can use either option to generate configuration files and deploy KubeEdge quickly. </p><p>See more details here: <a href="https://github.com/kubeedge/kubeedge/pull/1172" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubeedge/pull/1172</a></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="edge-nodes-auto-registration">Edge Nodes Auto-registration<a href="#edge-nodes-auto-registration" class="hash-link" aria-label="Direct link to Edge Nodes Auto-registration" title="Direct link to Edge Nodes Auto-registration">​</a></h3><p>In previous versions, users needed to create a Node object on the cloud side first, and then start EdgeCore on the edge side when adding an edge node.</p><p>In release v1.2, KubeEdge provides the ability of automating edge node registration on the cloud side. This feature is enabled by default to improve ease of use. Users can turn it off by setting the "registerNode" configuration of EdgeCore to "false".</p><p>See more details here: <a href="https://github.com/kubeedge/kubeedge/pull/1401" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubeedge/pull/1401</a></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="kubernetes-v1171-support">Kubernetes v1.17.1 support<a href="#kubernetes-v1171-support" class="hash-link" aria-label="Direct link to Kubernetes v1.17.1 support" title="Direct link to Kubernetes v1.17.1 support">​</a></h3><p>KubeEdge v1.2 supports Kubernetes v1.17.1, so users can use the most recent Kubernetes application management, storage management etc.</p><p>Here is the full compatibility table: <a href="https://github.com/kubeedge/kubeedge" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubeedge</a></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="other-fixes">Other Fixes<a href="#other-fixes" class="hash-link" aria-label="Direct link to Other Fixes" title="Direct link to Other Fixes">​</a></h3><ul><li>Fixed CPU usage issues when EdgeCore runs multiple PODs</li><li>Moved Beehive, Viaduct sub-projects under Staging directory for more friendly development experience</li><li>More checks to insure EdgeCore and Kubelet are not running on the same host</li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="summary">Summary<a href="#summary" class="hash-link" aria-label="Direct link to Summary" title="Direct link to Summary">​</a></h3><p>KubeEdge V1.2 offers a more stable and reliable cloud-edge transmission, enhanced edge application management and device management capabilities, a better user experience, and a more friendly community contributor experience. </p><p>A big “thank you” to all the community contributors and we hope to continue this momentum.  Future releases of KubeEdge will further enhance KubeEdge user experience, better intelligent edge computing platform, and other advanced features to make KubeEdge a high performing, reliable, and intelligent solution to Connect Cloud to Edge.  </p><p>For more details regarding KubeEdge, please follow and join us here: <a href="https://kubeedge.io" target="_blank" rel="noopener noreferrer">https://kubeedge.io</a> .</p>]]></content>
        <author>
            <name>Yin Ding</name>
            <uri>https://github.com/dingyin</uri>
        </author>
        <category label="KubeEdge" term="KubeEdge"/>
        <category label="kubeedge" term="kubeedge"/>
        <category label="edge computing" term="edge computing"/>
        <category label="kubernetes edge computing" term="kubernetes edge computing"/>
        <category label="K8S edge orchestration" term="K8S edge orchestration"/>
        <category label="edge computing platform" term="edge computing platform"/>
        <category label="release v1.2" term="release v1.2"/>
        <category label="v1.2" term="v1.2"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Announcement for "KubeEdge Contribution Competition" Winners]]></title>
        <id>https://kubeedge.io/blog/contributor-contest-announcement</id>
        <link href="https://kubeedge.io/blog/contributor-contest-announcement"/>
        <updated>2019-05-29T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[We are very pleased to share that we received a very good response from community for KubeEdge contribution competition that started on 23rd April 2019. Participants were given challenge to either fix issues, raise issues, add code towards feature development, requirement identification, promote KubeEdge by writing blogs or create a sample application using KubeEdge. During this period 156 commits and 66 issues were added in the repository. We thank all the community members for making this event a grand success. We believe that community will continue contributions to KubeEdge with same enthusiasm in the future as well. Each and every contribution is of great worth and to honor top contributors KubeEdge team have selected below members as winners of this competition.]]></summary>
        <content type="html"><![CDATA[<p>We are very pleased to share that we received a very good response from community for KubeEdge contribution competition that started on 23rd April 2019. Participants were given challenge to either fix issues, raise issues, add code towards feature development, requirement identification, promote KubeEdge by writing blogs or create a sample application using KubeEdge. During this period <strong><em>156 commits and 66 issues</em></strong> were added in the repository. We thank all the community members for making this event a grand success. We believe that community will continue contributions to KubeEdge with same enthusiasm in the future as well. Each and every contribution is of great worth and to honor top contributors KubeEdge team have selected below members as winners of this competition.</p><div class="theme-admonition theme-admonition-info alert alert--info admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span><mdxadmonitiontitle><strong>Winners</strong></mdxadmonitiontitle></div><div class="admonitionContent_S0QG"><p><strong>Congratulations!!!</strong></p><ul><li><p>@chendave</p></li><li><p>@kadisi</p></li><li><p>@shouhong</p></li></ul></div></div><p>Hearty Congratulations to all the winners. We will reach out to the winners soon via email.</p>]]></content>
        <author>
            <name>KubeEdge</name>
            <uri>https://github.com/kubeedge-bot</uri>
        </author>
        <category label="KubeEdge" term="KubeEdge"/>
        <category label="kubeedge" term="kubeedge"/>
        <category label="edge computing" term="edge computing"/>
        <category label="kubernetes edge computing" term="kubernetes edge computing"/>
        <category label="K8s edge orchestration" term="K8s edge orchestration"/>
        <category label="edge computing platform" term="edge computing platform"/>
        <category label="KubeCon" term="KubeCon"/>
        <category label="cloud native" term="cloud native"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[KubeEdge Contribution Competition]]></title>
        <id>https://kubeedge.io/blog/contributor-contest</id>
        <link href="https://kubeedge.io/blog/contributor-contest"/>
        <updated>2019-04-23T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[KubeEdge is a CNCF Sandbox project that extends K8s from Cloud to Edge. We would like to invite you to join us in furthering this project and making it usable for everyone. To make this contribution effort more fun, we're proposing a contribution competition. See below for details. May the best contributor win!]]></summary>
        <content type="html"><![CDATA[<p>KubeEdge is a CNCF Sandbox project that extends K8s from Cloud to Edge. We would like to invite you to join us in furthering this project and making it usable for everyone. To make this contribution effort more fun, we're proposing a contribution competition. See below for details. May the best contributor win!</p><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>Contribute to KubeEdge and Win a ticket to <strong><a href="https://www.lfasiallc.com/events/kubecon-cloudnativecon-china-2019/" target="_blank" rel="noopener noreferrer">KubeCon + CloudNativeCon &amp; Open Source Summit, Shanghai, China 2019.</a></strong></p></div></div><p>That's right, contribute and win! Contribution is not limited to code contribution only; it can also include documentation, blogging, testing/issue identification, requirement identification and others. See details below</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="how-to-participate-"><strong>How to participate ?</strong><a href="#how-to-participate-" class="hash-link" aria-label="Direct link to how-to-participate-" title="Direct link to how-to-participate-">​</a></h2><ol><li>Raise pull request (PR) either for feature development / test code development (may be unit test code, edge module test code or end to end test code) in repos <a href="https://github.com/kubeedge/kubeedge" target="_blank" rel="noopener noreferrer">kubeedge</a> / <a href="https://github.com/kubeedge/beehive" target="_blank" rel="noopener noreferrer">beehive</a> / <a href="https://github.com/kubeedge/viaduct" target="_blank" rel="noopener noreferrer">viaduct</a> / <a href="https://github.com/kubeedge/website" target="_blank" rel="noopener noreferrer">website</a>.</li><li>Identify defects, raise issues in respective repos <a href="https://github.com/kubeedge/kubeedge" target="_blank" rel="noopener noreferrer">kubeedge</a> / <a href="https://github.com/kubeedge/beehive" target="_blank" rel="noopener noreferrer">beehive</a> / <a href="https://github.com/kubeedge/viaduct" target="_blank" rel="noopener noreferrer">viaduct</a> / <a href="https://github.com/kubeedge/website" target="_blank" rel="noopener noreferrer">website</a>.</li><li>Resolving existing issues in repos&nbsp;<a href="https://github.com/kubeedge/kubeedge" target="_blank" rel="noopener noreferrer">kubeedge</a> / <a href="https://github.com/kubeedge/beehive" target="_blank" rel="noopener noreferrer">beehive</a> / <a href="https://github.com/kubeedge/viaduct" target="_blank" rel="noopener noreferrer">viaduct</a> / <a href="https://github.com/kubeedge/website" target="_blank" rel="noopener noreferrer">website</a>.</li><li>Share requirements by creating issues in repo <a href="https://github.com/kubeedge/kubeedge" target="_blank" rel="noopener noreferrer">kubeedge</a>.</li><li>Writing blogs about KubeEdge either in the <a href="https://kubeedge.io" target="_blank" rel="noopener noreferrer">KubeEdge website</a> (on PR approved &amp; merged, this gets published in <a href="https://kubeedge.io" target="_blank" rel="noopener noreferrer">kubeedge.io</a>&nbsp;website blog) or in other technical blogging site. Please refer here to know how to write a <a href="https://github.com/kubeedge/website/wiki/How-to-write-a-blog" target="_blank" rel="noopener noreferrer">KubeEdge blog</a>.
Submit your blog details <a href="https://docs.google.com/forms/d/e/1FAIpQLSd9luGaHWt5jABEQjtr11CgWLVw7Px6tJf0TIjidbl3UL_Izg/viewform" target="_blank" rel="noopener noreferrer">here</a>.</li><li>Create your own sample applications and demo examples to illustrate possible use case(s) of using KubeEdge in repo&nbsp;<a href="https://github.com/kubeedge/examples" target="_blank" rel="noopener noreferrer">examples</a>.</li></ol><h2 class="anchor anchorWithStickyNavbar_LWe7" id="who-can-participate-"><strong>Who can participate ?</strong><a href="#who-can-participate-" class="hash-link" aria-label="Direct link to who-can-participate-" title="Direct link to who-can-participate-">​</a></h2><p>Anyone is welcome!</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="how-the-winners-are-selected-"><strong>How the winners are selected ?</strong><a href="#how-the-winners-are-selected-" class="hash-link" aria-label="Direct link to how-the-winners-are-selected-" title="Direct link to how-the-winners-are-selected-">​</a></h2><p>Contribution can be made in the following various ways. Please see below for contribution requirements and how we select winners.</p><ul><li><p>Code contribution: Any code contribution should follow the <a href="https://github.com/kubeedge/kubeedge/blob/master/CONTRIBUTING.md" target="_blank" rel="noopener noreferrer">contribution flow</a> to get accepted. We will review the code submitted along with PR(s) for feature / test case development or issue fix.</p></li><li><p>Issue identification: we will check the severity of issue and the quality of description that reproduces the identified issue with sufficient details.</p></li><li><p>Requirement identification: we will check the quality of the requirement description, the uniqueness and the value of the identified requirement in comparison to the other Edge Computing  platforms in the industry.</p></li><li><p>KubeEdge project promotion: For any blog/wechat messages/twitter tweets/white papers/articles written about KubeEdge, we will review the content &amp; popularity of the content.</p></li><li><p>Example contribution: For any example created, we will review the code and the documentation of the steps &amp; user guide.</p></li></ul><p><strong>Any contribution is greatly appreciated and 3 winners will be selected!</strong>  </p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="timeline"><strong>Timeline</strong><a href="#timeline" class="hash-link" aria-label="Direct link to timeline" title="Direct link to timeline">​</a></h2><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>Competition starts: <strong>23rd April 2019 00:00 (UTC)</strong><br>
<!-- -->Competition ends: <strong>22nd May 2019 23:59 (UTC)</strong></p></div></div><h2 class="anchor anchorWithStickyNavbar_LWe7" id="how-the-winners-are-notified-"><strong>How the winners are notified ?</strong><a href="#how-the-winners-are-notified-" class="hash-link" aria-label="Direct link to how-the-winners-are-notified-" title="Direct link to how-the-winners-are-notified-">​</a></h2><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>We will make the winner announcement blog on <strong>23rd May 2019 00:00 (UTC)</strong> via e-mail, slack, wechat, twitter.</p></div></div><p>Winners' Github ID will be published in this section. Winners will receive an e-mail that is associated with his/her Github ID. Any question, please contact us via:</p><ul><li><a href="https://groups.google.com/forum/#!forum/kubeedge" target="_blank" rel="noopener noreferrer">mailing list</a></li><li><a href="https://kubeedge.io/docs/community/slack/" target="_blank" rel="noopener noreferrer">slack</a></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="resources"><strong>Resources</strong><a href="#resources" class="hash-link" aria-label="Direct link to resources" title="Direct link to resources">​</a></h2><ul><li><p><a href="https://github.com/kubeedge/kubeedge" target="_blank" rel="noopener noreferrer">kubeedge</a></p></li><li><p><a href="https://github.com/kubeedge/viaduct" target="_blank" rel="noopener noreferrer">viaduct</a></p></li><li><p><a href="https://github.com/kubeedge/beehive" target="_blank" rel="noopener noreferrer">beehive</a></p></li><li><p><a href="https://github.com/kubeedge/examples" target="_blank" rel="noopener noreferrer">examples</a></p></li><li><p><a href="https://github.com/kubeedge/website" target="_blank" rel="noopener noreferrer">website</a></p></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="kubeedge-community-code-of-conduct"><strong>KubeEdge community Code of Conduct</strong><a href="#kubeedge-community-code-of-conduct" class="hash-link" aria-label="Direct link to kubeedge-community-code-of-conduct" title="Direct link to kubeedge-community-code-of-conduct">​</a></h2><p>KubeEdge follows the CNCF <a href="https://github.com/kubeedge/kubeedge/blob/master/CODE_OF_CONDUCT.md" target="_blank" rel="noopener noreferrer">Code of conduct</a>.</p>]]></content>
        <author>
            <name>KubeEdge</name>
            <uri>https://github.com/kubeedge-bot</uri>
        </author>
        <category label="KubeEdge" term="KubeEdge"/>
        <category label="kubeedge" term="kubeedge"/>
        <category label="edge computing" term="edge computing"/>
        <category label="kubernetes edge computing" term="kubernetes edge computing"/>
        <category label="K8S edge orchestration" term="K8S edge orchestration"/>
        <category label="edge computing platform" term="edge computing platform"/>
        <category label="KubeCon" term="KubeCon"/>
        <category label="cloud native" term="cloud native"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Secure kubeedge using SPIFFE/SPIRE]]></title>
        <id>https://kubeedge.io/blog/secure-kubeedge</id>
        <link href="https://kubeedge.io/blog/secure-kubeedge"/>
        <updated>2019-04-16T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Why SPIFFE for edge computing?]]></summary>
        <content type="html"><![CDATA[<h2 class="anchor anchorWithStickyNavbar_LWe7" id="why-spiffe-for-edge-computing">Why SPIFFE for edge computing?<a href="#why-spiffe-for-edge-computing" class="hash-link" aria-label="Direct link to Why SPIFFE for edge computing?" title="Direct link to Why SPIFFE for edge computing?">​</a></h2><p>Edge computing framework capabilities should be able to cloud-native design patterns and practices such as container orchestration, microservices, serverless computation which has led to increasing heterogeneous deployment environments. Conventional practices for securing heterogeneous deployments add complexity overhead to enforcing policies, prevention and detection of threats. Due to the increase in complexity, there is more scope of error in manageability and also, constraints the scalability of the applications across multiple production environments. In such cases, a common identity framework for workloads becomes necessary to avoid the pit-falls of conventional security policies (such as managing network policies that are based on rules for traffic between particular ip addresses) which affect implementation of distributed patterns.</p><p>This enables to build a security model which is application-oriented rather than infrastructure-oriented.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="what-is-spiffe-and-spire">What is SPIFFE and SPIRE?<a href="#what-is-spiffe-and-spire" class="hash-link" aria-label="Direct link to What is SPIFFE and SPIRE?" title="Direct link to What is SPIFFE and SPIRE?">​</a></h2><p>The SPIFFE standard provides a specification for a framework capable of bootstrapping and issuing identity to services across heterogeneous environments and organizational boundaries.</p><p>SPIFFE specification standardizes the process of assigning identities to workloads , verifying and validation of workload identities and workload API to retrieve the identities. </p><p><a href="https://github.com/spiffe/spiffe" target="_blank" rel="noopener noreferrer">https://github.com/spiffe/spiffe</a></p><p>SPIFFE identities are encompassed in a SVID (SPIFFE Verifiable Identity Document). SVID specification provides the requirement for properties that must be supported when implementing SVID. Following link provides more information on SVID based on X509 certificate.</p><p><a href="https://github.com/spiffe/spiffe/blob/master/standards/X509-SVID.md" target="_blank" rel="noopener noreferrer">https://github.com/spiffe/spiffe/blob/master/standards/X509-SVID.md</a></p><p>SPIRE is a toolchain implementation for SPIFFE specification that enables establishing trust between workloads (using mTLS or JWT) across different deployment environments,issue SPIFFE IDs and  workload API to retrieve workload SVIDs.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="how-does-spire-work">How does SPIRE work?<a href="#how-does-spire-work" class="hash-link" aria-label="Direct link to How does SPIRE work?" title="Direct link to How does SPIRE work?">​</a></h2><p>Following information is extracted from Scytale presentations which gives informative and simplistic view on how SPIRE works.</p><p><img loading="lazy" alt="registration" src="/assets/images/reg-b5d247767289a670981626f5d03eccfe.png" width="952" height="532" class="img_ev3q"></p><p><img loading="lazy" alt="nodeattestion1" src="/assets/images/node1-f3a9e3fdcd732191a1d221db26f316b7.png" width="951" height="511" class="img_ev3q"></p><p><img loading="lazy" alt="nodeattestion2" src="/assets/images/node2-b9033144a3ec7f280df940a7269fab0d.png" width="949" height="497" class="img_ev3q"></p><p><img loading="lazy" alt="Workloadattestation" src="/assets/images/wattest-7cf7b052aec66bfcd203a6b9f9091178.png" width="940" height="488" class="img_ev3q"></p><p><img loading="lazy" alt="svidbundle1" src="/assets/images/sb1-139b31728185a1882070e98a7948aa7e.png" width="931" height="488" class="img_ev3q"></p><p><img loading="lazy" alt="svidbundle2" src="/assets/images/sb2-031be04bab26968764b981c4d014fbb6.png" width="943" height="486" class="img_ev3q"></p><p><img loading="lazy" alt="svidbundle3" src="/assets/images/sb3-4828378d9cca7ea6b7c45085c2abf4ab.png" width="937" height="490" class="img_ev3q"></p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="what-are-the-few-desired-security-requirements-for-kubeedge">What are the few desired security requirements for Kubeedge?<a href="#what-are-the-few-desired-security-requirements-for-kubeedge" class="hash-link" aria-label="Direct link to What are the few desired security requirements for Kubeedge?" title="Direct link to What are the few desired security requirements for Kubeedge?">​</a></h2><p>Security is a paramount requirement for edge computing architecture as security breaches can make a complete organization to come to a halt (IIot) , data breach can lead to privacy issues and also control of the complete edge computing infrastructure. Few of the security requirements for deployment for kubeedge framework and edge application, but not limited to, are </p><ul><li><p>An identifiable edge node and workloads executing on the edge node.</p></li><li><p>A method to verify the authenticity of the node and workloads executing on the node.</p></li><li><p>Automated rotation of security credentials.</p></li><li><p>Limit the affect of SPOF (in case of security-related events).</p></li><li><p>Auditable security information about node and workloads in the environment.</p></li><li><p>Limit access of user workloads to framework components and cloud.\</p></li><li><p>Secure device provisioning.</p></li><li><p>Device identity management and access control.</p></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="how-spire-helps-kubeedge">How SPIRE helps Kubeedge?<a href="#how-spire-helps-kubeedge" class="hash-link" aria-label="Direct link to How SPIRE helps Kubeedge?" title="Direct link to How SPIRE helps Kubeedge?">​</a></h2><ul><li><p>Node attestation: Only verifiable edge nodes can join the edge clusters. Every node is issued an identity on verification. In case of failed node attestations, no identity documents can be issued for services running on the node.</p></li><li><p>Workload attestation: Only verifiable workload can run on edge nodes. In case of failed workload attestations, there are no identities issues for the workloads. All communications are blocked from unverified workloads.</p></li><li><p>Certificate rotation: Short-lived certificates are generated and rotation policies can be configured for every service communication. There is no need for custom agents and reliance on specific orchestrators for certificate rotation configuration and management.</p></li><li><p>Automated non-root CA certificate hierarchical deployments: Edge spire servers can be configured to not share any root CA chain for downstream nodes and workloads.</p></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="example-demo">Example Demo<a href="#example-demo" class="hash-link" aria-label="Direct link to Example Demo" title="Direct link to Example Demo">​</a></h2><p>In the present example PoC, there is no solution implemented for secure device provisioning and identity management. It will be added in the forthcoming versions. An example demo using SPIRE for secure deployment of edge node and sample applications can be found at </p><p><a href="https://github.com/kubeedge/examples/tree/master/security-demo" target="_blank" rel="noopener noreferrer"><em>https://github.com/kubeedge/examples/tree/master/security-demo</em></a></p>]]></content>
        <author>
            <name>Trilok Geer</name>
            <uri>https://github.com/trilokgm</uri>
        </author>
        <category label="KubeEdge" term="KubeEdge"/>
        <category label="kubeedge" term="kubeedge"/>
        <category label="edge computing" term="edge computing"/>
        <category label="kubernetes edge computing" term="kubernetes edge computing"/>
        <category label="K8S edge orchestration" term="K8S edge orchestration"/>
        <category label="edge computing platform" term="edge computing platform"/>
        <category label="security" term="security"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[From the K8S blog: KubeEdge - a Kubernetes Native Edge Computing Framework]]></title>
        <id>https://kubeedge.io/blog/cncf-sandbox-announcement</id>
        <link href="https://kubeedge.io/blog/cncf-sandbox-announcement"/>
        <updated>2019-03-19T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[The KubeEdge team presented their case for sandboxing at the CNCF TOC meeting on 12th March 2019.]]></summary>
        <content type="html"><![CDATA[<p>The <strong>KubeEdge</strong> team presented their case for sandboxing at the CNCF TOC meeting on 12th March 2019.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="today-we-announce-the-acceptance-of-kubeedge-under-the-cncf-sandbox"><strong>Today we announce the acceptance of KubeEdge under the CNCF sandbox.</strong><a href="#today-we-announce-the-acceptance-of-kubeedge-under-the-cncf-sandbox" class="hash-link" aria-label="Direct link to today-we-announce-the-acceptance-of-kubeedge-under-the-cncf-sandbox" title="Direct link to today-we-announce-the-acceptance-of-kubeedge-under-the-cncf-sandbox">​</a></h2><div class="theme-admonition theme-admonition-info alert alert--info admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><div class="admonitionContent_S0QG"><p>Original Article: <a href="https://kubernetes.io/blog/2019/03/19/kubeedge-k8s-based-edge-intro/" target="_blank" rel="noopener noreferrer">Source</a></p></div></div><div class="theme-admonition theme-admonition-info alert alert--info admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><div class="admonitionContent_S0QG"><p>CNCF Sandbox page: <a href="https://www.cncf.io/sandbox-projects/" target="_blank" rel="noopener noreferrer">CNCF Sandbox Projects</a></p></div></div><div class="theme-admonition theme-admonition-info alert alert--info admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><div class="admonitionContent_S0QG"><p><a href="https://github.com/kubeedge/kubeedge" target="_blank" rel="noopener noreferrer">KubeEdge Repository</a> | <a href="https://docs.kubeedge.io" target="_blank" rel="noopener noreferrer">KubeEdge Documentation</a> | <a href="https://kubeedge.io/docs/category/setup" target="_blank" rel="noopener noreferrer">Setup KubeEdge</a></p></div></div><h2 class="anchor anchorWithStickyNavbar_LWe7" id="kubeedge-becomes-the-first-kubernetes-native-edge-computing-platform-with-both-edge-and-cloud-components-open-sourced"><strong>KubeEdge becomes the first Kubernetes Native Edge Computing Platform with both Edge and Cloud components open sourced!</strong><a href="#kubeedge-becomes-the-first-kubernetes-native-edge-computing-platform-with-both-edge-and-cloud-components-open-sourced" class="hash-link" aria-label="Direct link to kubeedge-becomes-the-first-kubernetes-native-edge-computing-platform-with-both-edge-and-cloud-components-open-sourced" title="Direct link to kubeedge-becomes-the-first-kubernetes-native-edge-computing-platform-with-both-edge-and-cloud-components-open-sourced">​</a></h2><p>Open source edge computing is going through its most dynamic phase of development in the industry. So many open source platforms, so many consolidations and so many initiatives for standardization! This shows the strong drive to build better platforms to bring cloud computing to the edges to meet ever increasing demand. KubeEdge, which was announced last year, now brings great news for cloud native computing! It provides a complete edge computing solution based on Kubernetes with separate cloud and edge core modules. Currently, both the cloud and edge modules are open sourced.</p><p>Unlike certain light weight kubernetes platforms available around, KubeEdge is made to build edge computing solutions extending the cloud. The control plane resides in cloud, though scalable and extendable. At the same time, the edge can work in offline mode. Also it is lightweight and containerized, and can support heterogeneous hardware at the edge. With the optimization in edge resource utilization, KubeEdge positions to save significant setup and operation cost for edge solutions. This makes it the most compelling edge computing platform in the world currently, based on Kubernetes!</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="kubernetesedge---opening-up-a-new-kubernetes-based-ecosystem-for-edge-computing"><strong><em>Kube(rnetes)Edge</em>!</strong> - Opening up a new Kubernetes-based ecosystem for Edge Computing<a href="#kubernetesedge---opening-up-a-new-kubernetes-based-ecosystem-for-edge-computing" class="hash-link" aria-label="Direct link to kubernetesedge---opening-up-a-new-kubernetes-based-ecosystem-for-edge-computing" title="Direct link to kubernetesedge---opening-up-a-new-kubernetes-based-ecosystem-for-edge-computing">​</a></h3><p>The key goal for KubeEdge is extending Kubernetes ecosystem from cloud to edge. From the time it was announced to the public at KubeCon in Shanghai in November 2018, the architecture direction for KubeEdge was aligned to Kubernetes, as its name!</p><p>It started with its v0.1 providing the basic edge computing features. Now, with its latest release v0.2, it brings the cloud components to connect and complete the loop. With consistent and scalable Kubernetes-based interfaces, KubeEdge enables the orchestration and management of edge clusters similar to how Kubernetes manages in the cloud. This opens up seamless possibilities of bringing cloud computing capabilities to the edge, quickly and efficiently.</p><p>Based on its roadmap and architecture, KubeEdge tries to support all edge nodes, applications, devices and even the cluster management consistent with the Kubernetes interface. This will help the edge cloud act exactly like a cloud cluster. This can save a lot of time and cost on the edge cloud development deployment based on KubeEdge.</p><p>KubeEdge provides a containerized edge computing platform, which is inherently scalable. As it’s modular and optimized, it is lightweight (66MB foot print and ~30MB running memory) and could be deployed on low resource devices. Similarly, the edge node can be of different hardware architecture and with different hardware configurations. For the device connectivity, it can support multiple protocols and it uses a standard MQTT-based communication. This helps in scaling the edge clusters with new nodes and devices efficiently.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="you-heard-it-right"><strong>You heard it right!</strong><a href="#you-heard-it-right" class="hash-link" aria-label="Direct link to you-heard-it-right" title="Direct link to you-heard-it-right">​</a></h2><blockquote><p><strong>KubeEdge Cloud Core modules are open sourced!</strong></p></blockquote><p>By open sourcing both the edge and cloud modules, KubeEdge brings a complete cloud vendor agnostic lightweight heterogeneous edge computing platform. It is now ready to support building a complete Kubernetes ecosystem for edge computing, exploiting most of the existing cloud native projects or software modules. This can enable a mini-cloud at the edge to support demanding use cases like data analytics, video analytics, machine learning and more.</p><p>KubeEdge Architecture: Building Kubernetes Native Edge computing!
The core architecture tenet for KubeEdge is to build interfaces that are consistent with Kubernetes, be it on the cloud side or edge side.</p><p><strong>Edged</strong>: Manages containerized Applications at the Edge.</p><p><strong>EdgeHub</strong>: Communication interface module at the Edge. It is a web socket client responsible for interacting with Cloud Service for edge computing.</p><p><strong>CloudHub</strong>: Communication interface module at the Cloud. A web socket server responsible for watching changes on the cloud side, caching and sending messages to EdgeHub.</p><p><strong>EdgeController</strong>: Manages the Edge nodes. It is an extended Kubernetes controller which manages edge nodes and pods metadata so that the data can be targeted to a specific edge node.</p><p><strong>EventBus</strong>: Handles the internal edge communications using MQTT. It is an MQTT client to interact with MQTT servers (mosquitto), offering publish and subscribe capabilities to other components.</p><p><strong>DeviceTwin</strong>: It is software mirror for devices that handles the device metadata. This module helps in handling device status and syncing the same to cloud. It also provides query interfaces for applications, as it interfaces to a lightweight database (SQLite).</p><p><strong>MetaManager</strong>: It manages the metadata at the edge node. This is the message processor between edged and edgehub. It is also responsible for storing/retrieving metadata to/from a lightweight database (SQLite).</p><p>Even if you want to add more control plane modules based on the architecture refinement and improvement (for example enhanced security), it is simple as it uses consistent registration and modular communication within these modules.</p><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><p>KubeEdge provides scalable lightweight Kubernetes Native Edge Computing Platform which can work in offline mode.</p></li><li><p>It helps simplify edge application development and deployment.</p></li><li><p>Cloud vendor agnostic and can run the cloud core modules on any compute node.</p></li></ul></div></div><h2 class="anchor anchorWithStickyNavbar_LWe7" id="release-01-to-02--game-changer"><strong>Release 0.1 to 0.2 – game changer!</strong><a href="#release-01-to-02--game-changer" class="hash-link" aria-label="Direct link to release-01-to-02--game-changer" title="Direct link to release-01-to-02--game-changer">​</a></h2><p>KubeEdge v0.1 was released at the end of December 2018 with very basic edge features to manage edge applications along with Kubernetes API primitives for node, pod, config etc. In ~2 months, KubeEdge v0.2 was release on March 5th, 2019. This release provides the cloud core modules and enables the end to end open source edge computing solution. The cloud core modules can be deployed to any compute node from any cloud vendors or on-prem.</p><p>Now, the complete edge solution can be installed and tested very easily, also with a laptop.</p><p>Run Anywhere - Simple and Light
As described, the KubeEdge Edge and Cloud core components can be deployed easily and can run the user applications. The edge core has a foot print of 66MB and just needs 30MB memory to run. Similarly the cloud core can run on any cloud nodes. (User can experience by running it on a laptop as well)</p><p>The installation is simple and can be done in few steps:</p><ul><li>Setup the pre-requisites Docker, Kubernetes, MQTT and openssl</li><li>Clone and Build KubeEdge Cloud and Edge</li><li>Run Cloud</li><li>Run Edge</li><li>The detailed steps for each are available at <a href="https://kubeedge.io/docs/category/setup" target="_blank" rel="noopener noreferrer">KubeEdge Setup</a></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="future-taking-off-with-competent-features-and-community-collaboration"><strong>Future: Taking off with competent features and community collaboration</strong><a href="#future-taking-off-with-competent-features-and-community-collaboration" class="hash-link" aria-label="Direct link to future-taking-off-with-competent-features-and-community-collaboration" title="Direct link to future-taking-off-with-competent-features-and-community-collaboration">​</a></h2><p>KubeEdge has been developed by members from the community who are active contributors to Kubernetes/CNCF and doing research in edge computing. The KubeEdge team is also actively collaborating with Kubernetes IOT/EDGE WORKING GROUP. Within a few months of the KubeEdge announcement it has attracted members from different organizations including JingDong, Zhejiang University, SEL Lab, Eclipse, China Mobile, ARM, Intel to collaborate in building the platform and ecosystem.</p><p>KubeEdge has a clear <a href="https://kubeedge.io/docs/roadmap" target="_blank" rel="noopener noreferrer">roadmap</a> for its upcoming major releases in 2019. v1.0 targets to provide a complete edge cluster and device management solution with standard edge to edge communication, while v2.0 targets to have advanced features like service mesh, function service , data analytics etc at edge. Also, for all the features, KubeEdge architecture would attempt to utilize the existing CNCF projects/software.</p><p>The KubeEdge community needs varied organizations, their requirements, use cases and support to build it. Please join to make a kubernetes native edge computing platform which can extend the cloud native computing paradigm to edge cloud.</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="how-to-get-involved"><strong>How to Get Involved?</strong><a href="#how-to-get-involved" class="hash-link" aria-label="Direct link to how-to-get-involved" title="Direct link to how-to-get-involved">​</a></h2><p>We welcome more collaboration to build the Kubernetes native edge computing ecosystem. Please join us!</p><div class="theme-admonition theme-admonition-info alert alert--info admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"></path></svg></span>info</div><div class="admonitionContent_S0QG"><ul><li>Twitter: <a href="https://twitter.com/KubeEdge" target="_blank" rel="noopener noreferrer">https://twitter.com/KubeEdge</a></li><li>Slack: <a href="https://kubeedge.io/docs/community/slack/" target="_blank" rel="noopener noreferrer">https://kubeedge.io/docs/community/slack/</a></li><li>Website: <a href="https://kubeedge.io" target="_blank" rel="noopener noreferrer">https://kubeedge.io</a></li><li>Documentation: <a href="https://docs.kubeedge.io" target="_blank" rel="noopener noreferrer">https://docs.kubeedge.io</a></li><li>GitHub: <a href="https://github.com/kubeedge/kubeedge" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubeedge</a></li><li>Email: <a href="mailto:kubeedge@gmail.com" target="_blank" rel="noopener noreferrer">kubeedge@gmail.com</a></li></ul></div></div>]]></content>
        <author>
            <name>Sanil Kumar</name>
            <uri>https://github.com/skdwriting</uri>
        </author>
        <author>
            <name>Jun Du</name>
            <uri>https://github.com/kubeedge</uri>
        </author>
        <category label="KubeEdge" term="KubeEdge"/>
        <category label="kubeedge" term="kubeedge"/>
        <category label="edge computing" term="edge computing"/>
        <category label="kubernetes edge computing" term="kubernetes edge computing"/>
        <category label="K8S edge orchestration" term="K8S edge orchestration"/>
        <category label="edge computing platform" term="edge computing platform"/>
        <category label="cncf sandbox" term="cncf sandbox"/>
        <category label="cloud native" term="cloud native"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Control home appliances from cloud]]></title>
        <id>https://kubeedge.io/blog/control-home-appliances-via-cloud</id>
        <link href="https://kubeedge.io/blog/control-home-appliances-via-cloud"/>
        <updated>2019-03-05T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Edge Computing with KubeEdge]]></summary>
        <content type="html"><![CDATA[<p><strong>Edge Computing with KubeEdge</strong></p><p>Cloud computing is far away from terminal devices (such as cameras, sensors, etc.). For real-time computing requirements, placing calculations on the cloud can cause long network delays, network congestion, and degradation of service quality. Terminal devices usually have insufficient computing power and cannot be compared to the cloud. In this case, edge computing came into being, extending the cloud computing power to the edge nodes close to the terminal device, which perfectly solved the above problem.</p><p>As the world's first open source edge computing platform for Kubernetes, KubeEdge relies on Kubernetes' container orchestration and scheduling capabilities to provide the ability to extend the application on the cloud to the edge by managing the edge nodes of the user, and to link the data on the edge side and the cloud to meet the requirements. Customer's remote control, data processing, analysis and decision-making, and intelligent appeal for edge computing resources. At the same time, it provides unified equipment/application monitoring, log collection and other operation and maintenance capabilities in the cloud, providing enterprises with complete edge computing solutions for integrated cloud and cloud services.</p><p><strong>Device Health and KubeEdge Device Management</strong></p><p><img loading="lazy" src="data:image/webp;base64,UklGRpwYAABXRUJQVlA4IJAYAACwdwCdASq/AcUAPm0ylUekIqchJLP8iOANiU3eSzMCvLnjKUqlWQJ0nPgr55jZ4Yct/sfOB518JPd2mPbPZL8u/nz/W/c585f9j+x3v1/wXqLf23yzPXj+5nrI+yv3OP+L+0fv78nLrvv5D/w/aS/YD1q/93+1XxO/4r/ge2JpoX1bug/yH+j8LfJD6y9zvkG+r8qfWJqR9sf5v8w/k7/OfrH45/F7/A9RT2B/t99n17/SegR60fUv2C9dT6jzK+tPoi/q3+29gPBW8+/Xj4A/6f/Yv+36nP1p6WvqX/1+43/P/7z/3SiIM+QlpLBrqAS3PpA94YJ1jMyi5lXqPyJpXCqpMpI4/ufEBfrMPiWbn/FE7aLSURz2DDI/aIxkxaxPtqf7C7YKg2eFm/BVW0Wldzc/zqxUPOSczKMLgAYlNAc7/Xh1O8JueI+bI5iwF8yJBMaLTx8X4muqoG8G9ZMNAlyi8lhoLcxVJWxuUnGjbLRW5SJTjdREDv7cSnxOgyxgsv0zHLjl37KG1gfYR/uZlRoQGZDFkbq3PQUnt2G6rEmluf498JeYgZoUAJFx9lA2eMCI7amWz6QtiOdM6QKSfwgsUn7tEOBUpKKbUljo1YAE25dQiCsiA+eSs6B0mDfdVXgJNVJRx9Sl1BMj7UrXsix/cVbCXxSo6H0ByxhD6V1sm0hWos4Ke356Wtwv9lmujstyt0Z10qvE6nABd7VZnmLGQyq1KNSd+n7PgV+I3nccgxWeRqkDjjGjFuUt6RsExiIWcdu0aQrUv3yYCKq3OVgXBBMd3QcfcuRlaZO71h5z9vp78SQpDkfRR1y/sD7f+/tkfqm6NMayFGr2Gf6cDN/s+KoLobfSrc8bN1B6GZozHxmvGUMuzTxq2YdEudWmleAg7DHfVGGQiw02wggZJTUfuWJCjKplxAEH3gekXyQQGwaMKZiT4C9vI3V4BDd0sJIszKWuRKDeybYlsSF62nn5Q1Y167LUdsDZpmY4c+l6KUFy2o8OxWa9sknYL9RcGOqKvI322Pa4dwY5YqJZAl+fGwKihNdEWX8egSV+UnW3e6WLwetUS9oORRoGu3rP1ixvE8sJ6p3WnCqHlXu7zS398S94gq8SikS9tmTjOJCbIAtG6A5RPg5Tz49PgHKLxextirImjnbcIZZFp7ttJR7BsxZv5mL8AFFl5u9xWmyCtuy+kljH5cwYBIXnh0gCTFc3uWT598tarmVigdzr0FNDMJEjwkamLDP6pHJc8t1C3bANYSxqB3KY0VUYEG0C8avCBAAA/v+N6mZ/yr6n4VJVPynd2DSdoG28mlvvQCMm9HyTpKSq8uLB9wENIWUjAdMQCjOOogAAAtzrf420Y6DwnW7DHmt5pjLaNId9logylHGvcFJQRv/CIanSHyqG3whg0re4givfV3GkEPXwiXbLO6NDgBkWORJnLrRPMJGNxWxUNS95/PVWFR3vbBed5llsgDY2RIqfN0UzyNZDMcxGHdaKlhI2aWxEADZKST1EHw+AGfffK8Wi9fD7YW1L/uZ60UosOqmKSVjvxJV/AcrFOthA1rcr6x6eUj5mDgkVmCzue6ubt7AKz03zqM4U3vcmY2Tg6uav3p24ZB+N0d38GYnBwBBAWTNzvcu83pqHlOlOdgJL0eMwHnjaJaVrGOU+lRQQ12HY3mcGsBKzJUxLyIDOgRVpRUYuvWNYH7q2M+nlxfXc7jzlkWRE2iBzx8hdskZdfTyNCxFBs0obp6LimFG/GjO0WLPtTYvTddJ0sH+YG99ja6xPQUABbelg3rzo3JLZRvxi2qgPJsW0rdhX1ZXOpe8VmcC++MIuSAFKW04MGQFMLD6zQnxMRzOKnAAAt4anUOVnekbMrlqcj4tYfYXsP5i4sIK5BYzlh9xr8kRbtL6e0pF67O5oa6KHaRfqqkzhcaAnxmxZhVNtQpsYJO1YxyRa2bVm/S7XREQOVWN3RmZsHsad0gcsKBlIKdzIFwhpAVCBbxH7bBAd4Hf7lshHeJRmKvFj0EYmuT3nJgnd3kDeScB2eHyBqDc3E4oRh+98Hxf9FhY2uWh9sGO0+I2JY5E+G/4hVENXGrQoKnAYTXWKO0RHeTPz6ZVILiwAIpsHV0OC+6kBwsNz9VcKl/mPUBEFH+fsn/xd2Bn/k8wgcAVT3y1Kqbgt39Tv7Ti2oLkydtpfBQZRzDAJhGtVT46W1SCclX4b0wMs045k0rFhkWfqkRLFojNSSUBf4ggb84zTDbUWtglx8GbLmkFwiXQ1jK8yJp/jpbY2/DBbQ0SYEDCiFUln79wRmEgu80XXl2sOkBFbddKH3boEMUtibscX9/aV5zhRSksgwtVnwmxhqLi8fQcoGLqf4M6fnI1vV8dq6cMU+rgbxrAyE4T2Wz6nC9fpzoW+vLKUl+lQDtCaVjSJK3ObsJ+oRp5wlJ5iofdg0qFv0mHjEHxK3tWktovS/JiuNvYhRelEirODEYOVZ6Q+4bW2sTjVwLmh66y/dQd1SQyP86extAVwwVpkZMNU7cKsF0r2za9q9zWbdyeA/gPCyWlgzlkyjBakLsu7kAvmLSpuQin303IW5qx2zTBzpK8CHrteHVPbg8KB3Hj5pgHLjIuGautz+RSyJ0IA+soiYkzDuBWXxAOLxtUnr49Uv9l1byUuegSJ9nX11ZOF8eg00JVk1AISTv4Q1cSFPheflhUyt18CEonULUsvyfTdaolGalWlNi5oU70JcJkCqmgZdwGGYoh4vIHSzvqpzw/a4Qh4BbPOCOWNQwBT0xOOCbciSp8BkEPjuGGQwEu2e8zRYh49FJ4vD6TwG6kaXvCkIldPnIshpSIyUtdbS7wZyfoqqvIYUzUeG8KaAnPAcKZAHBa1jX0nwSRA1yUW/1hLp/Hr7IiOXZed+YBh5bRDlr+nx5FQICdx3tAWRF1r4NbOjtbtwykL9afW4h2wR8CYrsQ2zycrP8sAHqvLjECqhsZGDuVPtFbgRaQGA++MjORKSR/MFVfs6pLZxJmEOY/SdGiARmqiAriJzhr6SakiY01WpBPeZwiqOewv8FRFrSyvsyUYn2tkRDjZ9cCJMWjs7mwBuj+xZ7J3e54d29V8KH5QF0mxC9ZxXfad2k8mcnVH/5yarijv+kgaVyvSF4L+RenegqcN6QfGQmjEUg5aTXnwQkJZX6Y6TaQM0w1a7aNn8bfXRR/rw7QdQEjGGigsvTezoJHqy8eaAkYFaBgcICjJQpJsK8EjOnv6vxOSgzSe5A/rVxz76KRCRgRZctuQcjV0ouNQPIazmoSRNBsbdrjC/XRfss7bdJ8PrINH3SY5G4RSgXGrvkaACge/3IFWmjBxgsEJoS5ndzIkMDiC+gTnqCiWip2Q80y1C9lBwPqxeyD6xyIYttDiU1suGjhziH5Nf5lbEWqQ3taeof+YWPzcIZSyGtiYG6SCKj2wJevnnr+yxpu0V9StjGRQEM/IxfYsIFjcrhXtIn28Qkl42fboPgOOw3lEGkPHp3AMQd+BDdMmkCSPTBdixrsAIpPftGDtdyYXbBtgIUHSrdToiCb4lLhhA8vHgkMLm50IQZjlyzKbiB/lvm+0Upqu/FaSEDQCTgrpH71tkI0qiAtxEMPdgKVf6sX5TnYNvblSHRaI+PBE/fecjGfOgberwmukapuuBERA79vNmxp/m875tGMfE/VgQUA+y/OgytN3YVZVvYoV7FeB8tPrxtpzP8xaspzJLN4+eECEepVQUWcMmtS40tquNWOUc6IZtq7gQ/AE6tlreUW9km9kZLRpSaPkm+OmXNVjaHi/E2CH3PmwakrF0pruUFpBYVURmtkdfV3Z5A9g/7kP8FT8ZF8A8W2NIHONS1L5GPJVU+Vek/Z7wGJNrCBbDpPHvWaeFssPbg3jyd8RsXpzu56zEt0myQSpgF0788d9BlzEcjgdJQmZvS2b0n0N5VRjHUKEWul8BTPaQNUo4LSclE9INadz8u9lL6tXbkRA00tY5JofzFDwxIKvNV0U6caWpIHr407KIVQYSxJ0Y1m/JLHWiCJlvnL85hb2fvMy2AvIcAMA1p5JucgKVLbliMFY4dj/y2ND/m8MTEh6brXBRRdqJ38rV0Fheqob0NiibUZG6DUx0twrgeqSecvASkNAoIsFfH3swVdV1O8D29xJPN2bt+twUgnraCHts4C5fEOaOqwJO8gn/dcRN8ofS2bm236FoRVjLGBOg70WDwDoyjEDjG9cvM14nfmv+OGV7yxanGLPARQXsoqnClThtb+iyDEGLxWJXDm0ODSquET2+VdECTgtP3xUFlKC9e4Cmfw0uzsgGOp8RvnpnRdWFkOncsE/KsZZlFO3O65rkcBM9w0KA2zr5+cvS391w8txOQ0u2mcviuZ4cfkfF2WzU+s1YKLAXHWhMdfPEO9Fobsbt/Dmh8VaTL1DWJRb7KnZBStavRXRVctvMRVXhq1vo0jj4/t+3xHt0LBBaX5uCUnE41bf+O6twdPYpAKO61ODq7kemz/AV/cP7oR9/kNz6l0Ht17+7lphrmrPtQKOeOTjxy4+y6Hrd5Np6wwyeVkHZ6nz4qfScNTYisX+2ndeRZ96uyWKL2oCc+8qWMj9Q0o3D7CBTaI4CZ0d0UGgxMRKBN/G8Fxefq3M1hdxFM1J3nC38Ej2E6wfZ6zXS/g1jcnAIOyU/Ar/HvwqjQrXgZmktvqobrsupPA2zdlXLEDd4zi/BQ6ns4mYsujXMeIWvLGvACyo6yjQYbknhvWHKnAsSSlyyNuCCeWaE5zuY+3RVywQIzdeejS3PIYjlBgjdbPfLgHDelVbCyAI2fTqCpyiouaUqrkd16dIyc4V/ArAEfMrmHeYcsBfeeLQyZ4XF2O0LT+NmnPjtWiwsFQBLYkQ6A4Fhk4C2AA52ZBku13PrvGQWhMtMAABbkfbBApPyhceSPMMjj7FlwCdu8f5w35BtT4bmRK+i2obEK7M15ZLWy6se7cNgBAbKIOANLFWUAG5VebwJcWe3ZmKMoIefJ76Jc+8DXzocTEbNSOru3gmuCtQ4XoLEP+K8EbKijJxH3HJ5deY+htqUopRKw6tsBs/qXTfd5FEyrSQfwSmog/OyDnMfBUYBDXHrHnl2d/LkKOMB8etS95knQO5LUf9BKgIGEHgjOT5A31rdJgYZt+v1nK6q8EgeOvBn4RPIi1xe9My0pq3EBv3onbU7mV6RHUYolnftVzsJj3C0SLbotSRLEDf00ca5qdH/p6AatHxtqKrd23E5K1aBWwvQbrdkpvCTLQ+k3/iByrG6dIXlsqR7VAZWUM02xGuKZHViwcSnCXMzCYDypn9rQvlT9i79Qz+1tk+Ydfrg2MSlKMqymCsjN8hB4wLvdtvfqOaVLwDEY4rduLP3EuEELLbCnO2wgXolXd2CBBZiifNKWLj8NYw12dEAnX9Uz6wJ6i7KSjxo4vq+49dHqi9jIPCDQepzZ6n0mTa2OK2X8rZ+Pd/lj6x6ivIekbDcbT2HJzBWLYIOQ7PxrVUTMq+3/0W16ul0mhRr/HNuUWhZFXbUukhEMSN2J75UOBAXcaqL4WbFynCE0P8C/9KS9gDE7av7/b/QSgzjlPOrku49iQ6zMamsR83BahaNpto9HBBm23yGqToILI4ZviMjtqn7EXjf7SIF4MwX/57gLRiDG6mVMVXYdCIcQydrW94t7SfQd0ZyJSaftGwrTBD4oKQqML6N5lzOvJ/5/h0k3/QdXY7yExkwIcYDP/n8EZduab/JBu9iN6d/xgsDiMnERbvM2HidpWdz1i7Nr7xve70a1ZCag/kUk4bgvh8BSQ9oAaLdkFWWJSGgoptsuAwmyjlKqsJiRtY2cwwRTeJcog/gOx1eyFbokEmZYGbQMjCDLF4Fub34DARduPIHR8lUfS78P3wxpN+KcH1ag7aE8AFcXEI/r659Ym8BKtOBENIXIAa5NEwF7JLvYROBNrIthzVszqiW4nGF30xnv4RUSBGIknz5AFzesT2IJFhsF/nww5Kdi3l0dFr0ZebDNLa0O1Vle77UaUN68bY0JkZKdInb8Fb0kjWoc9EXc5nGCltiRRKYebB/FY5JK9+PAVyDqKfiPaHwQtbYS22PcjoDhSJYESFH5qHdIC1WI8T9chV5gjaJnu/ZijLzElVgMM4C0SulW3C7IV+vwEvfhAXA6GOGgXEb5RC6q7zkEHCEqYJ6OfGGXlH8qtdWFIc8plg2EunJWHHid6e35wsb569empjrfTDN35BuqVqnrJBMlalXcVP5GNq/wFj23Hif+q/3v8CYDaOs0EQ+R0/KA06DQAAAAdolyY8WWGmWXvLJN1dzD33NZUvQ18HPWiPcVsZZ7xZobqAnPx7EnxZE7ov16bGXZczSQoMY9TdIn/J+2f+uj8gp7NnpBWMsmbo8kQl0Ll+bnnhR6S9gjulSZTIXldVRO/6fWIj09v0cj93q5qCQgJZbqAm3ObHouNhSw/dNV+miexfqdH6yWMAO3ijfYSLf9eH5sorJGPxxnQWY8dRUyJX7oPWMIO21sF4Hg0n/CCT0FxMeI3aTRvWsIZ1SJfaGcJAMDeRF+cjkMghb6IgF5H4GbbMOJ5X1tV7eQHUvNK8XaA+Mm/2aYwWf+AujJDrg8eRgXYJZ08tVO83OvHHeZKijV9Avif2MNb+dDqUCjfsstxGT69dN1m9ARNYdWv/FD7NzBmQCOQ+e5FWDtAaz3EqWUQryk8O3rAbtksDkJcn/fR4fHwnUtp7gl8P2KolFuZ/32vpstg2zqWEj7lXda4vla8BHV/7CvenqczB0V/5YM6d02MFrO7YSypNIrSpgeZiHa7jSz31fiexEHlMHSWvvhoBjIkTlw1n5mZXVZVqyEYe2Wfb9MHttHKuhvnoztz2gEo3ES4DOHgWus43lLXhqiMdsP+XCnEWpHEaB4FtJXpeXYA81Y+r5M/FRwbctf7joW0FfKzWyl9JDicHT3/AUWRrlanK7KoT9qPiq9gPVbobi/d5di5NPfaMYWXugqCW714r7Zxtl/BQ/Sem7LTmFc28YP7z2VF8WLBlMu1SusreB12CyCePeK4omo4wxXE1vE5slUCy4uASP+Xvcrp0zHS6IK09mtR/hmsE2Ob1QQHk62ePwNYNTZtWVagXVoUhvEBH/4eiK0eNv4FdvHTnzjS0/zfuaE1LMfqEzKUaSvrGM5vg816M1O3h+yL00TrdL8TKJK95sExd7Fk2gq78YRi7L8kPC5N7lUtbVQNczKmMPHknapBJV/a5E9OYMQL29it38MObHsWZaAQCnweV5IveNfZEFUuT4ZW+9+RdHYHMYlHxg6y/5JulM/dvDNmf8+7PXbWCH9k3WoU/T9o24ER/+Qn/Aq+LMG5DQRDBtGUlv3+z/JRDfpPHxIFd9AxOyzfLIh9YeeHuvHBoxV/GL52L8LwSS0F35fEErYTvicc/0XFfZ7ZPMSGZK0WfeoUDQQZE0V4+RIofZFMDAbEVpmk8QG+Tjmx0tQF2PKgrYldmAaalbGNDo5i2zexXSIF++LJ8EHbHmeGi4aGCRXWgdOiDPN17r2frrIkTJghCIz5m5ffPG2QXbxsFZEFXc9bHDfZgMlx4Uamt6el//EYKZCVbCaTm5UG7pQOwGH0w2KJPvrTc/juqpHGbA4AIAOzPYsyU/njPgMU0lQnUFI9PVWdbDVi4pwo3KsI6lZntfuPNzKTaVv//AtHIAF3L7rWjltc618ujracXRW2GDYdoXaJH6DsufN3XzVZ7vBuafwCm83xUO2lcNIMfUYk2Uyt/lZmnr//Jg9rrI+0WRbZTWrIVFBynKFAYP7I+jnV93Kpp8qAacFhC3PvP07yXTJKhQcgSy7SSJTsnWyCBx7Umdbui4czvedpvp8pF8lPYT+7wGPGO8qq/0i6jMZLY+CF7ma7VPNDbErnNfYPFhacaHi1dOVNd3odTVOUVhS9WJqlygyI6ruAaW37lH5PZT3Xi1hnbdy4//lzEFqQWZcVH5y18wmTZTRtvS6O6NVJieBFQSWO32LaSa2xnhjlvSSSUkN75UaVSyF1KjYPsmuS25wYju2j1Hil7SwSyzbSMs5yA0HtvYubpsAL/IGBNFmKityLHV8v+u0i6I/p/IULFKM7sszDVgnjgZ2NjY0EHdNTXlPk6RXQB4QKutDm54i6yfiHd0Gw5ZyY4QjMJ7FZ2AATMA3AOBSUDsAEgcxv+eJwV0QpRgVlBuKJuJ+EDeRUcwiKAYAGn4vWQdmJUu2do/yK8oMg2Y32sg8Amh1t0h3SGg+izz/8qfuexGkwtr0uatyE3jpgciUN0HVfanYGY7KLPiZPWVxFyPET8BQg1N34Apnhu/pcEFemLZF6tJnHJaAwiX9pOBZVZxOocDwuArd6xJRGl+RC1MAA=" width="447" height="197" class="img_ev3q"></p><p>Speaking of IoT devices, one has to mention a concept called Device Twin. As a virtual mapping of IoT device metadata on the application platform, device twinning has become an important part of IoT device management. IoT devices usually contain two types of data: one is metadata that will not be changed, including the serial number, asset identifier, Mac address, etc., and the detailed information describing the device. It can also be called the static attribute of the device. The other type is the dynamic data of the device, including device-specific real-time data in a specific context, such as the on and off state of the lamp, which can also be called the Twin property of the device. Device twins have the same characteristics as physical devices, allowing for better communication between devices and applications. The command sent by the application first arrives at the device, and the device updates the status according to the Expected State set by the application. In addition, the IoT device feeds back its own Actual State in real time, and the device detects both the Actual State and the Expected State of the IoT device. This approach also allows the state of the device to be synchronized when the IoT device goes online again offline.</p><p>Device management is also a key feature of IoT scenarios in edge computing. KubeEdge is an open-source edge computing platform with both cloud and edge. In addition to implementing cloud application configuration and delivery, another important function is to manage IoT devices in the cloud and synchronize device state between cloud edges.</p><p><strong>KubeEdge Device Management Component</strong></p><p><img loading="lazy" src="/assets/images/640_2-7093e608d14819103cb0c58b8c563d6d.webp" width="754" height="297" class="img_ev3q"></p><p>The components related to KubeEdge device management are as follows:</p><p><em>DeviceController:</em> An extended Kubernetes controller that manages device information in the cloud and synchronizes the cloud with edge devices.</p><p><em>CloudHub:</em> The WebSocket server is responsible for monitoring cloud resource changes, caching and sending messages to EdgeHub.</p><p><em>EdgeHub:</em> WebSocket client, including the ability to synchronize cloud resource updates, report edge nodes, and device information to the cloud.</p><p><em>DeviceTwin:</em> Responsible for storing device status and synchronizing device status to the cloud.</p><p><em>EventBus:</em> A client that interacts with the MQTT server Mosquitto to provide subscription and publish messages for other components.</p><p><em>Mapper:</em> Used to connect and control end-side devices, such as turning lights on and off.</p><p><img loading="lazy" src="/assets/images/640_3-a0145286a54649caece6152c3cf90ad1.webp" width="445" height="463" class="img_ev3q"></p><p>KubeEdge extends Kubernetes' API through CRD (Customer Resource Definition). The extended API resources include: Device and DeviceModel, so that we can perform CRUD operations on device resources in the cloud through Kubernetes command line tool Kubectl or other means. The Device resource maps devices associated with each edge node, such as sensors. DeviceModel is a template defined for a class of devices. It is convenient for users to perform batch operations on Device resources easily in the cloud based on the DeviceModel template.</p><p><strong>Light up your home with KubeEdge</strong></p><p>Light up your home in the clouds, let's see how KubeEdge does this interesting thing? A reference example of a device generation is as follows:</p><p><img loading="lazy" src="/assets/images/640_4-4d51fb319d369a8f992609a0174d5bf6.webp" width="432" height="632" class="img_ev3q"></p><p>Here you need to use the above mentioned Device Twin. For example, the metadata information of the lamp is described above in Json format, including static attribute attributes and dynamic attribute twin. This defines a twin property called powerstatus, whose expected and actual values can be either ON or OFF. The device itself can report the actual value of the powerstatus to the cloud. The cloud can control the edge side lights to be turned on and off by changing to the expected value of the powerstatus attribute.</p><p><img loading="lazy" src="/assets/images/640_5-ef80d964d93b225f243b14fa54169bcc.webp" width="678" height="331" class="img_ev3q"></p><p>First we look at how to report the actual value of the powerstatus to the cloud:</p><p>The Mapper reports the actual status of the Actual State to the MQTT server Mosquitto in real time.</p><p>The EventBus receives a subscription message from Mosquitto, which contains the actual state of the device, Actual State.</p><p>EventBus sends the actual state of the device to Device Twin.</p><p>Device Twin updates the device's actual state to a lightweight database local to the edge node, such as SQLite.</p><p>Device Twin synchronizes the actual state to the WebSocket client EdgeHub.</p><p>EdgeHub sends a message to the WebSocket server CloudHub.</p><p>CloudHub returns a message to DeviceController.</p><p>DeviceController synchronizes the actual state of the Actual State to the Kubernetes API Server.</p><p>Finally, the user can query the actual value of the powerstatus of the device in the cloud to obtain the actual state of the light on and off on the edge device.</p><p><img loading="lazy" src="/assets/images/640_6-4c372a5f70c3be3ee3f9f46c92694ca6.webp" width="660" height="355" class="img_ev3q"></p><p><strong>Join KubeEdge</strong></p><p>Device management is undoubtedly a key feature in the edge computing IoT scenario. Currently, KubeEdge's device management features are still under development and will be released in version 0.3, so stay tuned.</p><p>As a 100% open source project, KubeEdge welcomes you.&nbsp;KubeEdge Github project address:
Https://github.com/kubeedge/kubeedge</p><div class="theme-admonition theme-admonition-tip alert alert--success admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 12 16"><path fill-rule="evenodd" d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"></path></svg></span>tip</div><div class="admonitionContent_S0QG"><p>Instructions on how to setup KubeEdge can be found <a href="https://github.com/kubeedge/kubeedge#usage" target="_blank" rel="noopener noreferrer">here</a>  </p></div></div>]]></content>
        <author>
            <name>KubeEdge</name>
            <uri>https://github.com/kubeedge-bot</uri>
        </author>
        <category label="KubeEdge" term="KubeEdge"/>
        <category label="kubeedge" term="kubeedge"/>
        <category label="edge computing" term="edge computing"/>
        <category label="kubernetes edge computing" term="kubernetes edge computing"/>
        <category label="K8S edge orchestration" term="K8S edge orchestration"/>
        <category label="edge computing platform" term="edge computing platform"/>
        <category label="release v0.2" term="release v0.2"/>
        <category label="v0.2" term="v0.2"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[KubeEdge v0.2 is out now]]></title>
        <id>https://kubeedge.io/blog/release-v0.2</id>
        <link href="https://kubeedge.io/blog/release-v0.2"/>
        <updated>2019-03-05T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[KubeEdge is an open source system extending native containerized application orchestration and device management to hosts at the Edge. It is built upon Kubernetes and provides core infrastructure support for networking, application deployment and metadata synchronization between cloud and edge. It also supports MQTT and allows developers to author custom logic and enable resource constrained device communication at the Edge.]]></summary>
        <content type="html"><![CDATA[<p><strong>KubeEdge</strong> is an open source system extending native containerized application orchestration and device management to hosts at the Edge. It is built upon Kubernetes and provides core infrastructure support for networking, application deployment and metadata synchronization between cloud and edge. It also supports MQTT and allows developers to author custom logic and enable resource constrained device communication at the Edge.  </p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="today-we-announce-the-v02-release-of-kubeedge"><strong>Today we announce the v0.2 release of KubeEdge.</strong><a href="#today-we-announce-the-v02-release-of-kubeedge" class="hash-link" aria-label="Direct link to today-we-announce-the-v02-release-of-kubeedge" title="Direct link to today-we-announce-the-v02-release-of-kubeedge">​</a></h2><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>Check out the release here:  <a href="https://github.com/kubeedge/kubeedge/releases/tag/v0.2" target="_blank" rel="noopener noreferrer">Release v0.2</a>  </p></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>Instructions on how to setup KubeEdge can be found <a href="https://github.com/kubeedge/kubeedge#usage" target="_blank" rel="noopener noreferrer">here</a>  </p></div></div><h3 class="anchor anchorWithStickyNavbar_LWe7" id="features-added">Features added<a href="#features-added" class="hash-link" aria-label="Direct link to Features added" title="Direct link to Features added">​</a></h3><ul><li>Edge-controller which connects to Kubernetes api-server and sync node/pod status between edge and Kubernetes api-server.  </li><li>Cloudhub which is a websocket server in cloud part of KubeEdge.</li><li>Internal MQTT mode in which MQTT broker is started with edge_core and removes dependency on external MQTT broker.</li><li>Integration test framework for edge. Improved edge_core unit-test coverage.</li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="known-issues">Known issues<a href="#known-issues" class="hash-link" aria-label="Direct link to Known issues" title="Direct link to Known issues">​</a></h3><ul><li>We do not have any e2e tests yet.  </li><li>Unit tests coverage should be improved for cloud part.</li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="features-work-in-progress-future-release">Features Work In Progress (Future release)<a href="#features-work-in-progress-future-release" class="hash-link" aria-label="Direct link to Features Work In Progress (Future release)" title="Direct link to Features Work In Progress (Future release)">​</a></h3><ul><li>Describe device API via CRD.</li><li>Edge to Edge Communication.</li><li>Different Protocol support for KubeEdge like BLE, Zigbee,etc</li></ul>]]></content>
        <author>
            <name>KubeEdge</name>
            <uri>https://github.com/kubeedge-bot</uri>
        </author>
        <category label="KubeEdge" term="KubeEdge"/>
        <category label="kubeedge" term="kubeedge"/>
        <category label="edge computing" term="edge computing"/>
        <category label="kubernetes edge computing" term="kubernetes edge computing"/>
        <category label="K8S edge orchestration" term="K8S edge orchestration"/>
        <category label="edge computing platform" term="edge computing platform"/>
        <category label="release v0.2" term="release v0.2"/>
        <category label="v0.2" term="v0.2"/>
    </entry>
</feed>