<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://kubeedge.io/zh/blog</id>
    <title>KubeEdge Blog</title>
    <updated>2026-04-21T00:00:00.000Z</updated>
    <generator>https://github.com/jpmonette/feed</generator>
    <link rel="alternate" href="https://kubeedge.io/zh/blog"/>
    <subtitle>KubeEdge Blog</subtitle>
    <entry>
        <title type="html"><![CDATA[KubeEdge on RISC-V - Deploying and Validating on VisionFive2]]></title>
        <id>https://kubeedge.io/zh/blog/kubeedge-riscv-validation</id>
        <link href="https://kubeedge.io/zh/blog/kubeedge-riscv-validation"/>
        <updated>2026-04-21T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[This post shares a hands-on validation of KubeEdge on a real RISC-V board, VisionFive2. It covers dependency preparation, native build of KubeEdge components, edge node join, and basic workload deployment, showing that the core deployment path is feasible on riscv64.]]></summary>
        <content type="html"><![CDATA[<p>This post shares a hands-on validation of KubeEdge on a real RISC-V board, VisionFive2. It covers dependency preparation, native build of KubeEdge components, edge node join, and basic workload deployment, showing that the core deployment path is feasible on riscv64.</p><p>As the RISC-V ecosystem continues to grow, more edge scenarios are beginning to care about multi-architecture support. For KubeEdge, an important question naturally follows: <strong>can its basic deployment path work on a real RISC-V device?</strong></p><p>Recently, I did a hands-on validation on a <strong>VisionFive2</strong> board to answer that question.</p><p>The goal of this work was not to prove production readiness in one step, but to verify a more practical baseline: on a real <strong>riscv64</strong> environment, can we complete the core path from <strong>dependency preparation</strong>, to <strong>KubeEdge component build</strong>, to <strong>edge node join</strong>, and finally to <strong>basic workload running</strong>?</p><p>The answer, at least for this round of testing, is <strong>yes</strong>.</p><hr><h2 class="anchor anchorWithStickyNavbar_LWe7" id="why-this-validation-matters">Why this validation matters<a href="#why-this-validation-matters" class="hash-link" aria-label="Why this validation matters的直接链接" title="Why this validation matters的直接链接">​</a></h2><p>As edge computing expands to more hardware forms, architecture diversity is becoming increasingly common. In that context, verifying KubeEdge on RISC-V is meaningful in two ways.</p><p>First, it helps clarify whether KubeEdge has a usable starting point on emerging architectures. Second, it provides a practical reference for follow-up work, including workload compatibility testing, networking validation, and long-term stability evaluation on real devices.</p><p>For this validation, I used <strong>VisionFive2</strong> as the target platform and focused on a single question: <strong>is the basic deployment chain of KubeEdge on RISC-V feasible?</strong></p><p>More specifically, I wanted to verify the following:</p><ul><li>whether edge-side dependencies can be installed and used on riscv64;</li><li>whether <strong>edgecore</strong> and <strong>keadm</strong> can be built successfully on the device;</li><li>whether the edge node can join <strong>CloudCore</strong> successfully;</li><li>whether a basic containerized workload can finally run on the edge side.</li></ul><hr><h2 class="anchor anchorWithStickyNavbar_LWe7" id="test-environment">Test environment<a href="#test-environment" class="hash-link" aria-label="Test environment的直接链接" title="Test environment的直接链接">​</a></h2><h3 class="anchor anchorWithStickyNavbar_LWe7" id="hardware">Hardware<a href="#hardware" class="hash-link" aria-label="Hardware的直接链接" title="Hardware的直接链接">​</a></h3><ul><li><strong>Board</strong>: VisionFive2</li><li><strong>CPU Architecture</strong>: RISC-V 64-bit</li><li><strong>SoC</strong>: JH7110</li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="operating-system">Operating system<a href="#operating-system" class="hash-link" aria-label="Operating system的直接链接" title="Operating system的直接链接">​</a></h3><ul><li><strong>OS</strong>: Ubuntu Server 24.04.4</li><li><strong>Architecture</strong>: riscv64</li><li><strong>Image</strong>:</li></ul><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token plain">https://cdimage.ubuntu.com/releases/24.04.4/release/ubuntu-24.04.4-preinstalled-server-riscv64+jh7110.img.xz</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p><img loading="lazy" alt="Ubuntu image on VisionFive2" src="/zh/assets/images/visionfive2-ubuntu-image-531270ff45b0c21d3400bbab8f2ab23a.png" width="422" height="435" class="img_ev3q"></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="software-versions">Software versions<a href="#software-versions" class="hash-link" aria-label="Software versions的直接链接" title="Software versions的直接链接">​</a></h3><ul><li><strong>containerd</strong>: v2.2.2</li><li><strong>runc</strong>: installed via apt</li><li><strong>crictl</strong>: v1.35.0</li><li><strong>CNI plugins</strong>: v1.9.1</li><li><strong>nerdctl</strong>: v2.2.2</li><li><strong>buildkit</strong>: v0.28.1</li><li><strong>Go</strong>: v1.22.4</li><li><strong>KubeEdge</strong>: v1.21.0</li></ul><hr><h2 class="anchor anchorWithStickyNavbar_LWe7" id="what-was-validated">What was validated<a href="#what-was-validated" class="hash-link" aria-label="What was validated的直接链接" title="What was validated的直接链接">​</a></h2><p>This round of work was intentionally scoped as a <strong>basic capability validation</strong>, not a full production-readiness assessment.</p><p>The validation covered:</p><ul><li>base OS and dependency preparation;</li><li>container runtime setup;</li><li>KubeEdge core component build;</li><li>edge node join;</li><li>basic application deployment.</li></ul><p>The following items are <strong>not fully covered yet</strong>:</p><ul><li>multiple workload types and replicas;</li><li>Service, DNS, and deeper CNI/networking verification;</li><li>disconnect/reconnect and fault recovery scenarios;</li><li>long-duration stability evaluation;</li><li>compatibility across more RISC-V boards or distributions.</li></ul><hr><h2 class="anchor anchorWithStickyNavbar_LWe7" id="step-1-preparing-the-container-runtime-environment">Step 1: Preparing the container runtime environment<a href="#step-1-preparing-the-container-runtime-environment" class="hash-link" aria-label="Step 1: Preparing the container runtime environment的直接链接" title="Step 1: Preparing the container runtime environment的直接链接">​</a></h2><p>Before bringing up KubeEdge, the first task was to prepare the edge-side runtime stack on VisionFive2. This included installing and configuring <strong>runc, containerd, crictl, CNI plugins, nerdctl, and buildkit</strong>.</p><p>A few adjustments were also needed during this step, especially around <strong>containerd cgroup configuration</strong> and the <strong>pause image</strong> used by the runtime.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="install-runc-and-containerd">Install runc and containerd<a href="#install-runc-and-containerd" class="hash-link" aria-label="Install runc and containerd的直接链接" title="Install runc and containerd的直接链接">​</a></h3><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">sudo</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">apt</span><span class="token plain"> update </span><span class="token operator" style="color:#393A34">&amp;&amp;</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">sudo</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">apt</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">install</span><span class="token plain"> -y runc</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">wget</span><span class="token plain"> https://github.com/containerd/containerd/releases/download/v2.2.2/containerd-2.2.2-linux-riscv64.tar.gz</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">sudo</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">tar</span><span class="token plain"> Cxzvf /usr/local containerd-2.2.2-linux-riscv64.tar.gz</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">sudo</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">curl</span><span class="token plain"> -L https://raw.githubusercontent.com/containerd/containerd/v2.2.2/containerd.service -o /etc/systemd/system/containerd.service</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">sudo</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">mkdir</span><span class="token plain"> -p /etc/containerd</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">containerd config default </span><span class="token operator" style="color:#393A34">|</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">sudo</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">tee</span><span class="token plain"> /etc/containerd/config.toml</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">sudo</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">sed</span><span class="token plain"> -i </span><span class="token string" style="color:#e3116c">'s/SystemdCgroup = false/SystemdCgroup = true/'</span><span class="token plain"> /etc/containerd/config.toml</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">sudo</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">sed</span><span class="token plain"> -i </span><span class="token string" style="color:#e3116c">'s#sandbox_image = ".*"#sandbox_image = "registry.k8s.io/pause:3.9"#'</span><span class="token plain"> /etc/containerd/config.toml</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">sudo</span><span class="token plain"> systemctl daemon-reload</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">sudo</span><span class="token plain"> systemctl </span><span class="token builtin class-name">enable</span><span class="token plain"> --now containerd</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h3 class="anchor anchorWithStickyNavbar_LWe7" id="install-crictl">Install crictl<a href="#install-crictl" class="hash-link" aria-label="Install crictl的直接链接" title="Install crictl的直接链接">​</a></h3><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">wget</span><span class="token plain"> https://github.com/kubernetes-sigs/cri-tools/releases/download/v1.35.0/crictl-v1.35.0-linux-riscv64.tar.gz</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">sudo</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">tar</span><span class="token plain"> xzvf crictl-v1.35.0-linux-riscv64.tar.gz -C /usr/local/bin</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">sudo</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">tee</span><span class="token plain"> /etc/crictl.yaml </span><span class="token operator" style="color:#393A34">&lt;&lt;</span><span class="token string" style="color:#e3116c">EOF</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">runtime-endpoint: unix:///run/containerd/containerd.sock</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">image-endpoint: unix:///run/containerd/containerd.sock</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">timeout: 10</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">debug: false</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">EOF</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h3 class="anchor anchorWithStickyNavbar_LWe7" id="install-cni-plugins">Install CNI plugins<a href="#install-cni-plugins" class="hash-link" aria-label="Install CNI plugins的直接链接" title="Install CNI plugins的直接链接">​</a></h3><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">wget</span><span class="token plain"> https://github.com/containernetworking/plugins/releases/download/v1.9.1/cni-plugins-linux-riscv64-v1.9.1.tgz</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">sudo</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">mkdir</span><span class="token plain"> -p /opt/cni/bin</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">sudo</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">tar</span><span class="token plain"> Cxzvf /opt/cni/bin cni-plugins-linux-riscv64-v1.9.1.tgz</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">sudo</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">mkdir</span><span class="token plain"> -p /etc/cni/net.d</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">sudo</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">chmod</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">755</span><span class="token plain"> /etc/cni /etc/cni/net.d</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">sudo</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">tee</span><span class="token plain"> /etc/cni/net.d/87-loopback.conf </span><span class="token operator" style="color:#393A34">&lt;&lt;</span><span class="token string" style="color:#e3116c">EOF</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">{</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">    "cniVersion": "0.3.1",</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">    "name": "lo",</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">    "type": "loopback"</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">}</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">EOF</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h3 class="anchor anchorWithStickyNavbar_LWe7" id="install-nerdctl-and-buildkit">Install nerdctl and buildkit<a href="#install-nerdctl-and-buildkit" class="hash-link" aria-label="Install nerdctl and buildkit的直接链接" title="Install nerdctl and buildkit的直接链接">​</a></h3><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">wget</span><span class="token plain"> https://github.com/containerd/nerdctl/releases/download/v2.2.2/nerdctl-2.2.2-linux-riscv64.tar.gz</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">sudo</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">tar</span><span class="token plain"> Cxzvvf /usr/local/bin nerdctl-2.2.2-linux-riscv64.tar.gz</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">wget</span><span class="token plain"> https://github.com/moby/buildkit/releases/download/v0.28.1/buildkit-v0.28.1.linux-riscv64.tar.gz</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">sudo</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">tar</span><span class="token plain"> Cxzvvf /usr/local buildkit-v0.28.1.linux-riscv64.tar.gz</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">sudo</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">tee</span><span class="token plain"> /etc/systemd/system/buildkitd.service </span><span class="token operator" style="color:#393A34">&lt;&lt;</span><span class="token string" style="color:#e3116c">EOF</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">[Unit]</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">Description=BuildKit Daemon (containerd worker)</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">Documentation=https://github.com/moby/buildkit</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">After=containerd.service</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">Requires=containerd.service</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="display:inline-block;color:#e3116c"></span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">[Service]</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">Type=notify</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">ExecStart=/usr/local/bin/buildkitd --oci-worker=false --containerd-worker=true --containerd-worker-namespace=k8s.io --containerd-worker-addr=/run/containerd/containerd.sock</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">Restart=always</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">User=root</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">Group=root</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">LimitNOFILE=65535</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="display:inline-block;color:#e3116c"></span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">[Install]</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">WantedBy=multi-user.target</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">EOF</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">sudo</span><span class="token plain"> systemctl daemon-reload</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">sudo</span><span class="token plain"> systemctl </span><span class="token builtin class-name">enable</span><span class="token plain"> --now buildkitd</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" 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>At this point, the basic runtime environment required by the edge node was in place.</p><hr><h2 class="anchor anchorWithStickyNavbar_LWe7" id="step-2-building-a-risc-v-compatible-pause-image">Step 2: Building a RISC-V-compatible pause image<a href="#step-2-building-a-risc-v-compatible-pause-image" class="hash-link" aria-label="Step 2: Building a RISC-V-compatible pause image的直接链接" title="Step 2: Building a RISC-V-compatible pause image的直接链接">​</a></h2><p>One practical issue during setup was the <strong>pause image</strong>.</p><p>To make the runtime path more controllable on the current environment, I manually built a <strong>RISC-V-compatible <code>pause:3.9</code> image</strong> and loaded it into the local containerd namespace used by KubeEdge.</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">mkdir</span><span class="token plain"> -p pause-build/bin</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token builtin class-name">cd</span><span class="token plain"> pause-build</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">curl</span><span class="token plain"> -LO https://raw.githubusercontent.com/kubernetes/kubernetes/v1.28.0/build/pause/linux/pause.c</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">sudo</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">apt</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">install</span><span class="token plain"> -y gcc</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">gcc -Os -Wall -Wextra -static -o bin/pause-riscv64 pause.c</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">tee</span><span class="token plain"> Dockerfile </span><span class="token operator" style="color:#393A34">&lt;&lt;</span><span class="token string" style="color:#e3116c">EOF</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">FROM scratch</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">ARG ARCH=riscv64</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">ADD bin/pause-</span><span class="token string variable" style="color:#36acaa">${ARCH}</span><span class="token string" style="color:#e3116c"> /pause</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">ENTRYPOINT ["/pause"]</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">EOF</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">sudo</span><span class="token plain"> nerdctl -n k8s.io build -t registry.k8s.io/pause:3.9 </span><span class="token builtin class-name">.</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" 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>This step helped ensure that later workload creation would not be blocked by image compatibility issues.</p><hr><h2 class="anchor anchorWithStickyNavbar_LWe7" id="step-3-building-kubeedge-components-on-riscv64">Step 3: Building KubeEdge components on riscv64<a href="#step-3-building-kubeedge-components-on-riscv64" class="hash-link" aria-label="Step 3: Building KubeEdge components on riscv64的直接链接" title="Step 3: Building KubeEdge components on riscv64的直接链接">​</a></h2><p>After preparing the runtime layer, the next key question was whether <strong>KubeEdge itself could be built successfully on the device</strong>.</p><p>For this validation, I focused on the two most relevant binaries for the edge-side path: <strong>edgecore</strong> and <strong>keadm</strong>.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="install-go">Install Go<a href="#install-go" class="hash-link" aria-label="Install Go的直接链接" title="Install Go的直接链接">​</a></h3><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">wget</span><span class="token plain"> https://mirrors.aliyun.com/golang/go1.22.4.linux-riscv64.tar.gz</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">sudo</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">tar</span><span class="token plain"> -C /usr/local -xzf go1.22.4.linux-riscv64.tar.gz</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token builtin class-name">echo</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"export PATH=\</span><span class="token string environment constant" style="color:#36acaa">$PATH</span><span class="token string" style="color:#e3116c">:/usr/local/go/bin"</span><span class="token plain"> </span><span class="token operator" style="color:#393A34">&gt;&gt;</span><span class="token plain"> ~/.bashrc</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token builtin class-name">source</span><span class="token plain"> ~/.bashrc</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">go version</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h3 class="anchor anchorWithStickyNavbar_LWe7" id="clone-source-and-build-edgecore--keadm">Clone source and build edgecore / keadm<a href="#clone-source-and-build-edgecore--keadm" class="hash-link" aria-label="Clone source and build edgecore / keadm的直接链接" title="Clone source and build edgecore / keadm的直接链接">​</a></h3><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">git</span><span class="token plain"> clone https://github.com/kubeedge/kubeedge.git</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token builtin class-name">cd</span><span class="token plain"> kubeedge</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">git</span><span class="token plain"> checkout v1.21.0</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token assign-left variable" style="color:#36acaa">GIT_VERSION</span><span class="token operator" style="color:#393A34">=</span><span class="token variable" style="color:#36acaa">$(</span><span class="token variable function" style="color:#d73a49">git</span><span class="token variable" style="color:#36acaa"> describe --tags --abbrev</span><span class="token variable operator" style="color:#393A34">=</span><span class="token variable number" style="color:#36acaa">0</span><span class="token variable" style="color:#36acaa"> </span><span class="token variable operator" style="color:#393A34">||</span><span class="token variable" style="color:#36acaa"> </span><span class="token variable builtin class-name" style="color:#36acaa">echo</span><span class="token variable" style="color:#36acaa"> </span><span class="token variable string" style="color:#e3116c">"v0.0.0-master"</span><span class="token variable" style="color:#36acaa">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token assign-left variable" style="color:#36acaa">GIT_COMMIT</span><span class="token operator" style="color:#393A34">=</span><span class="token variable" style="color:#36acaa">$(</span><span class="token variable function" style="color:#d73a49">git</span><span class="token variable" style="color:#36acaa"> rev-parse --short HEAD</span><span class="token variable" style="color:#36acaa">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token assign-left variable" style="color:#36acaa">GIT_TREE_STATE</span><span class="token operator" style="color:#393A34">=</span><span class="token variable" style="color:#36acaa">$(</span><span class="token variable keyword" style="color:#00009f">if</span><span class="token variable" style="color:#36acaa"> </span><span class="token variable function" style="color:#d73a49">git</span><span class="token variable" style="color:#36acaa"> status --porcelain </span><span class="token variable operator" style="color:#393A34">|</span><span class="token variable" style="color:#36acaa"> </span><span class="token variable function" style="color:#d73a49">grep</span><span class="token variable" style="color:#36acaa"> -q </span><span class="token variable builtin class-name" style="color:#36acaa">.</span><span class="token variable punctuation" style="color:#393A34">;</span><span class="token variable" style="color:#36acaa"> </span><span class="token variable keyword" style="color:#00009f">then</span><span class="token variable" style="color:#36acaa"> </span><span class="token variable builtin class-name" style="color:#36acaa">echo</span><span class="token variable" style="color:#36acaa"> </span><span class="token variable string" style="color:#e3116c">"dirty"</span><span class="token variable punctuation" style="color:#393A34">;</span><span class="token variable" style="color:#36acaa"> </span><span class="token variable keyword" style="color:#00009f">else</span><span class="token variable" style="color:#36acaa"> </span><span class="token variable builtin class-name" style="color:#36acaa">echo</span><span class="token variable" style="color:#36acaa"> </span><span class="token variable string" style="color:#e3116c">"clean"</span><span class="token variable punctuation" style="color:#393A34">;</span><span class="token variable" style="color:#36acaa"> </span><span class="token variable keyword" style="color:#00009f">fi</span><span class="token variable" style="color:#36acaa">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token assign-left variable" style="color:#36acaa">BUILD_DATE</span><span class="token operator" style="color:#393A34">=</span><span class="token variable" style="color:#36acaa">$(</span><span class="token variable function" style="color:#d73a49">date</span><span class="token variable" style="color:#36acaa"> -u +</span><span class="token variable string" style="color:#e3116c">'%Y-%m-%dT%H:%M:%SZ'</span><span class="token variable" style="color:#36acaa">)</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token assign-left variable" style="color:#36acaa">LDFLAGS</span><span class="token operator" style="color:#393A34">=</span><span class="token string" style="color:#e3116c">"-X github.com/kubeedge/kubeedge/pkg/version.gitVersion=</span><span class="token string variable" style="color:#36acaa">${GIT_VERSION}</span><span class="token string" style="color:#e3116c"> \</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">-X github.com/kubeedge/kubeedge/pkg/version.gitCommit=</span><span class="token string variable" style="color:#36acaa">${GIT_COMMIT}</span><span class="token string" style="color:#e3116c"> \</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">-X github.com/kubeedge/kubeedge/pkg/version.gitTreeState=</span><span class="token string variable" style="color:#36acaa">${GIT_TREE_STATE}</span><span class="token string" style="color:#e3116c"> \</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">-X github.com/kubeedge/kubeedge/pkg/version.buildDate=</span><span class="token string variable" style="color:#36acaa">${BUILD_DATE}</span><span class="token string" style="color:#e3116c"> \</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">-s -w"</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token assign-left variable" style="color:#36acaa">GOARCH</span><span class="token operator" style="color:#393A34">=</span><span class="token plain">riscv64 go build -ldflags </span><span class="token string" style="color:#e3116c">"</span><span class="token string variable" style="color:#36acaa">${LDFLAGS}</span><span class="token string" style="color:#e3116c">"</span><span class="token plain"> -o edgecore-riscv64 ./edge/cmd/edgecore</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token assign-left variable" style="color:#36acaa">GOARCH</span><span class="token operator" style="color:#393A34">=</span><span class="token plain">riscv64 go build -ldflags </span><span class="token string" style="color:#e3116c">"</span><span class="token string variable" style="color:#36acaa">${LDFLAGS}</span><span class="token string" style="color:#e3116c">"</span><span class="token plain"> -o keadm-riscv64 ./keadm/cmd/keadm/</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">sudo</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">cp</span><span class="token plain"> keadm-riscv64 /usr/local/bin/keadm</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" 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 build completed successfully, which is an important result on its own: <strong>KubeEdge core components can at least be built natively on this RISC-V platform under the tested version path</strong>.</p><hr><h2 class="anchor anchorWithStickyNavbar_LWe7" id="step-4-packaging-the-installation-artifact">Step 4: Packaging the installation artifact<a href="#step-4-packaging-the-installation-artifact" class="hash-link" aria-label="Step 4: Packaging the installation artifact的直接链接" title="Step 4: Packaging the installation artifact的直接链接">​</a></h2><p>To make follow-up deployment and reproduction easier, I also packaged the built <code>edgecore</code> binary into an installation image.</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">mkdir</span><span class="token plain"> -p install/usr/local/bin/</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">cp</span><span class="token plain"> edgecore-riscv64 install/usr/local/bin/edgecore</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token builtin class-name">cd</span><span class="token plain"> </span><span class="token function" style="color:#d73a49">install</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">tar</span><span class="token plain"> zcvf kubeedge-v1.21.0-linux-riscv64.tar.gz usr/</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">tee</span><span class="token plain"> Dockerfile </span><span class="token operator" style="color:#393A34">&lt;&lt;</span><span class="token string" style="color:#e3116c">EOF</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">FROM busybox:stable</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">ADD kubeedge-v1.21.0-linux-riscv64.tar.gz /</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">CMD ["sh"]</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">EOF</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token function" style="color:#d73a49">sudo</span><span class="token plain"> nerdctl -n k8s.io build -t docker.io/kubeedge/installation-package:v1.21.0 </span><span class="token builtin class-name">.</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" 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>This is not the final goal of the validation itself, but it is useful for later migration, distribution, and repeatability.</p><hr><h2 class="anchor anchorWithStickyNavbar_LWe7" id="step-5-joining-the-edge-node-to-cloudcore">Step 5: Joining the edge node to CloudCore<a href="#step-5-joining-the-edge-node-to-cloudcore" class="hash-link" aria-label="Step 5: Joining the edge node to CloudCore的直接链接" title="Step 5: Joining the edge node to CloudCore的直接链接">​</a></h2><p>Once dependencies and binaries were ready, I used <code>keadm join</code> to connect the VisionFive2 node to the cloud side.</p><p>This is the key step that determines whether the <strong>cloud-edge connection path</strong> can actually work on RISC-V.</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">sudo</span><span class="token plain"> keadm </span><span class="token function" style="color:#d73a49">join</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">--cgroupdriver</span><span class="token operator" style="color:#393A34">=</span><span class="token plain">systemd </span><span class="token punctuation" style="color:#393A34">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">--cloudcore-ipport</span><span class="token operator" style="color:#393A34">=</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token plain">CLOUDCORE_IP</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain">:30000 </span><span class="token punctuation" style="color:#393A34">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">--hub-protocol</span><span class="token operator" style="color:#393A34">=</span><span class="token plain">websocket </span><span class="token punctuation" style="color:#393A34">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">--certport</span><span class="token operator" style="color:#393A34">=</span><span class="token number" style="color:#36acaa">30002</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">--kubeedge-version</span><span class="token operator" style="color:#393A34">=</span><span class="token plain">v1.21.0 </span><span class="token punctuation" style="color:#393A34">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">--remote-runtime-endpoint</span><span class="token operator" style="color:#393A34">=</span><span class="token plain">unix:///run/containerd/containerd.sock </span><span class="token punctuation" style="color:#393A34">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">--edgenode-name</span><span class="token operator" style="color:#393A34">=</span><span class="token plain">vf2-2 </span><span class="token punctuation" style="color:#393A34">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">--set modules.edgeStream.server</span><span class="token operator" style="color:#393A34">=</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token plain">CLOUDCORE_IP</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain">:30004,modules.edgeStream.enable</span><span class="token operator" style="color:#393A34">=</span><span class="token plain">true,modules.metaManager.enable</span><span class="token operator" style="color:#393A34">=</span><span class="token plain">true,modules.metaManager.metaServer.enable</span><span class="token operator" style="color:#393A34">=</span><span class="token plain">true,modules.eventBus.enable</span><span class="token operator" style="color:#393A34">=</span><span class="token plain">false,modules.serviceBus.enable</span><span class="token operator" style="color:#393A34">=</span><span class="token plain">true,modules.edgeHub.websocket.server</span><span class="token operator" style="color:#393A34">=</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token plain">CLOUDCORE_IP</span><span class="token operator" style="color:#393A34">&gt;</span><span class="token plain">:30000 </span><span class="token punctuation" style="color:#393A34">\</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">--token</span><span class="token operator" style="color:#393A34">=</span><span class="token operator" style="color:#393A34">&lt;</span><span class="token plain">TOKEN</span><span class="token operator" style="color:#393A34">&gt;</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p><img loading="lazy" alt="Node join result" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAl8AAABrCAIAAADGqXDYAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAdXElEQVR4nO2du467ypOAa1f7GH+pZXmijngCRGBpMpyjlRyQOEIidOKAhBCJaBIHllbkdDYSAeIJiIh+lsWbbMDFXLq52GBjT33JOYfjKRooaJqG+v7rP//5DzwTqrq2LhMCAOlZ2zrJU9eOIAiCIAP4r2f3jgiCIAiyeP771Q1AEARBkMWBvSMigJp+7Jt01O9dddbm5My4luehuqP2LoIgT2ZJvSNVVZXOeL3A+FkYmkWhqvpOF+fE2UqSJGnn9NUtQRDkLzBb76i63Ht8qppuPgbw3dqts+p6lmXtv+q/Ln/smypncey7Qy/xvPgAtGhOLVBtBQNv8MfEF9C5Xfz446Hftv4NAOre2jwcbD4E+fOx60UQZGGIekdK6QzDINX1LOV60iRJkrSQ7Oyi56Gmb5EoiuptMG2LhJokSZJ0CBUrv2hRc78JDtliLSSWN+Bixo0P1PQ9BbLmHIL1t1pZb3osWzlgBaPiC2OIt4sf/x7otwLhbwJ0TdLrv8fjIQiCfCSN3lF1Y9c0fT+2bdv2bjfRtDLiqw5qeMuzCSJLBpCt2jyR6lpydNw6LAEASJxTRJTvIlh43BpBrS30WyHRKf/kI3FOkaybFAASxzBYclsMZD2gH2/HB3W/I9HJyJvDHIdly79WBNIgX/wbDnuSNyK+gO7t4sTP1+LG8aAZLNX1fd/3doTs7PKfw0bG1PRvI6rG/GJ9/mzNHytXHgIIl5t9+XMH5WSlb5rVdvLaM3a92X7gb5jofLn92lzXYgn2D4IgL6M9dpSV1ekgbbfbraT9ZNdz1fV22RBIO4bEKkd8/OXZBNExAoiOkiRJkmQwAAB1I0MUsPJS4G8gJavs4V7S13WIoGsC6aX3o0lefLomEF2hvJqXl04WREA22UWKfitDxlij4g+hsV1j9w+tzlDmE43MOBwOpwiis3Y4hClER+1w+On/4JSavq2kx/wodiPvVsGBlycWlE8M6stJeMzH1pCPrUX5Mx7V9XbZMwDtBIpcXc5pzz3rlfVNcJAkSdKOqWzt1dt6+eeLJQ9vD4IgL6XdO6bhD8uvmPlARt3I6TlbmLDKiE+0nA9dk6xzVPeWnB4l6RAA6Wpa8hum+XARgJq6DEVfWpJd/u69eAKArKzzq1sItyeozNBC0L04jmNPSY+H+0sW8OP3Mma7mCFJUq2qgur6tr65Df2/9vo3QHY81yS9/ibJ14pEAUuSpG/LVnvf26Wn7cB93JcntScG6kZOzwdn6Nh6NM385CxvPsEYS3myJCwoB/tDz5cZ2oMgyGT8T/9P6JpAGrQvo6LlA8JFJwYA/64prDp+mTiH88r24h1AGp3DCJTaIE51fYuctS2rLYut4p48GjDciU7lc94g2ulrCpAANX1vFWqSkQBQ1bQ9F4pIk8TvicPbrjGoGzk9SQajpu/55r8D6HJ6Mqjp7ldACAHYuysiA4Drrn+M7p6fyCRKQd6owAY1hzeMp2sCRPbi3e1XV7g/fwbTlbe89tyDaHvHnC9TtgdBkMkY0DsmlxSU8rrev7wDsqbALinsNiqwf1+rzrFjNhW3dbJ/paa/q1xbVNe3SNiqRMcMaXCnklz4nXN9vpP9hrpX9g5TxO+MI9iubiiF2yCQriG6/sueFGrg2jYJj1sGlAbB90aX0/AYwEYnURgEl94nxun5YDhfbmy5KhsyfCSCPIlO7TuJO/JnFF15y2vPM9b7ivYgCHIXQ77oYEFEdns1+0bO1OU0/E26lgPkA8PaayXJJc0ejbKfY0SsOLY30PPCCzXNfPZPNe0diYLsAkJVNx7fhXC3S9aLNZgbOR8JJJcU5E3xRFcdNvE4Ir6Q+7ZLdWOv8v4UJI5RDggTx9hutw4DgCRh7AIkOjmMXYCkgcMY632wmm2HcYxkq3ylJbmkUDzxpqqpy5WfivJEtoqXTahquvnHOSyIyM6+HWKz+uC5lT/F5l2yseyQdjfys7Kc257O9Y5g6PkyqD0IgryIQd87MkM7Z/NwnlWdhxMth+Kty51XefeP/ZyzecSEGVtJkraGsa08sczeF8xeF3SL9zMuGzuO49jTlfCo5b+l37oMQPLYw17Y5MdnhhauivlFOBcrYIZ2BiUL396wx+ML6NoufnyA7HKepsWNQyfFRxzqRh70+xvM0M5Qfn/DjGNxaO3NJax+ZhKdrxu72G3bSp4c83nc2N5A8Mtuy1PFyiPBb7VN7fwp25LdXA047szQzsTysuiVdora07nesbtLcL5k7fH0oe1BEORFPLcKOTV9T0mPB4PNN92EIDxUN9avKIVBEGQgz60klzhb7QS6PXjMhyAPoJrlA8vmk38EQZBO0GCFfDBUdW1LJgCQRvjIAkGQEWDviCAIgiBNluToQBAEQZBlgL0jgiAIgjSp9I6NctZNOys1/fqLNNlXBpVC5X7299nyCigEGgpVXb/psGrtzsYLTc3jIvx93c1UqyXOW+9k1BpUM5GJq9jzUqYjr2Zt/4fQOn+zpe0y8Es7f1sW7jyRRe3syDd+nlS82u2Tq52fPddJ5HNojh3Jbs8/F+i3QtK0WQIyTUn+ZTb9ViAtv+4v6jg/VET6r5EVoz7ke+0QrPcmzeuoSll97PScCa4qdVVbx6Xn94PXOylFPmindHerK3Cr1j20+jY3r57Q/veHd/5S0/f0/ABIhwBu+21J52/yG9baXdoMOtrJzTdRnmTl57Vzmp8v5cnSkZ/C6yTyQTR6xyiKysLfNbLyaq0KyWkYEt2kAOp+l4bh7M39ZPIy7UU3ljCnpwgqiI/L7Ou9k4T9nEsxy0TVt5/Z/reFlyfqfgfn8kXe5e63evdY7Rz7/7SSb6PzpCM/hddJ5JNojh2DnzNwLlL0WyFRwFjQvIRdfkNQvqm6kaPgd/7mfjJZhTbfNdXh3mnhcZl5vfdC1b1SVARsSLr+XdOWg2UQz2z/u8LLk4HytwWQ/IZlbpSqn0FU821snnTmp+A6iXwUrbdykt8QWk8N8pMrKxVZT4rkNwTF1hu1yQp/bIwf/Q+HGdoxBbKzPC+b6Oj9i47jMut6R1Pkg6fDqaeg3qA4tbx6QvvfnL48KWbeyl26sPM3+Q3TrLhuuSUZonZy823SPOFeJ5HPov3OauKcmk8NKgrgf9fm3GPinFJCGrdz1fkALN41mIQZ2202YXJOZavv/O08Li3+XYVF30eudzx5PmhnuDmCH4jTzKvZ2//e9OZJ4mwz73PB0s7fontsdI7Cdgrybco84VwnkQ+D90UH+znDbr+5LfhakaI6trcjLQkxM14+c/9xJM7Npiuk57jMtt4Hoh/OpdE6udRsGF+re10o9TXM2f43hZ8njf2/bLLGqiOTpJZvjf/Tmye9+dm6TiIfBvd7x+Q3TGW5NOyoG7l8+VGSjtFQgxAyCmq6bjklMsR4NfK45O6n3Bd1G06MXu8jJM4pKt73qxidHqmD+tT2vyOiPGE/Z9jZZSXa9avb2QkLIqLoo5Okkm+j86Q3PxvXSeTT4FcDSJzT7TGLWs8jFgzoHqvzAUuYuHgHEucn2Nh5hfYBxqvRx+UmVqqZlcau90FYEBV6yGqD6qKwWv5UPrjj5dWT2/92iPMkcbZaWKizPAXOp+Lyv8DzlwURIaTRQw1oZ5lvwjzJZl29XTHArk5oC/Izp3adRD4OrLOKIAiCIE2wkhyCIAiCNMHeEUEQBEGaYO+IIAiCIE2wd/x0sEpynUrN6Ye+d5sqztLB/EH+KrzekarqrEW5MD7yOrKa05J2FtZGeG6c1/Pu+fyq9ovXS9U336UIALd3VF3Psqx97cPyiuemaoS5LR7hDeLFr6hiaoFqKxh4AzsmvoDO7eLHn4Au0xNSUPdwIYPoOo9my+cnMab9HF9X/j9ul4eh42TxeqlpW2+9S5GcRu9ITd8iURQ1FtoWCXPPTagUBZioud8Eh2yxFhLLG1IYlBcfqOl7Sq6KOQTrb7Wy3vRYGGR2A1YwKr4whni7+PGng296QgZDKcV79gYd59Hc+TwNzSN6++9R7afmfh0c8vMLKrtBdb0dhFpreVco4XqpaSvheeF7FBlEa+wYHrdGUFuSyW/yL2Er1QUTxzBYcls8rCxVOz6o+x2JTrlJJ2GOk3/M/bUikObKmeQ3HPYEa0R8Ad3bxYk/AzXTU+Omtza2Nvk3w7efm+vKwtqwS2QZngPRTbvYftze4Gyiz5Jv34DfWq+6sWuavh/btm17VSU3d7+Na7vpx6455tkD/7iItqu5fyaXN3eeR/x85ubPi6Cm3bhB9SqlU0ecj4ljOKWuq1JILjNVOUlx3g0qBSZYLzVtJT05l2EtQpZNo3dM+roOEQN1OLz4dE0gukL70QYLIiBF6bNb5bPJ4g+hsV1375+RVM07hba1bWFVvzdQ3AyHlZte1bXkbKygnUApK13Vz3x1v2vWjp8L1fUsEh7zsTt81+7ZT5okSdqxbpeV9U22YdoxLepIZxN9x+g2wq7VxJGV1ekgbbfbraT9sJ74Y5F3q+AwOI7ouPC3S3x8J6LjPOLnsyB/XsRN0AEtSce95yOtFBCqn+LDqs+K1qvud+kJSzV9CgPeWU1+w1slX2rqcrvctep6u/T4iJlIyZ951K4mzCgLXfErOT0Yv5eHt2ssXPOO0MLKKjfDlarKld8nrFrrqnqdGSWRfQx1I6fng9MauzfbWZFHpGGxvWxoVfHyTwDygX9H/LGMiyM4LqLtmsgC3dGeceeRMH9eRC1tH7yny9809vRWwUFq+sXLufeW81ddC555tUBmZsgXHYlzOKeKF8dx7O8hjKA+iFNd3yKNXKu+YTKkL4pOxcWzcjWhpu+trsVEwVX3ak/SHo/fE4e3XXPDM+/QdWlYiPNHi2UTTd9vLe8Yxt+uM/kV8BnbJGpP1+OGKeqI32P3FeXDyDjc4yKK03F8p6HjPOL+fHFW5Nt0zsNpW7xpfLoqXn1eP3G2hQTrPleM6lrk/POvMvONM+Bvzv8M+lXiGFsn+1dq+rs0KM8d1fUtEmpNBxwzpMEpnFxSWHGW1+c72W+oexsVGJsqfmccwXY9icQ5nBVPNylzEkguKUQnjiNMda1detS2Wb+vurGe/fElBWVNAThNT5xTFOsmhZWchj/P2TZRe7raOed6uxDlAxkTR3BcutrJPb4T0XUeidoz53G5BxZElv5NL1OlbcKc02anf1MnSerbS9cEKte3UaSg2LYCAEAIAFg2rA/GAuyYyJ0MqgZATbMQH5n27ckGVd14ii6EBZGsF2u4mWUy41LxRFcdNvE4Ir6QqbbrERqmJ9kq301RTff2sUd6zc9p1dRv84s3805tefk/FftuXdQ9sCAiO/uWQkXzm+0c1KR/18FWws74uc9r4CaMjcM9Lh3tFB3fKRh9HnXmz4tgQUSU/WZE2qquH8e1N59M1yzf/FJNvbwOZNtrZtvbenLbiiNsorEtyWbHt9g1vjeN3jF7smTJ+QRY/ggmcS4bO3tcr4THUvzyrctQfSY04AsEfnxmaOGqmBe5TQgwQzuDkvt1rEETj6PiC+jaLn78Waibno6FaMjeQPCb75+fc6pY+dJLeJsfYoZ2JpaXza+EUSsuIbfBxDNghnZMFcvL2//LbstzQ9DAw1u8RZwfm77d3xmfGceIWAPzNjpfN/bQOMLj0tFO3vGdio7zSHi+iPPnRbAgInKrc+w8HwkAqbxxmzg/+WUs3w3ldeC2gzjzka04vetFPgU0WP05qOl7qxmf5H0auL/elameDi/rKTPyNLDO6l/jiV9yIMgrmapLw67xjzLsrRzkI1Dd2JIhjY5b7BwRBEE6wSerCIIgCNJk1JNV+qLC869a70eABqL7+Gv7rXd7n1l58JOolBkY/PsZ9vNfy+cpGNM70m/9JYXnX7VeNNEgf5l3MVu9Szv/GlMdl9cd3zG9Y+JsX/Lm3pzr7TJbPdlEgwarR0CzlZgJTXPL4+kGq4r2evinbH+PEcdlOmPgHSayLpb2zuosBiKRAafTbPUSEw0arJCpmc409yqWZbDKi9HlHCN4YmGNZTHNcZnOGDjeRNZDvXfsMCK1i092mX2EN2nC7eIbiHjr7brX4K1XaMDpMlu92ETzYQYrYTvL+3DfNKvzIrztvcdsJW4Q3xglMjeNaefS6DKyiU1VIjPU8zd4mQarojGjqk5R079lZ+P8q88Lrvuvq0OWz5nPUx2XyYyBDxxHAbXeUWzeYUZ+n9SAb/YRGYs64RiIBOtV9xYJ80HWIdjcwvPXKzLgdJmtXm2i+TCDlbCd3o5nShIbne4wW/HaI9qfAnPT+HYullqJcbGpSmRo4hu45mWJBqtqY4ZWnaKmbyvpcdAkkfi6ys/bV+TzHMflEWPgA8dRRK13FJt3RHDNPiJjUU+oloGoA6Kss4nahBlleNF6Oww4fLPV60w0H2mwGtvODqPTHWarNqL4A9oztJ0LpW5ku8NUNcn+H8tiDVYjGrPa+94uPW0HXlXE19XuvH1qPk95XPIWTGAMnMBEVlKvBqCavr4jpPjP9Nr350IzkaDKffY9ekY07DaqDTO0tWvr9s4ikEbnogy+eL2FmYI5Xxs5PWu3tdbMVjt9TQES1bXIWftXmf+kdECHPQn5PqGm71l7lRnFGJfIXrwrf1UeF+7x6tj/yW+YZoIGtbEj5mVUOzu2dzKzFS9+V3vGtnOJ5Ea2shLEPTaK15itxOfvHaG2kpPpFDwfqqKB/P+AOthgxTmHRNc3IpMoq1YvdqNUEZrOBHk7dz7zt2vC48LJzzsZfxzFVHvHkeYdEJh9ugw4Y8xTHRRGLaq6nrVXHYP1rZdjwBGbrV5uovkog9XYdk5vdKrf3YjijzVtzW2emhSOkW2JpioRCzRYZVOOjcaIrm/p+WA4X25sufktbw+i66oob+fOZ9F2TXZcJjAGTmciK2m8s9pr3mk8TOGafUTGokeorLdqoqnRtV6eAUdgtlqEieaTDFZj23mX0UlotlLd2PNqL+qI4ne0Z7p2vgCRkW2JpioRizNY0W+FjDyHmHGM5Nub6MklLSQ8rf0vuq6K8vZl+TzBcbnTGNiO030c76HaO/aad5hxTDMTTnGI+WYfkbHoXurrTZwfyE00jemDrvXyDDjjzFZP5nMMVgPaaW+gvny00UlotvoXRFHaaJAgvmi/TdnO5yM2sonzZHmGpmUZrPL33ceeQ8zQzrAr3nZhxrFI2eb1tnZd3Vavq4K8fVk+P35c7jYGto5Lz3EczwN1VtHs854s9Lipbqxf5zFOq66//pkq8oztRKYFDVYDeEE+v81xWVo1AGRulmSwUs3bR4tzPeylpq/DgyPlZ7QTmRw0WAl4cT6/zXFBg9UfYnEGK/YbuHZsEQBIo4qyflJ+D9tH3zh+SjsR5ElgPg8DDVYIgiAI0uQtDFbIA6C55j5wv2XgfngQNFi9LUsyWM1tKkHTDfKXEeX/u58X797+TwUNVuPoKk4+tzFn8UYeNFg9AhqsehDl/+LPix7QYLVM0GA1DqFBZqypRGxOEa96SUYeMWiwQuZAlP/vcV6gwWqZoMGqWG/etz9isBIZZABGmUpE5hRq+rHvun4c+66Z3d9VtmGECWUBoMEKDVbTIsp//nKx2er5oMGqEgANVmI+xmBVNcjASFNJlzkFrj9b7QzybnWSpGMkF1Xm7zaqvAg0WKHBakpE+c9fLjZbvQI0WKHBavyfvqXBSmyQGU6HOSW9ZFW7H67O/iLQYIUGq5dzh9lqVtBghQar4byxwarDIMPlGeaUJYEGKzRYvZpJ7AaTggYr6MlbNFiVvLHBqvxNxSDTFX92c8oyQYMVGqxexhLNVmiwQoNVH+9tsBIaZO5hvDnlvUCDFRqsXsUSzVZosEKDVV+ctzZYiQ0y9xhz+OYUEcsz8vSCBqvm9naCBqsuRPnPX96ZPy8CDVZosEKDFTI3Cz1uaLBCJuZtTEmvBA1WYtBg9ddAg9V40GD1lryNKenZoMFqGGiw+kOgwepO0PiDfBKYz8NAgxWCIAiCNBnl6CirGy23KAjSBM0194H7DZkENFi9LSN6R3W/I6EmSZKEryQgCLIQ0GC1TP6SwapRAQ/6zCO8ECN//7dAg9UjoMFKxHjjEv88Xai5CQ1Wy+TjDFbjzFBd5pEpfv8XQYMVMjVjjUui8/R15iY0WC2Tv2SwEhpJspslb0eKItnZZbvbPNJm7O//MmiwQoPVHFRf4BcZ34acp/UPAeZ9JoQGq0oANFiJmdVgJTSSZDdL2jkthjaceUfOc9dOxv7+j4EGKzRYzUDbuCQwvt3+gnue1uOoe4uE+a4/BBuOsO4h0GCFBqvxfzq5wep+I8lY88gUppKPBA1WaLCaj/ZJ3WN8E5yn7ThEWWcvTiTMmNykigYrNFgNZzaD1X1GEp55RGRyEf0eyUCDFRqsZmPkMReep804zNDWrq3bO4tAGp0PxtSvtKPBCnryFg1WJXMZrO4xkgjMIyLjyRSmkj8AGqzQYDU1XOOSEPF5youTOMbWyaatPGuvOpPvEzRYocGqj/kNVqOMJGPNI/eZSv4maLBCg9WkjDAudZ6n7ThVM9RsoMEKDVZ9ceY1WJWrGGaG6jKPTPH7Pw4arJrb2wkarDoZYVzqPE85cRLnB3Iz1ETiIB5osEKD1TsZrJD3BA1WDwZDg9Wb8DampFeCBisxaLD6a6DBajxosHpL3saU9GzQYDUMNFj9IdBgdSdo/EE+CcznYeCTVYTPz8//cZfv9//79LYgCII8G3yyiiAIgiBNltQ7zm0qwfhZGJpFoeo7VAZFEAR5CbP1jgKjkLAeNddUUimKWzU63VX1mG9Codxqv7UVDPzuZEx8AdOZXLpW8m3r31l1zM3DwRAEQT4UUe9IKZ1hGKS6nqVcyzq35Zc/fFMJNW0r9y1Lh1Cx8s72HhMW34RCTd9T8rK7h2BdlE+mpm2RrEqvpIVkiAplVHxhjKlMLp1r+VYg/E2ArsnDhZYQBEE+lkbvqLqxa5q+H9u2bVcqjFBTYE7hLBcahVTXkqPj1uHWuW2bSmoF8BPnFOXfxt9nwuKYULIveo2irHVZDv5rRSAN8sW/YcqJ9lB8AXeaXFR3YGEF1fV93/d2hOzs8p+TSEIRBEE+jvbYUVZWp4O03W63kvaTXc9V19tlQ6CWUYWzXGQUKq0Q+QNEfwOlwnAq44kIXny6JhBdoS2TZkEEZJN19vRbGTLGGhV/CA+YXCCfU7ypSLOJRmYcDodTBNFZOxzCFKKjdjj84NvcCIIgHNq9YykJgqJ0c9N4IjKkdBtP6JpknaO6t+T0KEmHAIj457kgJa9DCNTU5baR5GHjiazktvCad5AZWphXVPKU9JHvgfjxexmzXcxoGjdV17f1zW3o/7XXvwGy47km6fU3Sb5WJApYkjz6ISCCIMiHMuCtHNHw7E6BcdlLJv+u3Q8tE+dwThUvjuPY30MYNYwkufGkYceKS4b0RdGpfM578wVS0/dW19zWe7rqlV5tkvg9cXjbNQZ1I6enrbHVzsTyTUpNXU4vCTVd13VthYCyd11dBrJx8bEqgiCIgAG1csaaUDogawrsksJuowL797XqHDtWzDhZl7WrGEnGmrN4wS8prDjL6/Od7DfUvdLLNkX8zjh3mVxqhia6huj6L3vCrYFr2yQ8bhlQGgTfG11Ow2MAG51EYRBc8K0cBEEQPkO+6GgaTypGFe5yAJ5RKLmk2aNR9nOMiBXH9gZ6XnihZq6coapp36qDTmXCYkEk68UazE1htEkuKcib4omuOmzicUR8IfeaXOqGpsQxSv1s4hjb7dZhAJAkjF2ARCeHsQuQNHAYY/hgFUEQhE+jkpyoYDs1XXsnF3X5jGJiUrgc8mGQTKBuvFf4F/+qe7qqny5ipOn5dMgfUlLT93bVUWd67u1QRPGr7a9IzW+LeRv2eHwuXdslip/9ma2kp23/k1hq+jYcts6XG2+CXkcHVpJDEOQv89w6q9T0PSUd0NsgLwd7RwRB/jLPrSSXOFvtBLqN9mMEQRBkyTzdYJUwYyn+JARBEATh8//ROmhJ5lpeEgAAAABJRU5ErkJggg==" width="607" height="107" class="img_ev3q">
<img loading="lazy" alt="Edge node status" src="/zh/assets/images/edge-node-status-935a459efb9705b37ab7b8880200a991.png" width="1469" height="270" class="img_ev3q"></p><p>After execution, the edge node joined successfully and the node status was normal.</p><p>This means the main join path between the RISC-V edge node and CloudCore was successfully verified.</p><hr><h2 class="anchor anchorWithStickyNavbar_LWe7" id="step-6-running-a-basic-workload-on-the-edge-node">Step 6: Running a basic workload on the edge node<a href="#step-6-running-a-basic-workload-on-the-edge-node" class="hash-link" aria-label="Step 6: Running a basic workload on the edge node的直接链接" title="Step 6: Running a basic workload on the edge node的直接链接">​</a></h2><p>Joining the node is only part of the story. To complete the full loop, the environment still needs to prove that it can actually run a real workload.</p><p>For this, I deployed a simple <strong>Nginx</strong> application to the edge node.</p><div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-bash codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token function" style="color:#d73a49">tee</span><span class="token plain"> edgetest.yaml </span><span class="token operator" style="color:#393A34">&lt;&lt;</span><span class="token string" style="color:#e3116c">EOF</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">apiVersion: apps/v1</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">kind: Deployment</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">metadata:</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">  name: nginx-edge</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">spec:</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">  replicas: 1</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">  selector:</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">    matchLabels:</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">      app: nginx-edge</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">  template:</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">    metadata:</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">      labels:</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">        app: nginx-edge</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">    spec:</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">      nodeName: vf2-2</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">      hostNetwork: true</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">      automountServiceAccountToken: false</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">      containers:</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">      - name: nginx-edge</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">        image: nginx</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">        imagePullPolicy: IfNotPresent</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">        ports:</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">        - containerPort: 80</span><br></span><span class="token-line" style="color:#393A34"><span class="token string" style="color:#e3116c">EOF</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">kubectl apply -f edgetest.yaml</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p><img loading="lazy" alt="Nginx deployment result" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA9QAAAA8CAIAAAAISWWhAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAgAElEQVR4nO2dX4jcVprov7ksxO2XidnAkI47Snf1dcKB6ZEfAnlZpW6oUASDyrDQe6kXJdSDi/WmQBguFPHUg8YXwUAj0IyhB7bw1ovYbViwxBjTWNxb1jzcgTxY2wGRyXZ1R7eJw8IsTl5iz9s+6E9JVTr6U62q6o6/34vdp0595zv/v/r06ZyfXL58GRAEQRAEQRAEmT//bdkKIAiCIAiCIMjLAhrfCB0i6rYukkL5VX6u6vjMsZTFwauFWrcMyGsfkIu0Dz/47Xt3b1E/RRAEQRCkDM6Y8U14nidzNEdQvieGeFIIzy/W9jsdjtJgWZZtDtxla3JeqXz0Rufv0bxGEARBkCUyT+ObVxM9lIQXVd+Dqasxxx+vapIktTfjucPMusgnJNu6mteCTJIPQAJ1YoJiBeR0TxaRTyG1Xsnyi0PqcqsOAHxbqp1a2PygjJ8fbbkLYLTzb9f/4c/L1gJBEARBXmZSjG9CyBycuLyqSdXjfpNlWbY5ZAQ5MGyJqEuMZVlxHURZYoZNlmVZtjusSr5NRMR2zex6yc0hI2k5bKVE+UBEXauCp07XrNT5SLluL9QyRwGF5FNl0OuVLH8WSL0Kw30HSIVxjw9PLw9BEARBEATJybTxzau2Koq6bsuyLGtjFyCJ+KujLtmkdC84V+IAOCkWo8urEmf1GorhAAA4St9iqvVA2LDX6JgxXUi9ylh9xYEgN9cSCQA4SqdjOONkYCo5fiZMywe+LTBWv+OrYyiK4aVvrjPgmn7y/jBfmEMB+RTS65Ug3y9Fte1c0cO8quu6rgkMI8jhv/n8+kTUx/7gidjueOxyJdnTH3mEQU0Xs8bPDISB4rooRvVM0qdouUTUbVWk1JcyX8bFipVZ6wQAQN787Pfv3f/ivftf/OKz6xe9lLtfvP1BLNPFj3//3mfXAQDg+tv3v3jv/hfv3f/ta7Es19++66X//s03Y/Jfm5SPIAiCIEgJJHq+uep6v8s2Go0G29z1zEVe1QTPgdvsDRkp9Fcnp3vBuT0LwOqxLMuybMcAAOBrHFimEVo+eg1cZt2LfHCyLFMapMKAO3KysiXJJxUGrGMIjafQMjNMC5iaZzORejWPh7iQ/DxM1Kto+5BodLgf5G10ut1u3wJr0Ox2hy5YvWa3u6tkth0Rdbnq9vxeTIcT1s1u0jiRIHzeEU9nhj3/yQD4TwZo46c4vKoJ3hOMZh+qXDQ9QZ9ZyqXWlzJfJC5Jn6K89tm/rMI/Hlz/+R9v/fLZ6q/++8cEwPnhKVx4MzbELr7BPP/mKwAAuP+n6z//4/VfPpuU86tLT395cP3nf7z1j/Du+1H5m578638XyEcQBEEQpAQSjW93uGv4BpnvhuVrnDvwEh0j4q+mpSdDKoxne/NtiXN7LNs1gUnTztkfur6zG4CILQ4CUz3Es65mtc0AgKtWzK5nhME4vMToNIfQ0mzbtrWq2+tmG6jF5GdSpF5Gh2XZRlRFXtXlVm384GKz3aoDeP1ZYdzjfcfZXGcs03AcJ6tm621dE9x+I2cbZ42T2PMOvsa5g66S98lAYSbHZ0L65POXohSaFzR9inL9r991n/7z/R8AYHT////r45V3P7oI8Of/93jljSsA8NpnX/ziYwJALq66z/6Q0sGTchLSwQnlIwiCIAhyev4qVy5SYcA1pzdxWnoOcVbfAIDDYxfWU3I6SnewLmu2AOBag6EF1ZgLmld1iRk0G0YszZYCj6KVw1lr9cMgGNMSWhUC4AARdW192GQ7DgDhRVlTIZBUivwMOUn1KgJf49w+2zGIqGu6eNiFFuf2O0RU2+vAMAxAW11nOABQ1cpuJ/2HBcMxlgtcjQcjlzpJDyFIhQGG02xhnOsYZh8/uUkbt0n6zAKtvmXNl+tv3//VJf//jw+91yUrlQvw9X+OpnU5ft6pvQbw16surH508Q9w6Y2vv5nOFkKTU6lcAObSzherYco3M7cPgiAIgiAx8hnfzsiFamg2ZqenwFQIGCMXhBoPxuHmeqrn2wuDbijef4moCxHThVd1iRk2GxO2o9Fhc9uszijZ9o/Hmhv7w5YWGp9lyE+VQ6lXOoTA2IVNKmAdH3phFE1QZZkZ9hoGEGKa9VqLc4c9E2otxhqa5igznMYddDvKpmpLKm/kcX4zlHFi9ad/qMwwfgqRNm6T9JkFWn1Lmi9w/0/X70+mjUYv4H9crACMktI/rl34/H9988avX/ubr1c+N9PONkmT8/gbPBcFQRAEQeZAzqMGDdNihDbvnQ0ttjh3uO+kpQP4bu3YG4POyPXiRozdnsVIti3XIONdRiKKfuQ1L8oCY5mevUR41S5uoSbWi2sFJYg1zvdjOiMXuFoQ7sLnC/ouIJ/KbPXiVVuLvBoLjtIJ3dmO0mk0GooBAI5jGCNgrL5iGCNgXFMxDCMz6sSrR6dncVL4tqIzciEIByK82IrGLtPGCScF7x0SXlT9UyMN02IEedzFYjQqZ2r8BNUbeZ74PHpPjM9IeqI+qeUmU2he0PQpyv3//JxZ/Z/XLwJA5fqbf/v+888f/hCmX3/r2R+cH76BS+++FQR8R3nrYoUqJ5L+/mbwnuXFD269/fH1WVVFEARBECTGTy5fvhxP4VW7dZxg/RFRlQWOAQDX6nU7QVA4NR18Jy7HwDiwgoi6Vk22LaNhGNFIjECG6w76QXQwEXVNiPrM3UGmvUqTH9V/0A2N1nFyUsVOLz+RtHrR5IfvQ+aJyiaiLkO3oWyqds3M9vzGuived2HXulZvCFL1uNlQHC9aZwBVgWMAXKsXUYnwqhx8Y9DfVYL2jKVPtM/U+Jn8IEe/B23qWoMhCNVwaNP0SS03QXasvjnmRdjH7mDgRvQpCnnzs1+vvssAwPPPf/nv/9uLz4aLH/9+693/e3Bz54fKrV/sfPxC/fmf/k/8ex/89hed91cAnt//u3/7JweAvHn3X1bfAAD36f2vV989Pri58wN4p538etOX/0/f/PPOn1PCVxAEQRAEyc208T1niKhrVTeHMYsgJUP7XTkzRNS19ZLCVxAEQRAEeSlY+PXyjtJo9qElB2cd4xFmyDzhxTC6ZDIsCkEQBEEQZOHke+GyXByjM/M5HghSCGPfVGVbCsI/yvN6IwiCIAiCzMDCw04QBEEQBEEQ5GVl4WEnCIIgCIIgCPKygsY3giAIgiAIgiyIuPHNq7GXIHk1/kYkEfX4O5K8atv2+IBpIure9730CLlvVUeQ8oiNQ10PD/POGJ+Uce5LCV7g9PJFs03+XQaEV3U9KNsvekr9iXeXJ/Wn5ufVaNWJqEfmckK5c2eG/iqjfWjlpslZRPtM6RnWOCjX/2xp66234k81Dq0fkdlI25eJOB4OwTCkrFdLGyez6T9tV6SOt/x2S+p6mNQ+tPYst76L768574/p60NC+xRc59PS6SSsn5R6FR4nBfVJeOGSEdq8knR6GqlXGdeFap0okatZXJfxb38k9Sq44aU5ea5eR5B5E4xDwquapMNhcNIgfXwmj/PgpHpelTW90mwoDjhKd1DVZHG/oTgARJQFGDRLfaWTVzUJek3WP96eF9si6Sjh5ajJZydO6U/NT13Kk8tdyMuqhfqrnPahlUuXs5D2SdLTP6nVKzlW7lLWW0dpsEry7Q20fkRmJHFf5lVN8AciEXVNFifnS3S9iqYvnoL6J9oVKeOtgN2Suh7S2ofWnmXVd1n9Ncf9cab+KrDOO8XXYfr6Wco4KabPdNiJZVnB5YUTeterjNXvW0y1Hv3UHQ6ZlkgA+LbgDof0eiPIEnGM3YHLrG9mZqSM81BMpzsAoe3ZrY7StxjvD74tMFa/XAuDVBiwzPBEfMdQclh46frPr9ySydNf82ifuZVblCQ9+bYAg/COhKX0S1FyzzsklcR9ma9x7mDXGw6OkjSm4+vVEimqf1G7oqjdMiO52/O89ddc9scUqP2VVCRlvS28Dqetn4vfNxNivs3dASSUT+pVxjINw5zUbrQ/hGqd8DXOMvdn1BpB5gzh21XGMrMvAaWN8xBnFLl+3uj0LE5SVVXirF7ZLgpn5ALX0lWRJ7nXg2z951Nu2eTpr3m0z7zKLUqSnqTCgDs66+Y2MhcS9uWJ8XB4nGg9xdar5VFU/6J2RVG7ZWZytuc566857Y90KP1Fk5i03hZdh9PWzyXsm0kvXDr7w+mfLr5uANPaOftDqMotLt5znDQV6oMgCycYh1oL+s2IdUwZnynjnILR6VkcNwfTGwCMTrPnAiNImubFkGV+o7j+5ZRbGoX6q8T2oZWbyPzbJ6sfg2jKsCnO6npL+LbAuMeHy9bj/JO4LxdmeeOkqP7JdkVB+YXXw/La53z019z3RyrJ7VNonZ99HZ5cP8sZJ8X0STztxFH6k48ESL0arKCHx+6k9a30XWbyV5PVY0Mw3g9ZFv44bA6Ak6IzPXl8po5zGofHLszLvHCMTqPh18DlpKzlpZj+h8cu7aOC5ZZHsf4qr31o5VKYc/tk9qOjNFi2Z40Tztp6O97UmUHvLCh0/knYl4uzxHFSVP9Eu6KY/OLreYntcy76awH7I43E9im4zs+6Dk+sn6WNkyL6UI4aNHYHILRr44TNdQYYQbNt29YEBiaflhgdFl+vRM4wjtIduNkrYcY4B1jew39HMa3Mx3l59J9HuaWTs79i3yijfeZUblGS9TwjAQS5CDenRkPBnaEkJvblifGwuZ74iOEMBSsV1b+oXVHUbpmJAu15fvprOfvjVH/l0jR5vc2xDtPXz6Xsm7Rzvp39octxXPAnX+PcQTMw9HsWcLWlv8GBIEWIvBxJJXucE16VBRjsLsSeIKKqhuFjRKxxWYtawXnqjFzgarx/dt74x3/hcudBjv6aS/vMo9yi0PQ0dgcgyMEJVqRSZpnIOWBiXzZMixHa/gQWW5w73J8Yhwtdr7IprP/p5JdvtxRsz3PUX0vZHyfahwJtvS28DtPWz5LGSUF9qJfsOEp//EyTj4sxzBzaRWNizlQQIvKyYpgWhD/uk8Zn2jj388st6Oc4Z6ocHGXXrMmy//y+CoOMYOTC89ToNAfQ8n7wS1W311WcWcqdE5n9Naf2iZWbxLzbh66nozSaQ7/HbK0Kg36wey9lvfUiJzUhcBvhOj9vYvtyfAKP5y+krFdL3pdz659I9nibm90y4/p/nvqr/P2xYH/RyqWtt8XX4eT1s6xxUlCfn1y+fDm9EARBEARBEARBSgGvl0cQBEEQBEGQBYHGN4IgCIIgCIIsCDS+EQRBEARBEGRBlGV8E36Jl+Hx6vl+02d++hNRnbiL43zJRxbEUucvgiCnAddhBDlvlGR8k3pLapdwhCYSQHj+9PYQ3xaYYXN+1ynMIL+UehWGFCy0aP7zDs7fs0rR+bKc+bWyvX1pa+v8yj/nzHudRxCkdEoyvh2l8WO6ZCe4ezTvGT9F8+dQQJYkKWoPEd73bdi6LvLjfLGCJ+5TmjrtvmQ9k07TT9aTXq9FwKtaWqFE1OMtl5F/cfBqtKsS2rMsztD8HTvxVPTiFZ0vy5lf2/fe2dl5S3wnmrayfY+cnFw9Obn6+PHqdpi8dene46t++r1LOc3pJPkAW6u+qMcb22NB43JPHm/czi4goue91Rz6lFmvskhYh8fLsK0HxxqniiiYH0GQU4Ix30k4SmN8dyjbsyDj8P+i+TMgolwdDqx4iuT7NtjusBq7tTRyOnyOUy4L6jnpQ8vwqaXpmVSvBUBEXWIsi14q3xaiVxhn5l8wwU2Bzb4rSD/6p8q8qgkwbLIs2+yDoC3uVvuzSNH5spT5tXWb7Gx8b5oTies7G99dW3uytvbk00ev7ty7BAAAK7fFSw8//XJt7cna2pePNt564KcXlg9bq48fvAp3v1xbe7L26bMr/KVIuS9uXXuytvbk2qMLNx5sbCcKHQt//crDY0+fu/CzTH1KrFcxiq3DRGzXzK63DDeHjJQ1j4rmRxDk1MSNb88HOPZdRn8Dh15TXRSjMcqhdy4yYelyiKiPvxv7gwZJVgfGyWLsojeanjQ5WUxeRBWVk6R73vw0/YGIctXtK6NoUr3KWH3/iaKj9K2se2DHh9v7Z8FPN3OeC8WIKGvxbtW8G7Ao8lP1TKqXqNuqOHZ1zsflMuw1Oib1U77GufELudLzLwvH2B24/rW3E7768J0B2rxLm9fF5i99fpWC1xmKE9T3Zb5IlzJfdFXVbVtXRa8fxmtKQv7FeDS/u/X+0cNYygr/4Svm3acHAABwcOdbs/b67S0AeH7nk6O9g+cAAPD8zt3vYWMlh5N4Wj5siz/bML/9ZO85AMDBszt3nnnp71RegaNnewcAAAfGd0dZog/uHN3Z8/XZe5ipT7n1yk/RddhROh3DGS/DGbduF85/ytrwoqrrKg+wcvvx1Xvb4UMDcm97Jcy1dXvj8cnEk43U/NtT+Ymo66r4UsUPngbslwUz7fnmWjWzy7Is2+y5nBTcNsqrmuD2fI9UNXodqNHxvai55DhKo+cKskgCkRlBaryqSdBvBj/J5WCr4VWJS9KHpidNTiYxe9KTwwx7TZZl2a4J9enAinz5afoD8G3B7RcJAfDujorb9p6LuzlwA8fpVDNP6JmMsz+M2D+kXg1cxNnyp6DVixPWzS7Lss1eoX7JjaMoKY1JxBYXb4b0/MuD8O1q1ENPI3ne0dOLzV/6OlAG8efnzsidrxVwpqGuA8e7jeYAOGG9z7I9i6vWCT0/35aYof/opGvWpper03Nw5+neTF/cunIBjp4fzCJ/5coGmCMIw07C8JK9h9/DxiVvj9/iX904evFlXnVWtj/6aR59MslZryKcah1OCg5Mo2j+/IJ5UdV125Zb68f9bjBUazcvPfz0ydrak2u3XtR2XvefVGxvPLgBd689WVv78tajCzu/GUcEUfPvePmfXAvzO0q3a0JN1mwbjT062C9LYtr4doe7hnfHtGGGP4F996DnkZq8EDSZRDkAAEan5wqarkuc1csyMiPlgqP0Lcbfamj65EiPyclkIiaBr3HuoKsEFZu203Lmp7Ynr0ow3SrO/tANnchEbHHgu0DHcSTN3pAp8Jh+Qk8a0VU/x1eoelLqBQAQa4fc/VISfFuAuNv7zBFcY6u1oJ/nFnPavKPOxyJyZlgHZiDyRCwYPy8bKfNl5IAzcsE9PsyVn6lWvO3NMTqL+ln53Hj0l9pNf2Peuv16DV6pTERsb288uPHi1ifPZi6j9uGKv9k/gnF4yd7RtUdw88HVk5OrDz58cevTp9lG8Nbq45OrJyfv3IT/uJahzyLqlUjBdTiC92s5vzOnaP48EF7UdduWa2B2uyzbaHT8HREA4OjRt/6Tir1nJly4sgUAsP3RT49+56U/37vzrbnxKr+VMz8cRPI7jqF0Gp7jqybL+CJJDOyX5ZJgfCf86J3lx3BKfmN34DLMxMP+6MtlgQ1JKkzo2LVtWwo8bTR90tKT5NDKHX8Yj0nIbIec+WnpvCoxg91DQkjwa9D/11G6A7eq2bZt620YWhNbr2cLdfM/pp+OtaC0wzh2JOEr01D0pNYrfZzMm2m39xnEd2k1BxD1V9OhtWcZ83duTrE4jtIIXHhT4/ylIG2+FMpvdJoDt9qStQW/wHpw5/h3R68+OLl6ckJE+M6Ev4yiLujtjcc7F3537Wg2l7mHefdpsKmPN/ut2+RB5cWna0/W1p5cu/viZlbMNwDAwdP3vZjv0asPHme8c7mAeiVTcB324VVdYgbxn+xp+11S/nlz9NXzqbSVKxuJ6Wn5N268479oe/JWbS6avlxgv8ydv8qVyxm5UK0QgFL2XSLKgjsYMIIs7o8fkxkddmrOOyMXrP70e4Q0fdLSk+TQyg0VbXHucHcsLKMdcueny3GhKstVAACGAQBJhkq3ozgAjtJpKEExuuCap3qhc0JPSGkHw7SkVp2M1qe/kgRFz+R6AYDnU12K/cu3BcbqnWm39xhH6Q6qWkskxhJ/LJS7DmTJJxUGTjXOzzH0+VIkf2TdILyqSW1eWZRh9fzOJ84d779bq49vvHgYuqC3Nx7vXHh0zbkze2TG86+OoJKQHo/J3nv26OY7H23DXi5b+PnenW8/uvE6v/X0IE2xudYrjYLrsG9JD5uTgSjU/Y6SvwQcQ2kYChBebMuyxIBrDfu7ESfrFM+/OoIPr6wAJNt5ifnNu08+mepoQvh6uyVwjGsN+t1ux3k5VxMK2C/LJedpJ4ZpMUKbJ96zilZirGfO8Ez/uZaiNHpuZpyEYVqcFL42xouqf9oaTZ+U9EQ5qZB6lZl4JdEwLUaQRU8Q4cWYmAL5KXoanUZIzwKweo2OtxYScSxEDh87ElEVg7eoSCS9cL3SMEyLqbZrmW9nAl1Per0AYu1wulNiilHEhXQWcJS+xQht3jdSg/Ae6nwsSp75m2cdOA2efO/l0WKP139UpM2XIvmj68Ni2Vq97b10tXXp9m9+tmE+8/bfre2NE7qFun2PnJxEzw2ksvfw+9rNVT+2+/alGrz46sDf7GsfBWEh25c+3Ih5pqfkr9y+txq+NLZ9+/VADl2fmepVDkXWYcKrdhFLumj+mXAMpdNosGy3f7zeklN3/r2H32/ceH17K+iXo++M1Ibde/h9bSfoqa1Lt++tbntbolwDs9tk2UZHMV5OCy8b7Jclkc/zDWB0mhVd02wJXGswtKA69Xmvpmu2AOAOmo19qhxelTirxxrBd2xJ5Y0Ub4zRaYIqa7YEAK416AfG0lgfcAeDsT40PWlyUvAco1N+gyaosqQJEoBrDbqdGfPT9KfhKKO2bksMgOsOek0/eNPZN+tt2ZYYAADX6uV6YJioZxqGaUkS5w7y+FuS9UzDGhzXvCq4Vq9b/uLPq0GYEWfbElg97wGIF3LSSQr9Scx/FjBMS5JaIjEUo9Or6ZI336xewnwsLDrn/M1aB06L0WlWVNmv2IIfgP/4cJTduuqvD/Nqzu17V3e8x8m1qyc7YN568skewMHTr0RysvMKwF+Ofvf1Nf80khX+5k8B4MaDqze8Lx/9x7X3o2HZrwDAlTzy946uXdn4zYOrOwBw9H0Y6bH3yZdX7q0/OPkZAAD8xbx1HLeGJ+Q/v6NcuPebqzsbnjLf35qMGJnSZ8Z6lUL+dZjUWxwACJoteAnuINWuLpr/dDiG0jEUAIAVap54/2bH7u8dXYPIeLj77Z4XvtYoXfsfL9gvC+Ynly9fLvwlXrVbx/P9lVwK50XPlxYi6to6JRxovuDQKAFsRKRktgDm5zueQf689UEQ5CUl9yU7vDg+NHix4QHFOC96IkvkXLxpeTbB+YXMkXlbukXlo+WNIMhcyBt2Asa+OX6AOY/wgJI4L3oiS8RRGuyydTin4PxCEARBkNMxU9gJgiAIgiAIgiDFyR12giAIgiAIgiDI6Thjxjfh+bneNoryPTHEk0L45RxEhiAIgiAI8pIyT+ObVxPujPSO2da9G7YmLl3jVU2SpPZmPHeYWY+cqj1OtnU1rwWZJB+ABOrEBMUKyHk1XBH5FFLrlSy/OKQut+oAwLel2st5ezeCIAiCIMhySDG+I5cVlwivalL1uN9kWZZtDhlBFsNLYnSJsSwrroMoS8ywybIsy3aHVcm35YnYrpldL7k5ZKSsu3qo8oGIulYFT52uWakH99qLssS4vVDLHAUUkk+VQa9XsvxZIPUqDPcdIBXm5by9G0EQBEEQZFlMG9+8aquiqOu2LMuyNnZdk4i/OuqSTUonom7btsQBcJL3mS/Gu2On4V9h6ih9i6nWA2HDXqNjxnQh9SoTHgnnKH3Lv9bPUTqd4GIkR+lb+W7XnJbvXTjT7/jqGEpwKczmOgOu6SfvD90cLVlIPoX0eiXI90tRbdvWc7jneVXXdV0TGEaQw3/z+vURBEEQBEGQ05Lo+eaq6/0u22g0GmzTvwqSVzXBc+A2e0NGCv3VyemO0mBZ1rvomGVZlvXvUeFrHFimEUZX6DVwmXUv8sHJskxpkAoD7ijzyLMk+aTCgHUMYVhIaIYapgVMzb8ovV7N4yEuJD8PE/Uq2j4kGh3uB3kbnW6327fAGjS73aELVq/Z7e7icXEIgiAIgiALItH4doe7hm+Q+W5Yvsa5Ay/RMSL+alp6MqTCeLY335Y4t8eyXROYNO2c/aHrO7u9Sz0gMNVDeFUT3N4p7kjkqhWz68V5wDi8xOg0h9DSbNu2tap7mvOMk+VnUqReRodl2dhFg7yqy63a+MHFZrtVB/D6s8K4x/uOs7nOWKbhOA6a3giCIAiCIIsi3wuXNOdyTqdz0tcs0wBwDo/TIzocpTtwq5pt27behqEFcRc0r+oSM2jGTFRetUPymLpWPwyCMcM4DyLq2vpx1wu+7h+3IkZzKfIz5CTVqwh8jXP7jU6jOWAkXSREbHHuyCGiqqqqXGWg2lbVFgdMTcWYEwRBEARBkAWS74ZLZ+RCtUIAnHzpKTAVAsbIBaHGg3G4uZ7q+fbCoBuK918i6oJrhkXxqi4xw2ZjwiltdNjcNqszcmE9IT0ea27sD1tajQfDKEt+qhxKvdIhBMYubFIB6/jQC/9pgirLzLDXMIAQ06zXWpw77JlQazHW0DRH+MIlgiAIgiDI4sh51KBhWozQ5r2zocUW5w73nbR0AAA4PHbjbww6I9eLGzF2exYj2bZcg4x3GYko+pHXvCgLjGV6BivhVbu4hZpYL64VlCDWON+P74xc4GpBuAufL+i7gHwqs9WLV20t8mosOEqnEwhwlE6j0VAMAHAcwxgBY/UVwxgB45qKYRgYdYIgCIIgCLI4pq+X51W7dZxg/RFRlQWOAQDX6nU7QVA4NR18Jy7HAABYPbZj+CfvJduWvGpL3PhP/wtjGa476Hf9CA4i6poQ9Zm7g0x7lSY/qv+gGxqt4+Skip1efiJp9aLJ974mV91+IztMhYi6DN2GsqnaNZM9RaQ8giAIgiAIMgPTxuQqMW8AAAAwSURBVPecIaKuVd0cxiyCIAiCIAiC/MhYuPHtxVbILY5h8nmsEQRBEARBEORHwn8B5Kv3YdZD7SEAAAAASUVORK5CYII=" width="980" height="60" class="img_ev3q">
<img loading="lazy" alt="Nginx running on edge node" src="/zh/assets/images/nginx-running-on-edge-c516768eeb5c8d1aa069c57cc897ae3d.png" width="606" height="443" class="img_ev3q"></p><p>The deployment was created successfully and the container ran on the edge side as expected.</p><p>At this point, the core validation loop had been closed:</p><ul><li>dependencies were prepared;</li><li>KubeEdge components were built;</li><li>the node joined CloudCore;</li><li>a basic workload ran successfully on the edge device.</li></ul><hr><h2 class="anchor anchorWithStickyNavbar_LWe7" id="what-this-validation-tells-us">What this validation tells us<a href="#what-this-validation-tells-us" class="hash-link" aria-label="What this validation tells us的直接链接" title="What this validation tells us的直接链接">​</a></h2><p>Based on the observed results, the following conclusions can be drawn for the current stage.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="1-edge-side-dependencies-can-be-installed-on-visionfive2">1. Edge-side dependencies can be installed on VisionFive2<a href="#1-edge-side-dependencies-can-be-installed-on-visionfive2" class="hash-link" aria-label="1. Edge-side dependencies can be installed on VisionFive2的直接链接" title="1. Edge-side dependencies can be installed on VisionFive2的直接链接">​</a></h3><p>The basic runtime stack — including <strong>containerd, runc, crictl, CNI plugins, nerdctl, and buildkit</strong> — can be installed and configured successfully on <strong>Ubuntu 24.04.4 riscv64</strong> running on VisionFive2.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="2-kubeedge-core-components-can-be-built-on-riscv64">2. KubeEdge core components can be built on riscv64<a href="#2-kubeedge-core-components-can-be-built-on-riscv64" class="hash-link" aria-label="2. KubeEdge core components can be built on riscv64的直接链接" title="2. KubeEdge core components can be built on riscv64的直接链接">​</a></h3><p>Both <strong>edgecore</strong> and <strong>keadm</strong> were successfully compiled on the tested RISC-V environment, showing that KubeEdge has a workable source-level build path on this platform.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="3-the-edge-node-can-join-cloudcore-successfully">3. The edge node can join CloudCore successfully<a href="#3-the-edge-node-can-join-cloudcore-successfully" class="hash-link" aria-label="3. The edge node can join CloudCore successfully的直接链接" title="3. The edge node can join CloudCore successfully的直接链接">​</a></h3><p>Using <code>keadm join</code>, the VisionFive2 node was able to join the cloud side and report normal status, which confirms that the <strong>basic cloud-edge access path is feasible on RISC-V</strong>.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="4-basic-workloads-can-run-on-the-edge-side">4. Basic workloads can run on the edge side<a href="#4-basic-workloads-can-run-on-the-edge-side" class="hash-link" aria-label="4. Basic workloads can run on the edge side的直接链接" title="4. Basic workloads can run on the edge side的直接链接">​</a></h3><p>The successful deployment of Nginx shows that this environment is not only able to build and connect, but also able to support <strong>basic containerized workloads</strong>.</p><hr><h2 class="anchor anchorWithStickyNavbar_LWe7" id="final-takeaway">Final takeaway<a href="#final-takeaway" class="hash-link" aria-label="Final takeaway的直接链接" title="Final takeaway的直接链接">​</a></h2><p>From this round of validation, I would summarize the current state in three words:</p><ul><li><strong>buildable</strong>;</li><li><strong>joinable</strong>;</li><li><strong>runnable</strong>.</li></ul><p>In other words, <strong>KubeEdge already demonstrates basic usability on VisionFive2 under the tested RISC-V environment</strong>.</p><p>That does not mean the platform is fully validated for all edge scenarios yet. But it does mean that the most important first step has been crossed: <strong>the core deployment path works</strong>.</p><p>For anyone interested in bringing KubeEdge to RISC-V devices, this should be a useful starting point.</p><hr><h2 class="anchor anchorWithStickyNavbar_LWe7" id="current-limitations-and-next-steps">Current limitations and next steps<a href="#current-limitations-and-next-steps" class="hash-link" aria-label="Current limitations and next steps的直接链接" title="Current limitations and next steps的直接链接">​</a></h2><p>It is also important to keep the conclusion within the right boundary.</p><p>This validation proves <strong>basic feasibility</strong>, not <strong>full production readiness</strong>.</p><p>Several areas still need follow-up work:</p><ul><li>broader workload compatibility testing;</li><li>systematic verification of networking features such as Service, DNS, and deeper CNI behavior;</li><li>disconnection, reconnection, and recovery testing;</li><li>long-duration stability observation on real hardware;</li><li>validation across more RISC-V boards and software combinations.</li></ul><p>These will be the more meaningful next steps if we want to move from “it works” to “it is reliable enough for real-world edge scenarios.”</p><hr><h2 class="anchor anchorWithStickyNavbar_LWe7" id="conclusion">Conclusion<a href="#conclusion" class="hash-link" aria-label="Conclusion的直接链接" title="Conclusion的直接链接">​</a></h2><p>This validation on <strong>VisionFive2</strong> shows that <strong>KubeEdge v1.21.0</strong> can complete the basic end-to-end deployment path on <strong>Ubuntu 24.04.4 riscv64</strong>:</p><ul><li>the runtime environment can be prepared;</li><li>core components can be built;</li><li>the edge node can join the cloud side;</li><li>a basic workload can run successfully.</li></ul><p>For the RISC-V ecosystem, this is a small but concrete step forward.</p><p>And for KubeEdge on emerging architectures, it provides a practical reference point for deeper verification work ahead.</p>]]></content>
        <author>
            <name>Baiye</name>
            <uri>https://github.com/ddc-baiye</uri>
        </author>
        <category label="KubeEdge" term="KubeEdge"/>
        <category label="RISC-V" term="RISC-V"/>
        <category label="VisionFive2" term="VisionFive2"/>
        <category label="edge computing" term="edge computing"/>
        <category label="validation" term="validation"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[Embodied Intelligence meets KubeEdge-Ianvs: Industrial Assembly Benchmarking]]></title>
        <id>https://kubeedge.io/zh/blog/cncf-lfx-EAI-benchmarking/EAI-meets-KubeEdge-Ianvs</id>
        <link href="https://kubeedge.io/zh/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="/zh/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="Video Explanation的直接链接" title="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="YOLO Detection Predictions的直接链接" title="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="/zh/assets/images/yolo_predictions3-bfa085ba706c089a4fa962d9ed12726b.jpg" width="635" height="740" class="img_ev3q"></td><td><img loading="lazy" alt="YOLO Predictions - Sample 2" src="/zh/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="Model Performance Analysis的直接链接" title="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="/zh/assets/images/F1-confidence_curve-11d5342d6fb1778ca34a84f0b7181e46.jpg" width="853" height="563" class="img_ev3q"></td><td><img loading="lazy" alt="Precision-Confidence Curve" src="/zh/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="Dataset Analysis的直接链接" title="Dataset Analysis的直接链接">​</a></h3><table><thead><tr><th></th><th></th></tr></thead><tbody><tr><td><img loading="lazy" alt="Labels Distribution" src="/zh/assets/images/labels-767d7626e4a46daffb5e04198946b4c5.jpg" width="731" height="735" class="img_ev3q"></td><td><img loading="lazy" alt="Label Correlations" src="/zh/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="Why Embodied Intelligence Benchmarking for Industrial Manufacturing?的直接链接" title="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="A First-of-Its-Kind Benchmark Addressing Critical Gaps的直接链接" title="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="Current Limitations in the Field:的直接链接" title="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="What Makes This Project Unique:的直接链接" title="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="Addressing Real Industrial Needs的直接链接" title="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="Contents:的直接链接" title="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="Prerequisites的直接链接" title="Prerequisites的直接链接">​</a></h2><h3 class="anchor anchorWithStickyNavbar_LWe7" id="system-requirements">System Requirements:<a href="#system-requirements" class="hash-link" aria-label="System Requirements:的直接链接" title="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="Knowledge Requirements:的直接链接" title="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="Dataset Setup的直接链接" title="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="Download the Dataset的直接链接" title="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="复制代码到剪贴板" title="复制" 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="复制代码到剪贴板" title="复制" 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="Dataset Structure的直接链接" title="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="复制代码到剪贴板" title="复制" 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="Algorithm Integration的直接链接" title="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="1-perception-module-perceptionpy的直接链接" title="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="2-manipulation-module-manipulationpy的直接链接" title="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="3-verification-module-perceptionpy的直接链接" title="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="Results的直接链接" title="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="Comprehensive Performance Report的直接链接" title="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="复制代码到剪贴板" title="复制" 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="Per-Component Performance Metrics的直接链接" title="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="复制代码到剪贴板" title="复制" 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="Metric Definitions:的直接链接" title="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="Training Performance Analysis的直接链接" title="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="Model Performance &amp; Dataset Analysis的直接链接" title="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="/zh/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="/zh/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="/zh/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="/zh/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="/zh/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="/zh/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="YOLO Detection Predictions的直接链接" title="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="/zh/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="/zh/assets/images/yolo_predictions3-bfa085ba706c089a4fa962d9ed12726b.jpg" width="635" height="740" class="img_ev3q"></td><td><img loading="lazy" alt="YOLO Predictions - Sample 2" src="/zh/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="Validation Results的直接链接" title="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="Key Achievements and Community Impact的直接链接" title="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="1. Comprehensive Multimodal Dataset的直接链接" title="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="2. End-to-End Evaluation Infrastructure的直接链接" title="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="3. Reproducible Baseline Algorithms的直接链接" title="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="4. Standardized Performance Metrics的直接链接" title="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="Technical Insights and Future Directions的直接链接" title="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="Current Capabilities:的直接链接" title="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="Improvement Opportunities:的直接链接" title="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="Future Enhancements的直接链接" title="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="How to Enable Embodied Intelligence Benchmarking with KubeEdge-Ianvs的直接链接" title="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="Getting Started with Your Own Benchmarks的直接链接" title="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="Ianvs Installation的直接链接" title="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="1. Download the Ianvs codebase的直接链接" title="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="复制代码到剪贴板" title="复制" 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="2. Create and activate a virtual environment的直接链接" title="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="复制代码到剪贴板" title="复制" 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="3. Install system dependencies and Python packages的直接链接" title="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="复制代码到剪贴板" title="复制" 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="4. Install benchmark-specific requirements的直接链接" title="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="复制代码到剪贴板" title="复制" 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="5. Install Ianvs的直接链接" title="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="复制代码到剪贴板" title="复制" 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="Benchmark Configuration的直接链接" title="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="复制代码到剪贴板" title="复制" 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="Configure Dataset Paths的直接链接" title="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="复制代码到剪贴板" title="复制" 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="Run Benchmarking的直接链接" title="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="复制代码到剪贴板" title="复制" 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="Conclusion的直接链接" title="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.0 版本发布！]]></title>
        <id>https://kubeedge.io/zh/blog/release-v1.22</id>
        <link href="https://kubeedge.io/zh/blog/release-v1.22"/>
        <updated>2025-11-11T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[北京时间2025年11月4日，KubeEdge 发布1.22.0版本。新版本对 Beehive 框架以及 Device Model做了优化升级，同时对边缘资源管理能力做了提升。]]></summary>
        <content type="html"><![CDATA[<p>北京时间2025年11月4日，KubeEdge 发布1.22.0版本。新版本对 Beehive 框架以及 Device Model做了优化升级，同时对边缘资源管理能力做了提升。</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="kubeedge-v122-新增特性">KubeEdge v1.22 新增特性：<a href="#kubeedge-v122-新增特性" class="hash-link" aria-label="KubeEdge v1.22 新增特性：的直接链接" title="KubeEdge v1.22 新增特性：的直接链接">​</a></h2><ul><li><a href="#%E6%96%B0%E5%A2%9E-holdrelease-%E6%9C%BA%E5%88%B6%E6%8E%A7%E5%88%B6%E8%BE%B9%E7%BC%98%E8%B5%84%E6%BA%90%E6%9B%B4%E6%96%B0">新增 hold/release 机制控制边缘资源更新</a></li><li><a href="#beehive%E6%A1%86%E6%9E%B6%E5%8D%87%E7%BA%A7%E6%94%AF%E6%8C%81%E9%85%8D%E7%BD%AE%E5%AD%90%E6%A8%A1%E5%9D%97%E9%87%8D%E5%90%AF%E7%AD%96%E7%95%A5">Beehive 框架升级，支持配置子模块重启策略</a></li><li><a href="#%E5%9F%BA%E4%BA%8E%E7%89%A9%E6%A8%A1%E5%9E%8B%E4%B8%8E%E4%BA%A7%E5%93%81%E6%A6%82%E5%BF%B5%E7%9A%84%E8%AE%BE%E5%A4%87%E6%A8%A1%E5%9E%8B%E8%83%BD%E5%8A%9B%E5%8D%87%E7%BA%A7">基于物模型与产品概念的设备模型能力升级</a></li><li><a href="#%E8%BE%B9%E7%BC%98%E8%BD%BB%E9%87%8F%E5%8C%96kubelet%E6%96%B0%E5%A2%9E-pod-resources-server-%E5%92%8C-csi-plugin-%E7%89%B9%E6%80%A7%E5%BC%80%E5%85%B3">边缘轻量化Kubelet新增 Pod Resources Server 和 CSI Plugin 特性开关</a></li><li><a href="#c%E8%AF%AD%E8%A8%80%E7%89%88%E6%9C%ACmapper-framework%E6%94%AF%E6%8C%81">C语言版本Mapper-Framework 支持</a></li><li><a href="#%E5%8D%87%E7%BA%A7k8s%E4%BE%9D%E8%B5%96%E5%88%B0131">升级K8s依赖到1.31</a></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="新特性概览">新特性概览<a href="#新特性概览" class="hash-link" aria-label="新特性概览的直接链接" title="新特性概览的直接链接">​</a></h2><h3 class="anchor anchorWithStickyNavbar_LWe7" id="新增-holdrelease-机制控制边缘资源更新">新增 hold/release 机制控制边缘资源更新<a href="#新增-holdrelease-机制控制边缘资源更新" class="hash-link" aria-label="新增 hold/release 机制控制边缘资源更新的直接链接" title="新增 hold/release 机制控制边缘资源更新的直接链接">​</a></h3><p>在自动驾驶、无人机和机器人等应用场景中，我们希望在边缘能够控制对边缘资源的更新，以确保在未得到边缘设备管理员的许可下，这些资源无法被更新。在1.22.0版本中，我们引入了 <code>hold/release</code> 机制来管理边缘资源的更新。</p><p>在云端，用户可以通过对 <code>Deployment</code>、<code>StatefulSet</code> 和 <code>DaemonSet</code> 等资源添加 <code>edge.kubeedge.io/hold-upgrade: "true"</code> 的 annotation，表示对应的 Pod 在边缘更新需要被hold。</p><p>在边缘，被标记了 <code>edge.kubeedge.io/hold-upgrade: "true"</code> 的Pod会被暂缓被处理。边缘管理员可以通过执行以下命令来释放对该Pod的锁，完成资源更新。</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="复制代码到剪贴板" title="复制" 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>也可以执行以下命令解锁边缘节点上所有被hold的边缘资源。</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="复制代码到剪贴板" title="复制" 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>备注</div><div class="admonitionContent_S0QG"><p>使用 keadm ctl 命令需要启动 DynamicController 和 MetaServer 开关。</p></div></div><p><strong>更多信息可参考：</strong></p><p><a href="https://github.com/kubeedge/kubeedge/pull/6348" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubeedge/pull/6348</a>
<a href="https://github.com/kubeedge/kubeedge/pull/6418" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubeedge/pull/6418</a></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="beehive框架升级支持配置子模块重启策略">Beehive框架升级，支持配置子模块重启策略<a href="#beehive框架升级支持配置子模块重启策略" class="hash-link" aria-label="Beehive框架升级，支持配置子模块重启策略的直接链接" title="Beehive框架升级，支持配置子模块重启策略的直接链接">​</a></h3><p>在1.17版本中，我们实现了 EdgeCore 模块的自重启，可以通过全局配置来设置边缘模块的重启。在1.22版本中，我们对 Beehive 框架进行了升级优化，支持边缘子模块级别的重启策略配置。同时我们统一了 Beehive 各子模块启动的错误处理方式，对子模块能力标准化。</p><p><strong>更多信息可参考：</strong></p><p><a href="https://github.com/kubeedge/kubeedge/pull/6444" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubeedge/pull/6444</a>
<a href="https://github.com/kubeedge/kubeedge/pull/6445" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubeedge/pull/6445</a></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="基于物模型与产品概念的设备模型能力升级">基于物模型与产品概念的设备模型能力升级<a href="#基于物模型与产品概念的设备模型能力升级" class="hash-link" aria-label="基于物模型与产品概念的设备模型能力升级的直接链接" title="基于物模型与产品概念的设备模型能力升级的直接链接">​</a></h3><p>目前的 Device Model 基于物模型概念设计，而在传统IoT中，设备通常采用物模型、产品和设备实例三层结构进行设计，可能导致用户在实际使用中产生困惑。</p><p>在 1.22.0 版本中，我们结合物模型与实际产品的概念，对设备模型的设计进行了升级。从现有的设备实例中提取了<code>protocolConfigData</code>, <code>visitors</code> 字段到设备模型中，设备实例可以共享这些模型配置。同时，为了降低模型分离的成本，设备实例可以重写覆盖以上配置。</p><p><strong>更多信息可参考：</strong></p><p><a href="https://github.com/kubeedge/kubeedge/pull/6457" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubeedge/pull/6457</a>
<a href="https://github.com/kubeedge/kubeedge/pull/6458" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubeedge/pull/6458</a></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="边缘轻量化kubelet新增-pod-resources-server-和-csi-plugin-特性开关">边缘轻量化Kubelet新增 Pod Resources Server 和 CSI Plugin 特性开关<a href="#边缘轻量化kubelet新增-pod-resources-server-和-csi-plugin-特性开关" class="hash-link" aria-label="边缘轻量化Kubelet新增 Pod Resources Server 和 CSI Plugin 特性开关的直接链接" title="边缘轻量化Kubelet新增 Pod Resources Server 和 CSI Plugin 特性开关的直接链接">​</a></h3><p>在之前的版本中，我们在 EdgeCore 集成的轻量化 Kubelet 中移除了<code>Pod Resources Server</code>能力，但在一些使用场景中，用户希望恢复该能力以实现对Pod的监控等。同时，由于 Kubelet 默认启动<code>CSI Plugin</code>，离线环境下启动 EdgeCore 会由于 CSINode 创建失败而导致失败。</p><p>在 1.22.0 版本中，我们在轻量化 Kubelet 中新增了 Pod Resources Server 和 CSI Plugin 特性开关，如果您需要启用 Pod Resources Server 或关闭 CSI Plugin，您可以在 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">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="复制代码到剪贴板" title="复制" 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>更多信息可参考：</strong></p><p><a href="https://github.com/kubeedge/kubernetes/pull/12" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubernetes/pull/12</a>
<a href="https://github.com/kubeedge/kubernetes/pull/13" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubernetes/pull/13</a>
<a href="https://github.com/kubeedge/kubeedge/pull/6452" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubeedge/pull/6452</a></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="c语言版本mapper-framework支持">C语言版本Mapper-Framework支持<a href="#c语言版本mapper-framework支持" class="hash-link" aria-label="C语言版本Mapper-Framework支持的直接链接" title="C语言版本Mapper-Framework支持的直接链接">​</a></h3><p>在1.20.0版本中，我们在原有的go语言版本Mapper工程基础上，新增了Java版本的Mapper-Framework。由于边缘IoT设备通信协议的多样性，很多边缘设备驱动协议都是基于C语言实现的，因此在新版本中，KubeEdge提供了C语言版本的Mapper-Framework，用户可以访问KubeEdge主仓库的<code>feature-multilingual-mapper-c</code>分支，利用Mapper-Framework生成C语言版本的自定义Mapper工程。</p><p><strong>更多信息可参考：</strong></p><p><a href="https://github.com/kubeedge/kubeedge/pull/6405" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubeedge/pull/6405</a>
<a href="https://github.com/kubeedge/kubeedge/pull/6455" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubeedge/pull/6455</a></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="升级k8s依赖到131">升级K8s依赖到1.31<a href="#升级k8s依赖到131" class="hash-link" aria-label="升级K8s依赖到1.31的直接链接" title="升级K8s依赖到1.31的直接链接">​</a></h3><p>新版本将依赖的Kubernetes版本升级到v1.31.12，您可以在云和边缘使用新版本的特性。</p><p><strong>更多信息可参考：</strong></p><p><a href="https://github.com/kubeedge/kubeedge/pull/6443" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubeedge/pull/6443</a></p>]]></content>
        <author>
            <name>KubeEdge SIG Release</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="iot" term="iot"/>
        <category label="iiot" term="iiot"/>
        <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.0 版本发布！]]></title>
        <id>https://kubeedge.io/zh/blog/release-v1.21</id>
        <link href="https://kubeedge.io/zh/blog/release-v1.21"/>
        <updated>2025-06-28T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[北京时间2025年6月28日，KubeEdge发布1.21.0版本。新版本对节点任务框架（节点升级、镜像预下载）做了全面更新，并新增云端更新边缘配置的能力，同时Dashboard新增对keink的集成，支持一键部署，在易用性、管理运维能力上做了全面增强。]]></summary>
        <content type="html"><![CDATA[<p>北京时间2025年6月28日，KubeEdge发布1.21.0版本。新版本对节点任务框架（节点升级、镜像预下载）做了全面更新，并新增云端更新边缘配置的能力，同时Dashboard新增对keink的集成，支持一键部署，在易用性、管理运维能力上做了全面增强。</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="kubeedge-v121-新增特性">KubeEdge v1.21 新增特性：<a href="#kubeedge-v121-新增特性" class="hash-link" aria-label="KubeEdge v1.21 新增特性：的直接链接" title="KubeEdge v1.21 新增特性：的直接链接">​</a></h2><ul><li><a href="#%E5%85%A8%E6%96%B0%E8%8A%82%E7%82%B9%E4%BB%BB%E5%8A%A1API%E4%BB%A5%E5%8F%8A%E5%AE%9E%E7%8E%B0">全新节点任务API以及实现</a></li><li><a href="#%E8%8A%82%E7%82%B9%E7%BB%84%E6%B5%81%E9%87%8F%E9%97%AD%E7%8E%AF%E4%BC%98%E5%8C%96">节点组流量闭环优化</a></li><li><a href="#%E6%94%AF%E6%8C%81%E5%9C%A8%E4%BA%91%E7%AB%AF%E6%9B%B4%E6%96%B0%E8%BE%B9%E7%BC%98%E9%85%8D%E7%BD%AE">支持在云端更新边缘配置</a></li><li><a href="#%E9%9B%86%E6%88%90kubeedgekeink%E6%94%AF%E6%8C%81%E4%B8%80%E9%94%AE%E9%83%A8%E7%BD%B2Dashboard">集成kubeedge/keink，支持一键部署Dashboard</a></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="新特性概览">新特性概览<a href="#新特性概览" class="hash-link" aria-label="新特性概览的直接链接" title="新特性概览的直接链接">​</a></h2><h3 class="anchor anchorWithStickyNavbar_LWe7" id="全新节点任务api以及实现">全新节点任务API以及实现<a href="#全新节点任务api以及实现" class="hash-link" aria-label="全新节点任务API以及实现的直接链接" title="全新节点任务API以及实现的直接链接">​</a></h3><p>当前KubeEdge中的节点任务资源（节点升级、镜像预下载）的状态设计较为复杂，可读性较差。此外，在执行节点任务的过程中，一些错误不会被记录到状态中导致无法定位任务失败的原因。因此我们对节点状态和运行流程进行了重新设计，设计目标如下：</p><ul><li>定义一个新的节点任务的状态结构，使其更易于用户和开发者理解</li><li>跟踪整个流程的错误信息，将其写入状态中展示</li><li>开发一个更合理的节点任务流程框架</li></ul><p>在新的设计中，节点任务的状态由总阶段（phase）和各节点执行任务的状态（nodeStatus）组成。节点任务的阶段（phase）有四个枚举值分别为：Init、InProgress、Completed或Failure，该值通过每个节点的执行状态计算所得。
节点执行任务的状态由阶段（phase）、节点执行的动作流（actionFlow）、节点名称（nodeName）、执行动作流以外的错误原因（reason）以及业务相关的一些字段（如镜像预下载任务的每个镜像下载状态）组成。节点执行任务的阶段（phase）有五个枚举值分别为：Pending、InProgress、Successful、Failure和Unknown。动作流是一个数组结构，记录了每个动作（action）的执行结果，状态（Status）复用了Kubernetes的ConditionStatus，用True和False表示动作的成功或失败，并且记录了动作的失败原因（reason）和执行时间（time）。</p><p>节点升级任务的状态YAML样例如下：</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="复制代码到剪贴板" title="复制" 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多实例导致的节点任务更新产生并发冲突，我们将节点任务的初始化和节点任务的状态计算放在ControllerManager中处理，因为ControllerManager总是单实例运行的。具体流程如下：</p><ul><li>当节点任务CR被创建后，ControllerManager会初始化匹配的节点的状态；</li><li>CloudCore只会处理ControllerManager处理过的节点任务资源，通过执行器（Executor）和下行控制器（DownstreamController）将节点任务下发给节点；</li><li>EdgeCore接收到节点任务后，通过运行器（Runner）执行动作，并将每个动作的执行结果上报给CloudCore；</li><li>CloudCore通过上行控制器（UpstreamController）接收动作运行的结果并将结果更新到节点任务的状态中；</li><li>ControllerManager监听节点任务资源的变化计算整个节点任务的状态进行更新。</li></ul><p>在整个处理流程中，我们将流程中可能产生的错误都记录并更新到了节点任务资源状态的原因字段中。</p><p><strong>更多信息可参考:</strong></p><p><a href="https://github.com/kubeedge/kubeedge/pull/6082" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubeedge/pull/6082</a>
<a href="https://github.com/kubeedge/kubeedge/pull/6084" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubeedge/pull/6084</a></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="节点组流量闭环优化">节点组流量闭环优化<a href="#节点组流量闭环优化" class="hash-link" aria-label="节点组流量闭环优化的直接链接" title="节点组流量闭环优化的直接链接">​</a></h3><p>在 KubeEdge 1.21.0 中，我们对节点组的流量闭环功能进行了全面优化，使其功能更完善、使用更灵活。这一功能的核心能力是：<strong>通过一个 Service 实现“节点组内应用只能访问同组内应用服务，无法访问其他节点组的服务。借助该机制，用户可以轻松实现边缘多区域间的网络隔离，确保不同区域的应用服务之间互不干扰。</strong></p><p>应用场景举例：</p><p>以连锁门店为例，企业可将全国各地的门店按区域划分为多个节点组（如华东、华北、西南等），每个区域的门店部署相同类型的应用（如库存管理、收银系统），但业务数据互相隔离。通过流量闭环功能，系统可自动限制服务访问范围，仅在节点组内互通，避免跨区域访问，无需额外配置网络策略。
流量闭环功能为可选项。如果用户不希望开启节点组间的流量隔离，只需在 EdgeApplication 中不配置 Service 模板，系统则不会启用该能力，应用依然可以按原有方式进行通信。</p><p>使用样例</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"> NodeGroup</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"> beijing</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">nodes</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"> node</span><span class="token punctuation" style="color:#393A34">-</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 punctuation" style="color:#393A34">-</span><span class="token plain"> node</span><span class="token punctuation" style="color:#393A34">-</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 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">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"> NodeGroup</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"> shanghai</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">nodes</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"> node</span><span class="token punctuation" style="color:#393A34">-</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 punctuation" style="color:#393A34">-</span><span class="token plain"> node</span><span class="token punctuation" style="color:#393A34">-</span><span class="token number" style="color:#36acaa">4</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">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"> test</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">service</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">workloadScope</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">targetNodeGroups</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">name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> beijing</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">resourcesOverriders</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">containerName</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> container</span><span class="token punctuation" style="color:#393A34">-</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">value</span><span class="token punctuation" 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"></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">name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> shanghai</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">resourcesOverriders</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">containerName</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> container</span><span class="token punctuation" style="color:#393A34">-</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">value</span><span class="token punctuation" 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"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">workloadTemplate</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">manifests</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">apiVersion</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> v1</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"> Service</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"> test</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">service</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">ipFamilies</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"> IPv4</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          </span><span class="token key atrule" style="color:#00a4db">ports</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">name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> tcp</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">              </span><span class="token key atrule" style="color:#00a4db">port</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">80</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">protocol</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> TCP</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">              </span><span class="token key atrule" style="color:#00a4db">targetPort</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">80</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">selector</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">app</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> test</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">service</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          </span><span class="token key atrule" style="color:#00a4db">sessionAffinity</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> None</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          </span><span class="token key atrule" style="color:#00a4db">type</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> ClusterIP</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">apiVersion</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> apps/v1</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"> Deployment</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">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">kant.io/app</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">name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> test</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">service</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">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">selector</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">app</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> test</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">service</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          </span><span class="token key atrule" style="color:#00a4db">template</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">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">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">app</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> test</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">service</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">containers</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">name</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> container</span><span class="token punctuation" style="color:#393A34">-</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 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">terminationGracePeriodSeconds</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">30</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">tolerations</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">effect</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> NoSchedule</span><br></span><span class="token-line" style="color:#393A34"><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"> node</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">role.kubernetes.io/edge</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"> Exists</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" 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>更多信息可参考:</strong></p><p><a href="https://github.com/kubeedge/kubeedge/pull/6097" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubeedge/pull/6097</a>
<a href="https://github.com/kubeedge/kubeedge/pull/6077" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubeedge/pull/6077</a></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="支持在云端更新边缘配置">支持在云端更新边缘配置<a href="#支持在云端更新边缘配置" class="hash-link" aria-label="支持在云端更新边缘配置的直接链接" title="支持在云端更新边缘配置的直接链接">​</a></h3><p>相较于登录每个边缘节点手动更新EdgeCore的配置文件edgecore.yaml，能够直接从云端更新edgecorer.yaml要更便利。尤其是对于批量节点操作，同时更新多个边缘节点的配置文件，能够提高管理效率，节约很多运维成本。</p><p>在v1.21.0中，我们引入了ConfigUpdateJob CRD，允许用户在云端更新边缘节点的配置文件。CRD中的updateFields用于指定需要更新的配置项。</p><p>CRD示例：</p><div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">apiVersion</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> 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="复制代码到剪贴板" title="复制" 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>备注</div><div class="admonitionContent_S0QG"><ul><li>该特性在1.21中默认关闭，如需使用，请启动云端的controllermamager和taskmanager以及边缘端的taskmanager模块</li><li>更新边缘配置会涉及EdgeCore重启</li></ul></div></div><p><strong>更多信息可参考:</strong></p><p><a href="https://github.com/kubeedge/kubeedge/pull/6338" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubeedge/pull/6338</a></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="集成kubeedgekeink支持一键部署dashboard">集成kubeedge/keink，支持一键部署Dashboard<a href="#集成kubeedgekeink支持一键部署dashboard" class="hash-link" aria-label="集成kubeedge/keink，支持一键部署Dashboard的直接链接" title="集成kubeedge/keink，支持一键部署Dashboard的直接链接">​</a></h3><p>新版本对Dashboard进行了增强，为 KubeEdge 控制面板设计了一个 BFF（Backend for Frontend）层，以连接前端用户界面层和 KubeEdge 后端 API。它作为数据传输和处理中心，提供专用的后端服务，简化了前端的数据检索逻辑，提高了性能和安全性。此外，为了让开发人员快速体验和部署kubeedge，我们与 kubeedge/keink 项目深度集成。只需一键操作，在 dashboard 上就能快速启动 kubeedge环境，对其功能进行完整的演示和验证。</p><p><img loading="lazy" src="/zh/assets/images/dashboard-integrate-keink-d88d35a8f3591898a5a539ef3932c647.png" width="1856" height="966" class="img_ev3q"></p><p><img loading="lazy" src="/zh/assets/images/dashboard-integrate-keink-2-b5d90c4b990ed4be811b6f2388fa3b38.png" width="1170" height="825" class="img_ev3q"></p><p><strong>更多信息可参考:</strong>
<a href="https://github.com/kubeedge/dashboard/pull/50" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/dashboard/pull/50</a></p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="版本升级注意事项">版本升级注意事项<a href="#版本升级注意事项" class="hash-link" aria-label="版本升级注意事项的直接链接" title="版本升级注意事项的直接链接">​</a></h2><h3 class="anchor anchorWithStickyNavbar_LWe7" id="节点任务">节点任务<a href="#节点任务" class="hash-link" aria-label="节点任务的直接链接" title="节点任务的直接链接">​</a></h3><p>新版本默认开启v1alpha2版本的节点任务，CRD定义会向下兼容，如果想继续使用v1alpha1版本的NodeUpgradeJob和ImagePrePullJob，可以通过设置ControllerManager和CloudCore的特性门切换。</p><p>ControllerManager 添加启动参数</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">--feature-gates=disableNodeTaskV1alpha2</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" 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 修改配置文件</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">kubectl edit configmap -n kubeedge cloudcore</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" 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>修改配置内容：</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">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><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" 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>备注</div><div class="admonitionContent_S0QG"><p>v1alpha2版本节点任务的CRD能兼容v1alpha1，但是它们不能相互切换，v1alpha1的代码逻辑会破坏v1alpha2 节点任务CR的数据。</p></div></div><p>v1alpha1的节点任务基本不会再进行维护，v1.23版本后将删除v1alpha1版本节点任务的相关代码。另外，节点任务在边端已成为一个默认关闭的Beehive模块，如果要正常使用节点任务功能的话，需要修改边端edgecore.yaml配置文件开启：</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">+     enbale</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="复制代码到剪贴板" title="复制" 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="边缘节点升级">边缘节点升级<a href="#边缘节点升级" class="hash-link" aria-label="边缘节点升级的直接链接" title="边缘节点升级的直接链接">​</a></h3><p>我们对Keadm边缘节点升级的相关命令（备份、升级、回滚）做了调整：</p><ul><li>升级命令不会自动执行备份命令，备份命令需要手动触发；</li><li>升级命令隐藏了业务相关的参数，v1.23版本后会清理废弃的代码；</li><li>升级的相关命令都使用三级命令：</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"> 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="复制代码到剪贴板" title="复制" 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>]]></content>
        <author>
            <name>KubeEdge SIG Release</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="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.0 版本发布！]]></title>
        <id>https://kubeedge.io/zh/blog/release-v1.20</id>
        <link href="https://kubeedge.io/zh/blog/release-v1.20"/>
        <updated>2025-01-21T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[北京时间2025年1月21日，KubeEdge发布1.20.0版本。新版本针对大规模、离线等边缘场景对边缘节点和应用的管理、运维等能力进行了增强，同时新增了多语言Mapper-Framework的支持。]]></summary>
        <content type="html"><![CDATA[<p>北京时间2025年1月21日，KubeEdge发布1.20.0版本。新版本针对大规模、离线等边缘场景对边缘节点和应用的管理、运维等能力进行了增强，同时新增了多语言Mapper-Framework的支持。</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="kubeedge-v120-新增特性">KubeEdge v1.20 新增特性：<a href="#kubeedge-v120-新增特性" class="hash-link" aria-label="KubeEdge v1.20 新增特性：的直接链接" title="KubeEdge v1.20 新增特性：的直接链接">​</a></h2><ul><li><a href="#%E6%94%AF%E6%8C%81%E6%89%B9%E9%87%8F%E8%8A%82%E7%82%B9%E6%93%8D%E4%BD%9C">支持批量节点操作</a></li><li><a href="#%E5%A4%9A%E8%AF%AD%E8%A8%80mapper-framework%E6%94%AF%E6%8C%81">多语言 Mapper-Framework 支持</a></li><li><a href="#%E8%BE%B9%E7%BC%98keadm-ctl%E6%96%B0%E5%A2%9E-pods-logsexecdescribe-%E5%92%8C-devices-geteditdescribe-%E8%83%BD%E5%8A%9B">边缘 keadm ctl 新增 pods logs/exec/describe 和 Devices get/edit/describe 能力</a></li><li><a href="#%E8%A7%A3%E8%80%A6%E8%BE%B9%E7%BC%98%E5%BA%94%E7%94%A8%E4%B8%8E%E8%8A%82%E7%82%B9%E7%BB%84%E6%94%AF%E6%8C%81%E4%BD%BF%E7%94%A8node-labelselector">解耦边缘应用与节点组，支持使用Node LabelSelector</a></li><li><a href="#%E8%BE%B9%E4%BA%91%E9%80%9A%E9%81%93%E6%94%AF%E6%8C%81ipv6">边云通道支持IPv6</a></li><li><a href="#%E5%8D%87%E7%BA%A7k8s%E4%BE%9D%E8%B5%96%E5%88%B0130">升级k8s依赖到1.30</a></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="新特性概览">新特性概览<a href="#新特性概览" class="hash-link" aria-label="新特性概览的直接链接" title="新特性概览的直接链接">​</a></h2><h3 class="anchor anchorWithStickyNavbar_LWe7" id="支持批量节点操作">支持批量节点操作<a href="#支持批量节点操作" class="hash-link" aria-label="支持批量节点操作的直接链接" title="支持批量节点操作的直接链接">​</a></h3><p>在之前的版本中，keadm工具仅支持单个节点的安装与管理，然而在边缘场景中，节点数量通常比较庞大，单个节点的管理难以满足大规模场景的需求。</p><p>在1.20版本中，我们提供了批量节点操作和运维的能力。基于这个能力，用户仅需要使用一个配置文件，即可通过一个控制节点（控制节点可以登录所有边缘节点）对所有边缘节点进行批量操作和维护。keadm当前版本支持的批量能力包括join, reset和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"># 配置文件配置要求参考如下</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"># 配置文件参考用例 (各字段具体值请根据实际环境进行配置)</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"># 用法 (保存以上文件，例如保存为 config.yaml)</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># 在控制节点下载最新版本 keadm</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">keadm batch -c config.yaml</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" 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>更多信息可参考:</strong></p><p><a href="https://github.com/kubeedge/kubeedge/pull/5988" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubeedge/pull/5988</a>
<a href="https://github.com/kubeedge/kubeedge/pull/5968" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubeedge/pull/5968</a>
<a href="https://github.com/kubeedge/website/pull/657" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/website/pull/657</a></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="多语言mapper-framework支持">多语言Mapper-Framework支持<a href="#多语言mapper-framework支持" class="hash-link" aria-label="多语言Mapper-Framework支持的直接链接" title="多语言Mapper-Framework支持的直接链接">​</a></h3><p>由于边缘IoT设备通信协议的多样性，用户可能需要使用Mapper-Framework生成自定义Mapper插件来纳管边缘设备。当前Mapper-Framework只能生成go语言版本的Mapper工程，对于部分不熟悉go语言的开发者来说使用门槛仍然较高。因此在新版本中，KubeEdge提供了Java版本的Mapper-Framework，用户可以访问 KubeEdge主仓库 的 <code>feature-multilingual-mapper</code> 分支，利用 Mapper-Framework 生成 Java 版的自定义 Mapper 工程。</p><p><strong>更多信息可参考:</strong></p><p><a href="https://github.com/kubeedge/kubeedge/pull/5773" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubeedge/pull/5773</a>
<a href="https://github.com/kubeedge/kubeedge/pull/5900" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubeedge/pull/5900</a></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="边缘keadm-ctl新增-pods-logsexecdescribe-和-devices-geteditdescribe-能力">边缘keadm ctl新增 pods logs/exec/describe 和 Devices get/edit/describe 能力<a href="#边缘keadm-ctl新增-pods-logsexecdescribe-和-devices-geteditdescribe-能力" class="hash-link" aria-label="边缘keadm ctl新增 pods logs/exec/describe 和 Devices get/edit/describe 能力的直接链接" title="边缘keadm ctl新增 pods logs/exec/describe 和 Devices get/edit/describe 能力的直接链接">​</a></h3><p>在v1.17.0版本中，我们新增了keadm ctl子命令，支持在离线场景下对边缘pod进行查询和重启。在v1.20中我们对该命令做了进一步增强，支持pod的logs/exec/describe等功能，用户在边缘可对pod进行日志查询、pod资源详细信息查询、进入容器内部等操作。同时还新增了对device的操作，支持device的get/edit/describe的功能，可以在边缘获取device列表、device的详细信息查询、在边缘离线场景下对device进行编辑操作。</p><p>如下所示，新增的keadm ctl子命令功能均在MetaServer中开放了Restful接口，并与K8s ApiServer对应的接口完全兼容。</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="复制代码到剪贴板" title="复制" 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>更多信息可参考：</strong></p><p><a href="https://github.com/kubeedge/kubeedge/pull/5752" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubeedge/pull/5752</a>
<a href="https://github.com/kubeedge/kubeedge/pull/5901" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubeedge/pull/5901</a></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="解耦边缘应用与节点组支持使用node-labelselector">解耦边缘应用与节点组，支持使用Node LabelSelector<a href="#解耦边缘应用与节点组支持使用node-labelselector" class="hash-link" aria-label="解耦边缘应用与节点组，支持使用Node LabelSelector的直接链接" title="解耦边缘应用与节点组，支持使用Node LabelSelector的直接链接">​</a></h3><p>EdgeApplication 可以通过节点组覆盖部署定义（如副本、镜像、命令和环境），Pod 流量在节点组内闭环（EdgeApplication 管理的 Deployment 共用一个 Service）。但在实际场景中，需要批量操作的节点范围与需要相互协作的节点范围并不相同。例如在智慧园区的场景中，每个城市都有很多个智慧园区，我们需要应用的流量在一个智慧园区内闭环，但应用批量管理的范围可能是城市级，也可能是省级。</p><p>我们在 EdgeApplication CRD 中为节点标签选择器添加了一个新的 targetNodeLabels 字段，该字段将允许应用程序根据节点标签进行部署，并且覆盖特定的字段，YAML定义如下：</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="复制代码到剪贴板" title="复制" 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>更多信息可参考：</strong></p><p>Issue: <a href="https://github.com/kubeedge/kubeedge/issues/5755" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubeedge/issues/5755</a></p><p>Pull Request: <a href="https://github.com/kubeedge/kubeedge/pull/5845" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubeedge/pull/5845</a></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="边云通道支持ipv6">边云通道支持IPv6<a href="#边云通道支持ipv6" class="hash-link" aria-label="边云通道支持IPv6的直接链接" title="边云通道支持IPv6的直接链接">​</a></h3><p>我们在官网的文档中提供了一份配置指南，介绍了KubeEdge如何在Kubernetes集群中让云边 hub 隧道支持IPv6。文档地址：<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="升级k8s依赖到v130">升级K8s依赖到v1.30<a href="#升级k8s依赖到v130" class="hash-link" aria-label="升级K8s依赖到v1.30的直接链接" title="升级K8s依赖到v1.30的直接链接">​</a></h3><p>新版本将依赖的Kubernetes版本升级到v1.30.7，您可以在云和边缘使用新版本的特性。</p><p><strong>更多信息可参考：</strong></p><p><a href="https://github.com/kubeedge/kubeedge/pull/5997" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubeedge/pull/5997</a></p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="版本升级注意事项">版本升级注意事项<a href="#版本升级注意事项" class="hash-link" aria-label="版本升级注意事项的直接链接" title="版本升级注意事项的直接链接">​</a></h2><ul><li>从v1.20.0版本开始，EdgeCore的配置项edged.rootDirectory的默认值将会由<code>/var/lib/edged</code>切换至<code>/var/lib/kubelet</code>，如果您需要继续使用原有路径，可以在使用keadm安装EdgeCore时设置<code>--set edged.rootDirectory=/var/lib/edged</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="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[KubeEdge Dashboard的部署和使用]]></title>
        <id>https://kubeedge.io/zh/blog/dashboard-getting-started</id>
        <link href="https://kubeedge.io/zh/blog/dashboard-getting-started"/>
        <updated>2024-12-12T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[在KubeEdge v1.19版本中，我们引入了重构后的全新版本KubeEdge Dashboard，该版本的KubeEdge Dashboard采用了Next.js框架及MUI组件库，具有更好的性能和用户体验。同时，我们还对KubeEdge Dashboard的功能进行了优化和增强，包括对仪表盘设备管理以及设备模型管理等功能进行了优化。]]></summary>
        <content type="html"><![CDATA[<p>在KubeEdge v1.19版本中，我们引入了重构后的全新版本KubeEdge Dashboard，该版本的KubeEdge Dashboard采用了Next.js框架及MUI组件库，具有更好的性能和用户体验。同时，我们还对KubeEdge Dashboard的功能进行了优化和增强，包括对仪表盘设备管理以及设备模型管理等功能进行了优化。</p><p>在本文中，我们将介绍KubeEdge Dashboard的部署和使用。</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="环境准备">环境准备<a href="#环境准备" class="hash-link" aria-label="环境准备的直接链接" title="环境准备的直接链接">​</a></h2><p>首先，我们需要获取KubeEdge Dashboard的源代码并进行运行环境的准备。最新的KubeEdge Dashboard源代码可以从<a href="https://github.com/kubeedge/dashboard" target="_blank" rel="noopener noreferrer">KubeEdge Dashboard代码仓库</a>获取。</p><p>在部署KubeEdge Dashboard之前，我们需要准备以下环境：</p><ul><li><strong>KubeEdge集群</strong>：请参考<a href="https://release-1-19.docs.kubeedge.io/docs/category/setup" target="_blank" rel="noopener noreferrer">KubeEdge官方文档</a>部署KubeEdge集群，KubeEdge Dashboard依赖于KubeEdge v1.15及以上版本。</li><li><strong>Node.js</strong>：请确保系统中已经安装了Node.js，建议使用Node.js v18及以上版本。</li><li><strong>Node.js包管理工具</strong>：请确保系统中已经安装了Node.js包管理工具，例如npm、yarn或者pnpm。</li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="安装与运行">安装与运行<a href="#安装与运行" class="hash-link" aria-label="安装与运行的直接链接" title="安装与运行的直接链接">​</a></h2><p>下面我们以pnpm为例，介绍如何在本地环境中安装和运行KubeEdge Dashboard。首先，我们需要在项目根目录中通过包管理工具安装KubeEdge Dashboard所需的依赖：</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="复制代码到剪贴板" title="复制" 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需要连接到KubeEdge后端API，我们需要在启动KubeEdge Dashboard时设置<code>API_SERVER</code>环境变量，以指定KubeEdge集群的API Server地址。以Kubernetes API Server地址为<code>192.168.33.129:6443</code>为例，我们可以通过下面的命令编译并启动KubeEdge Dashboard：</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="复制代码到剪贴板" title="复制" 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后，我们可以通过浏览器访问<code>http://localhost:3000</code>查看KubeEdge Dashboard的界面。</p><p>对于使用自签名证书的KubeEdge集群，我们需要在启动KubeEdge Dashboard时指定<code>NODE_TLS_REJECT_UNAUTHORIZED=0</code>环境变量，以忽略证书验证。</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="复制代码到剪贴板" title="复制" 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="创建登录token">创建登录Token<a href="#创建登录token" class="hash-link" aria-label="创建登录Token的直接链接" title="创建登录Token的直接链接">​</a></h2><p>为了通过KubeEdge Dashboard管理KubeEdge集群，我们需要创建一个Token用于登录。下面以通过<code>kubectl</code>在<code>kube-system</code>命名空间中创建一个名为<code>dashboard-user</code>的ServiceAccount为例，创建一个用于KubeEdge Dashboard身份验证的Token。</p><p>首先，我们需要在Kubernetes集群中创建一个ServiceAccount。</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="复制代码到剪贴板" title="复制" 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>在创建ServiceAccount后，我们需要将ServiceAccount与ClusterRole绑定，以授予相应的权限。Kubernetes提供了一些内置的角色，例如<code>cluster-admin</code>角色，它拥有集群中所有资源的访问权限。另外，也可以参考<a href="https://kubernetes.io/docs/reference/access-authn-authz/rbac/" target="_blank" rel="noopener noreferrer">Kubernetes文档</a>根据需要创建自定义的ClusterRole。</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="复制代码到剪贴板" title="复制" 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 v1.24及以上版本，Kubernetes将不再自动为ServiceAccount创建Secret，我们需要通过<code>kubectl create token</code>命令创建token。默认情况下，该token的有效期根据服务器配置确定，也可以通过<code>--duration</code>参数指定token的有效期。</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="复制代码到剪贴板" title="复制" 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 v1.23及以下版本，Kubernetes会自动为ServiceAccount创建Secret。我们可以使用<code>kubelet describe secret</code>命令获取，或使用下面的命令快速获取对应的Secret。</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="复制代码到剪贴板" title="复制" 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="结论">结论<a href="#结论" class="hash-link" aria-label="结论的直接链接" title="结论的直接链接">​</a></h2><p>通过KubeEdge Dashboard，我们可以更方便地管理KubeEdge集群中的EdgeApplication及设备等资源。我们也将在后续版本中继续增强和优化KubeEdge Dashboard的功能和用户体验，也欢迎社区用户提出宝贵的意见和建议。</p><p>对于KubeEdge Dashboard的更多信息，请参考<a href="https://github.com/kubeedge/dashboard" target="_blank" rel="noopener noreferrer">KubeEdge Dashboard GitHub仓库</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="cncf graduation" term="cncf graduation"/>
        <category label="cloud native" term="cloud native"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[KubeEdge v1.19.0 版本发布！]]></title>
        <id>https://kubeedge.io/zh/blog/release-v1.19</id>
        <link href="https://kubeedge.io/zh/blog/release-v1.19"/>
        <updated>2024-10-28T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[北京时间2024年10月28日，KubeEdge发布1.19.0版本。新版本在节点和设备方面引入了多个新特性，同时带来了全新版本的 Dashboard。]]></summary>
        <content type="html"><![CDATA[<p>北京时间2024年10月28日，KubeEdge发布1.19.0版本。新版本在节点和设备方面引入了多个新特性，同时带来了全新版本的 Dashboard。</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="kubeedge-v119-新增特性">KubeEdge v1.19 新增特性：<a href="#kubeedge-v119-新增特性" class="hash-link" aria-label="KubeEdge v1.19 新增特性：的直接链接" title="KubeEdge v1.19 新增特性：的直接链接">​</a></h2><ul><li><a href="#%E6%94%AF%E6%8C%81%E8%BE%B9%E7%BC%98%E8%8A%82%E7%82%B9%E4%B8%8A%E6%8A%A5event">支持边缘节点上报Event</a></li><li><a href="#%E6%94%AF%E6%8C%81%E8%BE%B9%E7%BC%98%E8%8A%82%E7%82%B9ota%E5%8D%87%E7%BA%A7">支持边缘节点OTA升级</a></li><li><a href="#mapper%E6%94%AF%E6%8C%81%E8%AE%BE%E5%A4%87%E6%95%B0%E6%8D%AE%E5%86%99%E5%85%A5">Mapper支持设备数据写入</a></li><li><a href="#mapper%E6%A1%86%E6%9E%B6%E6%96%B0%E5%A2%9E%E6%94%AF%E6%8C%81opentelemetry">Mapper框架新增支持OpenTelemetry</a></li><li><a href="#%E5%85%A8%E6%96%B0%E7%89%88%E6%9C%ACdashboard">全新版本Dashboard </a></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="新特性概览">新特性概览<a href="#新特性概览" class="hash-link" aria-label="新特性概览的直接链接" title="新特性概览的直接链接">​</a></h2><h3 class="anchor anchorWithStickyNavbar_LWe7" id="支持边缘节点上报event">支持边缘节点上报Event<a href="#支持边缘节点上报event" class="hash-link" aria-label="支持边缘节点上报Event的直接链接" title="支持边缘节点上报Event的直接链接">​</a></h3><p>Kubernetes Event作为集群中事件的报告，可以反馈节点、Pods等集群资源的状态变化。在1.19版本中，EdgeCore支持了边缘Event的上报，用户可以直接在云端通过 <code>kubectl get events</code> 或者<code>kubectl describe {resource_type} {resource_name}</code>获取边缘节点或者pods等状态。</p><p>该特性在1.19版本中默认关闭，使用EdgeCore时执行 <code>--set modules.edged.reportEvent=true</code> 或者如下修改EdgeCore配置参数并重启EdgeCore。</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"> edgecore.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"> EdgeCore</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">requireAuthorization</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 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">edged</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">reportEvent</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="复制代码到剪贴板" title="复制" 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>更多信息可参考:</strong></p><p><a href="https://github.com/kubeedge/kubeedge/pull/5722" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubeedge/pull/5722</a>
<a href="https://github.com/kubeedge/kubeedge/pull/5811" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubeedge/pull/5811</a></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="支持边缘节点ota升级">支持边缘节点OTA升级<a href="#支持边缘节点ota升级" class="hash-link" aria-label="支持边缘节点OTA升级的直接链接" title="支持边缘节点OTA升级的直接链接">​</a></h3><p>新版本在节点升级NodeUpgradeJob基础上新增了边端节点卡点确认和对镜像摘要的验证。卡点确认可以使节点升级下发到边缘节点后，在用户得到确认后才进行升级。镜像摘要验证可以确保在边缘节点待升级的kubeedge/installation-pacakge镜像是安全可靠的。</p><p>在1.19版本中，我们可以通过YAML配置NodeUpgradeJob的imageDigestGatter来定义镜像摘要，value用于直接定义摘要的值，registryAPI用于通过registry v2接口获取镜像摘要，两者互斥，如果都没有配置则在升级时不进行镜像摘要的校验，样例：</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">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 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">imageDigestGatter</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">value</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">registryAPI</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">host</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">token</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="复制代码到剪贴板" title="复制" 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>我们还可以通过YAML配置NodeUpgradeJob的requireConfirmation来定义是否要在边端进行确认操作，样例：</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">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 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">requireConfirmation</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="复制代码到剪贴板" title="复制" 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>当requireConfirmation设置为true时，在边端节点升级任务下发到边端后，任务状态会更新为confirmation状态等待边端发起确认命令后再继续进行升级。</p><p>我们可以通过执行<code>keadm ctl confirm</code>指令进行确认，或者调用Metaserver接口进行确认，以继续升级任务：</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">POST http(s)</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">//localhost</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">&lt;metaserver_port</span><span class="token punctuation" style="color:#393A34">&gt;</span><span class="token plain">/confirm</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" 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>更多信息可参考:</strong></p><p><a href="https://github.com/kubeedge/kubeedge/issues/5589" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubeedge/issues/5589</a>
<a href="https://github.com/kubeedge/kubeedge/pull/5761" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubeedge/pull/5761</a>
<a href="https://github.com/kubeedge/kubeedge/pull/5863" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubeedge/pull/5863</a></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="mapper支持设备数据写入">Mapper支持设备数据写入<a href="#mapper支持设备数据写入" class="hash-link" aria-label="Mapper支持设备数据写入的直接链接" title="Mapper支持设备数据写入的直接链接">​</a></h3><p>Mapper当前能够采集设备数据并上报，但在设备数据写入方面仍不完善。1.19版本在Mapper-Framework中增加了设备数据写入的能力，允许用户通过Mapper提供的API调用device method，对device property完成数据写入</p><ul><li>Device method API</li></ul><p>目前基于物模型的v1beta1版本的设备管理API包含device property的定义，在1.19版本中，新增device method的定义。Device method指设备能够被外部调用的能力或方法，一个device method能够控制多个device property值。用户能在device-instance文件中定义device method，通过device method完成device property的控制、写入。</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">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 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">methods</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">name</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">description</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">propertyNames</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">""</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" 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>设备数据写入</li></ul><p>在1.19中改进Mapper API能力，新增device method调用接口。用户能够调用相关的接口获取某个设备包含的所有device method，以及device method的调用命令，通过返回的调用命令发起设备写入请求。device method的具体功能实现需要用户自行在Mapper的设备驱动层中完成。</p><p><strong>更多信息可参考：</strong></p><p><a href="https://github.com/kubeedge/kubeedge/pull/5662" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubeedge/pull/5662</a>
<a href="https://github.com/kubeedge/kubeedge/pull/5902" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubeedge/pull/5902</a></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="mapper框架新增支持opentelemetry">Mapper框架新增支持OpenTelemetry<a href="#mapper框架新增支持opentelemetry" class="hash-link" aria-label="Mapper框架新增支持OpenTelemetry的直接链接" title="Mapper框架新增支持OpenTelemetry的直接链接">​</a></h3><p>当前Mapper向用户应用推送设备数据默认内置 HTTP 与 MQTT 两种方式，但仍存在部分应用无法直接以这两种方式进行推送。在1.19版本中我们在数据面引入 OpenTelemetry 观测框架，能够封装设备数据并向多类应用或数据库推送数据，例如GreptimeDB、 Prometheus等，增强Mapper数据面推送设备数据的能力。</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">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 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">properties</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">-</span><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"> </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">pushMethod</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        otel：</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          </span><span class="token key atrule" style="color:#00a4db">endpointURL</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="复制代码到剪贴板" title="复制" 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>更多信息可参考：</strong></p><p><a href="https://github.com/kubeedge/kubeedge/pull/5574" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubeedge/pull/5574</a>
<a href="https://github.com/kubeedge/kubeedge/pull/5564" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubeedge/pull/5564</a></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="全新版本dashboard">全新版本Dashboard<a href="#全新版本dashboard" class="hash-link" aria-label="全新版本Dashboard的直接链接" title="全新版本Dashboard的直接链接">​</a></h3><p>之前发布的KubeEdge Dashboard，新版本使用主流的Next.js框架以及MUI样式库对其进行了重构。在新版本中我们重构并优化了近60个页面与组件，基于KubeEdge最新版本的后端API，我们完善并增加了Device等相关功能页面，并在不影响原有功能的基础上将代码量减少至原先的四分之一。在这个过程中，我们整理完善了Kubernetes以及KubeEdge后端接口的Typescript类型定义，并将依赖的后端接口更新至最新版本，确保其与最新的KubeEdge兼容。</p><p><img loading="lazy" src="/zh/assets/images/dashboard-f6992cda188faaeeda440fdf6e37ffcf.jpg" width="2320" height="1470" class="img_ev3q"></p><p><strong>更多信息可参考：</strong></p><p><a href="https://github.com/kubeedge/dashboard/pull/29" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/dashboard/pull/29</a></p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="版本升级注意事项">版本升级注意事项<a href="#版本升级注意事项" class="hash-link" aria-label="版本升级注意事项的直接链接" title="版本升级注意事项的直接链接">​</a></h2><ul><li><p>下个版本（v1.20），EdgeCore的配置项edged.rootDirectory的默认值将会由<code>/var/lib/edged</code>切换至<code>/var/lib/kubelet</code>，如果您需要继续使用原有路径，可以在使用keadm安装EdgeCore时设置<code>--set edged.rootDirectory=/var/lib/edged</code>。</p></li><li><p>从1.19版本开始，请在使用keadm安装KubeEdge时，使用<code>--kubeedge-version</code>指定版本，<code>--profile version</code>已废弃。</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="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晋级CNCF毕业项目!]]></title>
        <id>https://kubeedge.io/zh/blog/cncf-graduation-announcement</id>
        <link href="https://kubeedge.io/zh/blog/cncf-graduation-announcement"/>
        <updated>2024-10-17T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[加利福尼亚州旧金山 – 2024 年 10 月 15 日 – 云原生计算基金会（CNCF）宣布 KubeEdge正式毕业。]]></summary>
        <content type="html"><![CDATA[<p><strong>加利福尼亚州旧金山 – 2024 年 10 月 15 日</strong> – 云原生计算基金会（CNCF）宣布 KubeEdge正式毕业。</p><p>感谢我们的 CNCF TOC 赞助人（Sponsor） <strong>Cathy Zhang</strong>和<strong>Lin Sun</strong>，以及过去6年中在KubeEdge的开发、治理、落地实践和布道上合作的所有人。</p><p>KubeEdge 是一个基于 Kubernetes 的开源边缘计算项目，扩展了云原生生态系统，覆盖数据中心以外的场景和行业。它将 Kubernetes 的原生容器编排和调度功能拓展到边缘，提供边缘应用管理、云边元数据同步以及边缘 IoT 设备管理等能力。</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="最具影响力的云原生边缘计算社区">最具影响力的云原生边缘计算社区<a href="#最具影响力的云原生边缘计算社区" class="hash-link" aria-label="最具影响力的云原生边缘计算社区的直接链接" title="最具影响力的云原生边缘计算社区的直接链接">​</a></h3><p>KubeEdge 于 2018 年 11 月由华为云开源。2019 年，它作为第一个云原生边缘项目被接受为 CNCF Sandbox 项目，并在 2020 年 9 月晋升为孵化项目。</p><p>自加入 CNCF 以来，项目团队已经扩展到包括来自 15 个组织的维护者，并吸引了来自 35 个国家和 110 个组织的 1600 多名贡献者。参与的组织包括华为云、道客、谐云、中国联通、Inovex、ARM、青云科技、博云、中国移动、浪潮、索尼、中国电信、浙江实验室、浙江大学 SEL 实验室、北京邮电大学和电子科技大学。</p><p>“尽管 Kubernetes 起源于大型数据中心的使用，但它已经演变，像 Linux 一样适应新环境，成为边缘计算的领先平台，”CNCF CTO Chris Aniszczyk 说。“KubeEdge 一直处于这一转型的前沿，将 Kubernetes 引入从电动汽车到外太空的新领域。我们期待看到 KubeEdge 项目作为毕业项目的下一个发展方向。”</p><p>“KubeEdge 的愿景是将云原生技术扩展到边缘，促进强大的边缘云计算生态系统。今天，它已在许多创新和意想不到的领域得到了应用。这一成就是我们贡献者非凡创造力和奉献精神的体现，他们的努力推动了项目的成功，”KubeEdge TSC 成员 Kevin Wang 和 Yin Ding 说。“毕业标志着一个新的开始，我们期待为整个云原生生态系统探索更大的可能性。”</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="多行业多场景广泛的落地实践">多行业、多场景广泛的落地实践<a href="#多行业多场景广泛的落地实践" class="hash-link" aria-label="多行业、多场景广泛的落地实践的直接链接" title="多行业、多场景广泛的落地实践的直接链接">​</a></h3><p>KubeEdge将云原生生态扩展到了数据中心之外的更多场景和行业，当前已广泛应用于CDN、智能交通、智慧能源、智慧零售、智慧园区、汽车、航空航天、智能物流、金融、化工、电力、区块链等各领域，完成了业界最大规模云原生边云协同高速公路收费站管理项目、业界首个云原生星地协同卫星、业界首个云原生车云协同汽车、业界首个云原生智慧零售管理、业界首个云原生金融管理等行业代表项目。基于在云原生边缘计算领域的独特优势，KubeEdge得到了伙伴和用户的高度认可。</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="支持引言">支持引言<a href="#支持引言" class="hash-link" aria-label="支持引言的直接链接" title="支持引言的直接链接">​</a></h3><p><strong>华为云</strong></p><p>华为云 CTO 张宇昕表示：“KubeEdge 自开源以来，获得了业界伙伴、用户的关注支持，在智慧交通、金融、能源、网联汽车、机器人、物流等行业领域都取得了突破性的创新实践，KubeEdge 的毕业也将进一步推动企业的云原生数字化转型，释放更大的产业价值。华为云作为云原生技术的先行者与普及者，未来将继续与 CNCF 和社区合作，共同推动云原生产业的发展。”</p><p><strong>道客</strong></p><p>道客首席运营官张红兵表示：“KubeEdge 的毕业是云原生边缘计算领域的一个重要里程碑。作为 CNCF 官方首个边缘计算项目，KubeEdge 为资源受限的边缘设备提供了强大的计算和管理支持，它的毕业标志着云原生边缘计算的技术成熟和行业认可。自 KubeEdge 项目启动以来，DaoCloud 积极参与其中，从项目规划与治理、核心代码开发以及在制造和零售行业推广贡献了广泛经验。未来，我们也将继续和 KubeEdge 一起，为全球企业和开发者提供更加灵活、安全和高效的解决方案，塑造智能边缘新纪元。”</p><p><strong>谐云</strong></p><p>谐云资深技术总监、边缘计算负责人魏欢：“祝贺 KubeEdge 开源项目顺利毕业！作为 KubeEdge 开源项目技术指导委员会（TSC）团队成员之一，很高兴亲历 KubeEdge 从孵化到毕业的发展旅程。从发现、试错、提 Issue、提 PR、提 Feature、应用、推广，KubeEdge 是谐云边缘计算团队为客户提供边缘计算产品化交付的核心技术框架中的重要组件，我们在通信、金融、交通、能源、桥梁、物流等领域均有边缘计算落地案例。未来谐云也将持续参与 KubeEdge 社区，共同推进云原生边缘计算产业的发展，释放无处不在的云原生价值！”</p><p><strong>青云科技</strong></p><p>青云科技可观测性与边缘计算负责人霍秉杰：“KubeEdge 自开源之日起就以其独特的架构引领了云原生边缘计算的潮流，产生了巨大的影响力和示范效应，在推动云原生技术应用的同时也推动了边缘计算的发展。随着越来越多重量级行业用户的采用，以及世界范围内众多社区贡献者的参与，有幸作为 KubeEdge 技术指导委员会(TSC) 的成员见证了 KubeEdge 从孵化到毕业的整个过程，祝贺 KubeEdge 项目成为首个从 CNCF 毕业的边缘计算项目！作为 KubeSphere 的核心维护者，青云科技在深度参与 KubeEdge 项目的同时，也一直在积极推动 KubeEdge 在各行业的落地，青云科技推出的 EdgeWize 3.0 就是以 KubeEdge 为核心构建的边缘计算平台。我们希望与众多国内外的同行和社区用户一起，推动边缘计算的发展！”</p><p><strong>ByteDance</strong></p><p>KubeEdge 技术指导委员会（TSC）成员 Tina Tsou 表示：“很高兴见证 KubeEdge 从 CNCF 毕业。这一里程碑不仅体现了社区的共同努力，也标志着云原生边缘计算进入了成熟的新阶段。未来，我们将继续与全球的开发者和伙伴紧密合作，推动边缘计算技术的创新与应用，加速各行业的数字化转型。”</p><p><strong>博云</strong></p><p>博云副总裁崔骥：“KubeEdge 是中国边缘计算架构类软件持续最久，最活跃的项目，在行业中的影响极为深刻，其在工业、交通、装备制造等行业的智能化改造中得到了广泛的采用，为智能制造计划的推进做出了积极的贡献。KubeEdge 社区以积极开放的态度吸引了众多的开源贡献者和合作项目，博云开源的 FabEdge，Carina 等边缘网络、存储组件得到了良好的兼容和项目应用，并落地了多个云边端 AI 模型流转、模型转换和加载项目实践。KubeEdge 的毕业，说明边缘计算技术成熟与产业高速发展期的到来，相信项目在未来一定能够得到更多的落地应用，博云愿与项目社区一起共同推进产业化的发展，支持更多场景的落地实践。”</p><p><strong>蔚来汽车</strong></p><p>蔚来汽车战略新业务数字系统架构师蒋旭辉：“KubeEdge 作为专为云边协同开发的平台，可以有效解决汽车领域应用云原生技术栈面临的算力稀缺、海量边缘节点、运行环境差异等挑战。我们经过大量调研和选型工作后，以 KubeEdge 为核心构建蔚来整套车云协同平台，并首次用于量产车型，带来开发交付效率、团队协作等方面的显著提升，并将实现超大规模的边缘汽车管理。在此祝贺 KubeEdge 毕业，也期待与社区有更深远的合作，继续推动 KubeEdge 社区的发展，持续构建云原生解决方案在革新 EV 领域中的创新应用。”</p><p><strong>顺丰科技</strong></p><p>顺丰科技边缘云容器负责人程庞钢：“KubeEdge 开源项目的毕业令人振奋，这是云原生边缘计算领域的新星。顺丰科技在物流领域深耕多年，KubeEdge 如同我们迈向智能化的得力助手。从物流分拣的高效运作到运输环节的全生命周期处理，KubeEdge 所提供的边缘计算能力助力我们打造更智慧、更高效的物流体系。在其发展历程中，我们见证了它的成长与蜕变，也积极将其融入我们的业务场景之中。顺丰科技期待与 KubeEdge 携手同行，在未来不断探索新的可能，将物流行业的智能化推向新的高度，让边缘计算在每一个包裹的流转中发挥更大的价值。”</p><p><strong>索尼</strong></p><p>索尼美国公司软件工程师 Tomoya Fujita：“看到 KubeEdge 在 CNCF 毕业是最令人兴奋的消息，表明生产就绪的 Kubernetes 边缘解决方案的到来。KubeEdge 将编排能力扩展到边缘环境，提供统一的集群管理和复杂的边缘特定功能。我们相信 KubeEdge 将在不久的将来应用于更多用例，特别是在机器人分布式系统和边缘 AI/ML 应用部署方面。开发、社区参与和增长对于基于开源的活动至关重要。KubeEdge 也在积极鼓励开发者和用户参与社区，这帮助设计出能够支持广泛用例和业务逻辑的 KubeEdge。我们将继续参与和支持 KubeEdge 的开发和社区。”</p><p><strong>Zeblok</strong></p><p>Zeblok Computational Inc. 平台工程负责人 Vikarna Tathe：“随着 KubeEdge 在 CNCF 毕业，边缘计算领域达到了新的前沿。在 Zeblok Computational Inc.，我们很高兴将 KubeEdge 纳入我们的 Ai-MicroCloud，将尖端 AI 能力直接带到边缘。这种协同推动了在实时智能至关重要的地方的创新。”</p><p><strong>OEHI</strong></p><p>OEHI 主席 Dirk Pleiter：“KubeEdge 正式在 CNCF 达到下一个成熟阶段，是对其发展成果的强有力认可。开放边缘和 HPC 倡议（OEHI）坚信 KubeEdge 是未来计算连续体基础设施的关键元素。为了为这一新计算基础设施设计范式培养人才，OEHI 在 2024 ISC HPC 会议上共同组织了一场教程，让参与者亲身体验 KubeEdge。未来，我们将继续推动这一技术。”</p><p>未来，KubeEdge 社区将保持开放治理模式和协作理念，进一步改善用户体验，提供更可靠和稳定的服务。同时，KubeEdge 将继续探索新领域，如云边协作 AI、云边协作机器人和边缘集群管理。</p><p>了解更多关于 KubeEdge 的信息，访问：</p><ul><li>KubeEdge: <a href="https://kubeedge.io/" target="_blank" rel="noopener noreferrer">https://kubeedge.io/</a></li><li>网站: <a href="https://kubeedge.io/" target="_blank" rel="noopener noreferrer">https://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>文档: <a href="https://kubeedge.io/docs/" target="_blank" rel="noopener noreferrer">https://kubeedge.io/docs/</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>X: <a href="https://x.com/kubeedge" target="_blank" rel="noopener noreferrer">https://x.com/kubeedge</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.0 版本发布！]]></title>
        <id>https://kubeedge.io/zh/blog/release-v1.18</id>
        <link href="https://kubeedge.io/zh/blog/release-v1.18"/>
        <updated>2024-07-26T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[北京时间2024年7月26日，KubeEdge发布1.18.0版本。新版本在稳定性、安全性等方面有了显著的提升，同时持续在易用性等方面做了增强。]]></summary>
        <content type="html"><![CDATA[<p>北京时间2024年7月26日，KubeEdge发布1.18.0版本。新版本在稳定性、安全性等方面有了显著的提升，同时持续在易用性等方面做了增强。</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="kubeedge-v118-新增特性">KubeEdge v1.18 新增特性：<a href="#kubeedge-v118-新增特性" class="hash-link" aria-label="KubeEdge v1.18 新增特性：的直接链接" title="KubeEdge v1.18 新增特性：的直接链接">​</a></h2><ul><li><a href="#routermanager%E6%94%AF%E6%8C%81%E9%AB%98%E5%8F%AF%E7%94%A8">RouterManager支持高可用</a></li><li><a href="#cloudcore%E4%BA%91%E8%BE%B9%E9%80%9A%E9%81%93%E9%89%B4%E6%9D%83%E5%A2%9E%E5%BC%BA">CloudCore云边通道鉴权增强</a></li><li><a href="#%E6%94%AF%E6%8C%81%E8%AE%BE%E5%A4%87%E7%8A%B6%E6%80%81%E4%B8%8A%E6%8A%A5">支持设备状态上报</a></li><li><a href="#keadm%E8%83%BD%E5%8A%9B%E5%A2%9E%E5%BC%BA">Keadm能力增强</a></li><li><a href="#%E5%B0%81%E8%A3%85tokenca%E5%92%8C%E8%AF%81%E4%B9%A6%E6%93%8D%E4%BD%9C%E6%8F%90%E9%AB%98%E6%89%A9%E5%B1%95%E6%80%A7">封装Token，CA和证书操作，提高扩展性</a></li><li><a href="#%E5%8D%87%E7%BA%A7k8s%E4%BE%9D%E8%B5%96%E5%88%B0v129">升级K8s依赖到v1.29</a></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="新特性概览">新特性概览<a href="#新特性概览" class="hash-link" aria-label="新特性概览的直接链接" title="新特性概览的直接链接">​</a></h2><h3 class="anchor anchorWithStickyNavbar_LWe7" id="routermanager支持高可用">RouterManager支持高可用<a href="#routermanager支持高可用" class="hash-link" aria-label="RouterManager支持高可用的直接链接" title="RouterManager支持高可用的直接链接">​</a></h3><p>针对CloudCore采用高可用部署时，RouterManager无法准确路由的问题，在新版本中，对RouterManager在高可用部署时做了优化与增强，云端发往边缘的自定义消息将会被路由到对应EdgeNode所连接的CloudCore中，并正确下发到对应的EdgeNode。同时考虑了边界情况，在转发过程中，如果EdgeNode重连到其他CloudCore时，消息将会被重新转发到正确的CloudCore中。</p><p><strong>更多信息可参考:</strong></p><p><a href="https://github.com/kubeedge/kubeedge/pull/5635" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubeedge/pull/5635</a>
<a href="https://github.com/kubeedge/kubeedge/pull/5619" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubeedge/pull/5619</a></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="cloudcore云边通道鉴权增强">CloudCore云边通道鉴权增强<a href="#cloudcore云边通道鉴权增强" class="hash-link" aria-label="CloudCore云边通道鉴权增强的直接链接" title="CloudCore云边通道鉴权增强的直接链接">​</a></h3><p>CloudCore 作为连接边缘节点和Kube-APIServer的桥梁，需要限制边缘节点对集群资源的访问权限。在新版本中，我们对云边通道的安全性进行了增强，CloudHub会识别消息发送方并校验其是否有足够的权限，从而限制边缘节点操作其他节点的资源。
v1.18.0目前已支持node authorization模式。该特性引入了如下配置参数，在新版本中默认关闭，开启如下开关即可启用该特性。</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"> v1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">data</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">cloudcore.yaml</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">  modules：</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">cloudhub</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">authorization</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">        // optional</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> default false</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> toggle authoration</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><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        // optional</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> default to false</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> do authorization but always allow all the requests</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token key atrule" style="color:#00a4db">debug</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean important" style="color:#36acaa">false</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        // required</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> an authorizer chain</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token key atrule" style="color:#00a4db">authorizers</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">          // node authorization mode</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">node</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">          ebable：true</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="复制代码到剪贴板" title="复制" 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>为了安全启用此特性，可以先开启debug。当鉴权失败时，CloudCore只记录日志，但请求仍会正常处理。</p><p><strong>更多信息可参考:</strong></p><p><a href="https://github.com/kubeedge/kubeedge/pull/5512" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubeedge/pull/5512</a>
<a href="https://github.com/kubeedge/kubeedge/pull/5585" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubeedge/pull/5585</a></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="支持设备状态上报">支持设备状态上报<a href="#支持设备状态上报" class="hash-link" aria-label="支持设备状态上报的直接链接" title="支持设备状态上报的直接链接">​</a></h3><p>设备有其自身的状态，比如在线、离线、异常等。1.18.0版本支持了设备状态上报的能力。该特性在Mapper-Framework已经默认实现，用户基于Mapper-Framework生成自己需要的mapper，即可使用。状态上报成功后，可通过device的资源查看结果：</p><div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">apiVersion</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> devices.kubeedge.io/v1beta1</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">kind</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> Device</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></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">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">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">lastOnlineTime</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"2024-07-30T17:55:49Z"</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">state</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> ok</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">twins</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">observedDesired</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">...</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" 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>更多信息可参考：</strong></p><p><a href="https://github.com/kubeedge/kubeedge/pull/5650" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubeedge/pull/5650</a>
<a href="https://github.com/kubeedge/kubeedge/pull/5649" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubeedge/pull/5649</a>
<a href="https://github.com/kubeedge/kubeedge/pull/5651" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubeedge/pull/5651</a></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="keadm能力增强">Keadm能力增强<a href="#keadm能力增强" class="hash-link" aria-label="Keadm能力增强的直接链接" title="Keadm能力增强的直接链接">​</a></h3><p>在旧版本中，使用<code>keadm join</code>安装EdgeCore只能指定部分参数的配置。在最新版本中，我们对EdgeCore的配置流程进行了显著优化。现在，您无需等待节点接入完成,手动编辑edgecore.yaml配置文件，再重启EdgeCore。通过在<code>keadm join</code>命令中使用新增的<code>--set</code>参数，您可以在节点加入时直接设置配置，就像使用Helm配置values.yaml一样便捷。这一改进大大简化了配置管理过程，提高了效率。下列指令是一个开启MetaServer的样例：</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 join --set modules.metaManager.enable=true,modules.metaManager.metaServer.enable=true,modules.metaManager.remoteQueryTimeout=32</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" 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>更多信息可参考：</strong></p><p><a href="https://github.com/kubeedge/kubeedge/pull/5574" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubeedge/pull/5574</a>
<a href="https://github.com/kubeedge/kubeedge/pull/5564" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubeedge/pull/5564</a></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="封装tokenca和证书操作提高扩展性">封装Token，CA和证书操作，提高扩展性<a href="#封装tokenca和证书操作提高扩展性" class="hash-link" aria-label="封装Token，CA和证书操作，提高扩展性的直接链接" title="封装Token，CA和证书操作，提高扩展性的直接链接">​</a></h3><p>在本版本中，我们对Token和Certificate的处理进行了彻底的整理和优化。原先分散在代码各处的处理逻辑现在已被集中管理，显著降低了维护成本。Token处理已被集成到一个统一的工具包中，而Certificate的处理则通过接口抽象化，不仅支持自建CA流程，还适配了通过Kubernetes CSR申请Certificate的流程。此外，我们的设计允许未来轻松扩展以支持更多类型的私钥和客户自定义的Certificate。此次重构不仅提升了Token和Certificate业务代码的可读性和可维护性，而且保持了对外接口的完全向下兼容性，确保了现有系统的无缝升级。</p><p><strong>更多信息可参考：</strong></p><p><a href="https://github.com/kubeedge/kubeedge/pull/5502" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubeedge/pull/5502</a>
<a href="https://github.com/kubeedge/kubeedge/pull/5544" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubeedge/pull/5544</a></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="升级k8s依赖到v129">升级K8s依赖到v1.29<a href="#升级k8s依赖到v129" class="hash-link" aria-label="升级K8s依赖到v1.29的直接链接" title="升级K8s依赖到v1.29的直接链接">​</a></h3><p>新版本将依赖的Kubernetes版本升级到v1.29.6，您可以在云和边缘使用新版本的特性。</p><p><strong>更多信息可参考：</strong></p><p><a href="https://github.com/kubeedge/kubeedge/pull/5656" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubeedge/pull/5656</a></p>]]></content>
        <author>
            <name>KubeEdge SIG Release</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="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/zh/blog/enable-cilium</id>
        <link href="https://kubeedge.io/zh/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="why-cilium-for-kubeedge的直接链接" title="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="how-to-enable-cilium-with-kubeedge的直接链接" title="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="/zh/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="Prerequisites的直接链接" title="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="Kubernetes Master Setup的直接链接" title="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="复制代码到剪贴板" title="复制" 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="Cilium Install and Setup的直接链接" title="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="复制代码到剪贴板" title="复制" 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="复制代码到剪贴板" title="复制" 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="复制代码到剪贴板" title="复制" 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="复制代码到剪贴板" title="复制" 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="KubeEdge CloudCore Setup的直接链接" title="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="复制代码到剪贴板" title="复制" 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="复制代码到剪贴板" title="复制" 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="复制代码到剪贴板" title="复制" 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="复制代码到剪贴板" title="复制" 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="复制代码到剪贴板" title="复制" 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="复制代码到剪贴板" title="复制" 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="复制代码到剪贴板" title="复制" 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="复制代码到剪贴板" title="复制" 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="KubeEdge EdgeCore Setup的直接链接" title="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="复制代码到剪贴板" title="复制" 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="复制代码到剪贴板" title="复制" 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="复制代码到剪贴板" title="复制" 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="复制代码到剪贴板" title="复制" 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="复制代码到剪贴板" title="复制" 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="复制代码到剪贴板" title="复制" 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="Check Cilium Connectivity from Pods的直接链接" title="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="复制代码到剪贴板" title="复制" 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/zh/blog/release-v1.17</id>
        <link href="https://kubeedge.io/zh/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="1.17 What's New的直接链接" title="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="Release Highlights的直接链接" title="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="Support Edge Pods Using InClusterConfig to Access Kube-APIServer的直接链接" title="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="Mapper Supports Video Streaming Data Reporting的直接链接" title="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="Support Auto-Restarting for Edge Modules的直接链接" title="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="introduce-keadm-ctl-command-to-support-pods-query-and-restart-at-edge的直接链接" title="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="Keadm Enhancements的直接链接" title="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="Add MySQL to Mapper Framework的直接链接" title="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="Upgrade Kubernetes Dependency to v1.28.6的直接链接" title="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="Important Steps before Upgrading的直接链接" title="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[开源之夏2024重磅来袭！KubeEdge社区18个课题报名启动]]></title>
        <id>https://kubeedge.io/zh/blog/summer-ospp</id>
        <link href="https://kubeedge.io/zh/blog/summer-ospp"/>
        <updated>2024-04-30T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[开源之夏介绍]]></summary>
        <content type="html"><![CDATA[<h2 class="anchor anchorWithStickyNavbar_LWe7" id="开源之夏介绍">开源之夏介绍<a href="#开源之夏介绍" class="hash-link" aria-label="开源之夏介绍的直接链接" title="开源之夏介绍的直接链接">​</a></h2><p>开源之夏是由中国科学院软件研究所“开源软件供应链点亮计划”发起并长期支持的一项暑期开源活动，旨在鼓励在校学生积极参与开源软件的开发维护，培养和发掘更多优秀的开发者，促进优秀开源软件社区的蓬勃发展，助力开源软件供应链建设。学生通过远程线上协作方式，通过社区资深导师指导，参与到开源社区各组织项目开发中，并收获证书及最高12000元奖金。活动官网：<a href="https://summer-ospp.ac.cn" target="_blank" rel="noopener noreferrer">https://summer-ospp.ac.cn/</a> </p><p>开源之夏学生报名4月30日正式开启。KubeEdge云原生边缘计算社区已连续4年参与开源之夏，在本届开源之夏共带来 <strong><em>18个</em></strong> 精选课题，包括应用与 <strong><em>算法创新、AI大模型、机器学习、深度学习、系统研发与集成</em></strong> 等多个领域，由来自 <strong><em>高校、产业等资深学者、产业巨擘与技术领英组成的导师带队</em></strong>，为同学们引领迈向顶尖开发者之路。历届开源之夏KubeEdge社区课题聚焦行业前沿方向，为学生职业生涯增添浓墨重彩的一笔，多位入选组委会官方优秀学生。</p><p>为帮助学生更好地了解与选报课题，KubeEdge社区将于 <strong><em>5月8日、5月9日</em></strong> 开展课题线上宣讲会（详见下文），同学们不可错过。</p><p><img loading="lazy" alt="summer-01" src="/zh/assets/images/summer-01-9675a284af16e62579354a8d86e5d58b.png" width="1080" height="453" class="img_ev3q"></p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="kubeedge云原生边缘计算社区">KubeEdge云原生边缘计算社区<a href="#kubeedge云原生边缘计算社区" class="hash-link" aria-label="KubeEdge云原生边缘计算社区的直接链接" title="KubeEdge云原生边缘计算社区的直接链接">​</a></h2><p>KubeEdge<!-- -->[(https://github.com/kubeedge)]<!-- -->（<a href="https://github.com/kubeedge%EF%BC%89" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge）</a> 是 <strong><em>业界首个云原生边缘计算框架、云原生计算基金会内部唯一孵化级边缘计算开源项目</em></strong> 。KubeEdge 连接云原生和边缘计算生态，聚焦于提供一致的云边资源协同、数据协同、智能协同和应用协同体验，为边缘计算领域的应用提供更好的支持和解决方案，在全球已拥有 <strong><em>1500+</em></strong> 贡献者和 <strong><em>100</em></strong> 贡献组织，在GitHub获得 <strong><em>7.3k+Stars</em></strong>和 <strong><em>2.1k+Forks</em></strong>。</p><p>KubeEdge社区持续开拓创新，目前已完成业界最大规模云原生边云协同高速公路项目（统一管理10万边缘节点/50万边缘应用）、业界首个云原生星地协同卫星、业界首个云原生车云协同汽车、业界首个云原生油田项目，开源业界首个分布式协同AI框架Sedna及业界首个边云协同终身学习范式。</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="kubeedge开源之夏2024课题">KubeEdge开源之夏2024课题<a href="#kubeedge开源之夏2024课题" class="hash-link" aria-label="KubeEdge开源之夏2024课题的直接链接" title="KubeEdge开源之夏2024课题的直接链接">​</a></h2><h3 class="anchor anchorWithStickyNavbar_LWe7" id="项目1支持边缘节点上报event">项目1：支持边缘节点上报event<a href="#项目1支持边缘节点上报event" class="hash-link" aria-label="项目1：支持边缘节点上报event的直接链接" title="项目1：支持边缘节点上报event的直接链接">​</a></h3><ul><li><strong><em>项目编号</em></strong>：2498a0328</li><li><strong><em>项目难度</em></strong>：进阶/Advanced</li><li><strong><em>导师联系</em></strong>：鲍玥 <a href="mailto:baoyue2@huawei.com" target="_blank" rel="noopener noreferrer">baoyue2@huawei.com</a></li><li><strong><em>项目简述</em></strong>：在目前的KubeEdge版本中，由于云边通道没有开发event相关接口，因此用户无法在云端获取到边缘pod的事件，尤其当pod状态异常时，用户必须要登录边缘节点获取pod事件，运维成本比较高。本项目希望能在云边通道增加event接口，支持边缘节点上报event，提高KubeEdge易用性与运维效率。</li><li><strong><em>项目链接</em></strong><a href="https://summer-ospp.ac.cn/org/prodetail/2498a0328?lang=zh&amp;list=pro" target="_blank" rel="noopener noreferrer">https://summer-ospp.ac.cn/org/prodetail/2498a0328?lang=zh&amp;list=pro</a></li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="项目2基于kubeedge的移动自组织网络边缘计算架构设计与实现">项目2：基于KubeEdge的移动自组织网络边缘计算架构设计与实现<a href="#项目2基于kubeedge的移动自组织网络边缘计算架构设计与实现" class="hash-link" aria-label="项目2：基于KubeEdge的移动自组织网络边缘计算架构设计与实现的直接链接" title="项目2：基于KubeEdge的移动自组织网络边缘计算架构设计与实现的直接链接">​</a></h3><ul><li><strong><em>项目编号</em></strong>：2498a0330</li><li><strong><em>项目难度</em></strong>：进阶/Advanced</li><li><strong><em>导师联系</em></strong>：赖俊宇（ Jason）<a href="mailto:laijy@uestc.edu.cn" target="_blank" rel="noopener noreferrer">laijy@uestc.edu.cn</a></li><li><strong><em>项目简述</em></strong>：边缘计算（Edge Computing）与移动自组织网络（MANET）的结合，在应急等场景下有广泛的需求和良好的前景。本项目拟基于业界最流行的云原生云边协同计算架构KubeEdge，设计和实现面向无人机/无人系统集群等典型MANET场景的边缘计算架构，以更好支持MANET中的“云-边”协同、“边-边”协同计算能力。</li><li><strong><em>项目链接</em></strong>：
<a href="https://summer-ospp.ac.cn/org/prodetail/2498a0330?lang=zh&amp;list=pro" target="_blank" rel="noopener noreferrer">https://summer-ospp.ac.cn/org/prodetail/2498a0330?lang=zh&amp;list=pro</a></li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="项目3使用-kubeedge-实现基于深度学习的设备故障检测场景">项目3：使用 KubeEdge 实现基于深度学习的设备故障检测场景<a href="#项目3使用-kubeedge-实现基于深度学习的设备故障检测场景" class="hash-link" aria-label="项目3：使用 KubeEdge 实现基于深度学习的设备故障检测场景的直接链接" title="项目3：使用 KubeEdge 实现基于深度学习的设备故障检测场景的直接链接">​</a></h3><ul><li><strong><em>项目编号</em></strong>：2498a0332</li><li><strong><em>项目难度</em></strong>：进阶/Advanced</li><li><strong><em>导师联系</em></strong>：张红兵（Hongbing） <a href="mailto:hongbing.zhang@daocloud.io" target="_blank" rel="noopener noreferrer">hongbing.zhang@daocloud.io</a></li><li><strong><em>项目简述</em></strong>：边缘计算作为人工智能的最后一公里，跟 AI 结合的应用场景也很广泛。在工业制造领域，边缘 AI 发挥着越来越重要的作用。场景：面向生产制造过程，刀具、冲压设备等声音检测，将老师傅听音多年经验迁移至算法模型，设备运行故障及时发现，提升设备巡检运维效率。1. 使用 KubeEdge 将故障检测模型应用下发至边缘节点，模型应用的资源消耗不超过4c8g；2. 运行模型应用，通过模拟modbus设备采集声音信号，模型应用能够通过设备声音识别出设备故障，控制边缘模拟灯泡的亮灭，并录制视频；3. （可选）将终端设备接入平台纳管。</li><li><strong><em>项目链接</em></strong>：
<a href="https://summer-ospp.ac.cn/org/prodetail/2498a0332?lang=zh&amp;list=pro" target="_blank" rel="noopener noreferrer">https://summer-ospp.ac.cn/org/prodetail/2498a0332?lang=zh&amp;list=pro</a></li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="项目4-sedna-联合推理联邦学习控制器优化">项目4： Sedna 联合推理、联邦学习控制器优化<a href="#项目4-sedna-联合推理联邦学习控制器优化" class="hash-link" aria-label="项目4： Sedna 联合推理、联邦学习控制器优化的直接链接" title="项目4： Sedna 联合推理、联邦学习控制器优化的直接链接">​</a></h3><ul><li><strong><em>项目编号</em></strong>：2498a0315</li><li><strong><em>项目难度</em></strong>：进阶/Advanced</li><li><strong><em>导师联系</em></strong>：唐明 <a href="mailto:ming.tang@daocloud.io" target="_blank" rel="noopener noreferrer">ming.tang@daocloud.io</a></li><li><strong><em>项目简述</em></strong>：Sedna是在KubeEdge SIG AI中孵化的一个边云协同AI项目。得益于KubeEdge提供的边云协同能力，Sedna可以实现跨边云的协同训练和协同推理能力，如联合推理、增量学习、联邦学习、终身学习等。Sedna支持目前广泛使用的AI框架，如TensorFlow/Pytorch/PaddlePaddle/MindSpore等，现有AI类应用可以无缝迁移到Sedna, 快速实现边云协同的训练和推理，可在降低成本、提升模型性能、保护数据隐私等方面获得提升。但是当前 Sedna 项目中联合推理、联邦学习控制器依然存在一些功能缺陷需要解决，主要表现在以下方面：联合推理：1、在创建联合推理任务或联邦学习任务以后，其生成的云和边的任务实例在出现故障或手动删除以后不会自动重建，即缺少自愈能力；2、联合推理任务CR在被删除以后，其生成的任务实例以及service配置不会被级联删除，该缺陷会导致后续再次创建联合推理任务失败。需要做的事情：对当前Sedna的联合推理和联邦学习控制器进行优化以解决上述功能缺陷。</li><li><strong><em>项目链接</em></strong>：
<a href="https://summer-ospp.ac.cn/org/prodetail/2498a0315?lang=zh&amp;list=pro" target="_blank" rel="noopener noreferrer">https://summer-ospp.ac.cn/org/prodetail/2498a0315?lang=zh&amp;list=pro</a></li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="项目5大语言模型边侧基准测试套件基于kubeedge-ianvs实现">项目5：大语言模型边侧基准测试套件：基于KubeEdge-Ianvs实现<a href="#项目5大语言模型边侧基准测试套件基于kubeedge-ianvs实现" class="hash-link" aria-label="项目5：大语言模型边侧基准测试套件：基于KubeEdge-Ianvs实现的直接链接" title="项目5：大语言模型边侧基准测试套件：基于KubeEdge-Ianvs实现的直接链接">​</a></h3><ul><li><strong><em>项目编号</em></strong>：2498a0318</li><li><strong><em>项目难度</em></strong>：进阶</li><li><strong><em>导师联系</em></strong>：胡创 <a href="mailto:hchuchuang@gmail.com" target="_blank" rel="noopener noreferrer">hchuchuang@gmail.com</a></li><li><strong><em>项目简述</em></strong>：由于模型尺寸和数据规模，LLMs往往在云端训练。同时由于大语言模型使用过程往往涉及商业机密或用户隐私，在边侧设备部署LLMs也逐渐成为了研究热点。LLMs量化技术正在使能LLMs边侧推理，然而，边侧设备的有限资源对云端训练LLMs的推理延迟和推理精度产生了影响。Ianvs旨在利用容器资源管理能力和边云协同能力对云端训练LLMs做边侧部署基准测试。</li><li><strong><em>项目链接</em></strong>：
<a href="https://summer-ospp.ac.cn/org/prodetail/2498a0318?lang=zh&amp;list=pro" target="_blank" rel="noopener noreferrer">https://summer-ospp.ac.cn/org/prodetail/2498a0318?lang=zh&amp;list=pro</a></li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="项目6行业大模型基准测试套件基于kubeedge-ianvs实现">项目6：行业大模型基准测试套件：基于KubeEdge-Ianvs实现<a href="#项目6行业大模型基准测试套件基于kubeedge-ianvs实现" class="hash-link" aria-label="项目6：行业大模型基准测试套件：基于KubeEdge-Ianvs实现的直接链接" title="项目6：行业大模型基准测试套件：基于KubeEdge-Ianvs实现的直接链接">​</a></h3><ul><li><strong><em>项目编号</em></strong>：2498a0319</li><li><strong><em>项目难度</em></strong>：进阶</li><li><strong><em>导师联系</em></strong>：郑子木 <a href="mailto:zimu.zheng@huawei.com" target="_blank" rel="noopener noreferrer">zimu.zheng@huawei.com</a></li><li><strong><em>项目简述</em></strong>：大模型进入规模化应用时代，云已为大模型提供基础设施和服务，相关客户进一步提出包括个性化、数据合规、实时性等边缘侧的针对性应用需求，而云边协同的人工智能服务成为大趋势。但是，当前在产品定义、服务质量、服务资质、行业影响力等方面，存在通用竞争力和客户信任问题两大挑战，其症结在于，当前大模型基准测试聚焦对通用基础能力的考核，未能从行业角度牵引大模型应用。本项目从大模型产业以及云边协同人工智能角度、藉由行业应用反映大模型真实价值，以行业基准测试牵引大模型应用孵化。本项目基于协同人工智能基准测试套件KubeEdge-Ianvs，补充大模型测试工具接口，配套测试数据集，并构建政务等行业大模型测试套件。</li><li><strong><em>项目链接</em></strong>：
<a href="https://summer-ospp.ac.cn/org/prodetail/2498a0319?lang=zh&amp;list=pro" target="_blank" rel="noopener noreferrer">https://summer-ospp.ac.cn/org/prodetail/2498a0319?lang=zh&amp;list=pro</a></li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="项目7代码大模型基准测试套件基于-kubeedge-ianvs-构建">项目7：代码大模型基准测试套件：基于 KubeEdge-Ianvs 构建<a href="#项目7代码大模型基准测试套件基于-kubeedge-ianvs-构建" class="hash-link" aria-label="项目7：代码大模型基准测试套件：基于 KubeEdge-Ianvs 构建的直接链接" title="项目7：代码大模型基准测试套件：基于 KubeEdge-Ianvs 构建的直接链接">​</a></h3><ul><li><strong><em>项目编号</em></strong>：2498a0323</li><li><strong><em>项目难度</em></strong>：进阶/Advanced</li><li><strong><em>导师联系</em></strong>：韩洋（Brooks） <a href="mailto:yangbrooks.han@gmail.com" target="_blank" rel="noopener noreferrer">yangbrooks.han@gmail.com</a></li><li><strong><em>项目简述</em></strong>：大语言模型(LLMs) 在代码生成、自动编程、代码分析等任务中展现出了强大的能力。然而,这些模型通常基于通用的代码数据进行训练,无法充分利用软件工程师在实际工作中的协作和反馈。为了构建更加智能、高效的代码生态系统,有必要建立一个代码大模型数据集和评测基准,通过LLMs促进代码工程项目与软件工程师的紧密协作。本项目将基于开源的协同人工智能基准测试套件KubeEdge-Ianvs,构建一个面向LLMs的协作式代码智能体对齐数据集和评测基准。该数据集将包含软件工程师在开发过程中的行为轨迹、反馈和迭代过程,以及相关的代码版本和注释信息。通过这些数据,我们将设计评测指标和基准,以衡量LLMs在代码生成、推荐和分析等任务上的性能,并促进LLMs与软件工程师的协作。</li><li><strong><em>项目链接</em></strong>：
<a href="https://summer-ospp.ac.cn/org/prodetail/2498a0323?lang=zh&amp;list=pro" target="_blank" rel="noopener noreferrer">https://summer-ospp.ac.cn/org/prodetail/2498a0323?lang=zh&amp;list=pro</a></li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="项目8大语言模型云边协同推理基于kubeedge-ianvs实现">项目8：大语言模型云边协同推理：基于KubeEdge-Ianvs实现<a href="#项目8大语言模型云边协同推理基于kubeedge-ianvs实现" class="hash-link" aria-label="项目8：大语言模型云边协同推理：基于KubeEdge-Ianvs实现的直接链接" title="项目8：大语言模型云边协同推理：基于KubeEdge-Ianvs实现的直接链接">​</a></h3><ul><li><strong><em>项目编号</em></strong>：2498a0324</li><li><strong><em>项目难度</em></strong>：进阶/Advanced</li><li><strong><em>导师联系</em></strong>：胡时京 <a href="mailto:sjhu21@m.fudan.edu.cn" target="_blank" rel="noopener noreferrer">sjhu21@m.fudan.edu.cn</a></li><li><strong><em>项目简述</em></strong>：目前以Llama2-70b，Qwen-72b为首的百亿、千亿参数规模的LLM模型大多只能部署在算力充足的云端提供推理服务。然而对于边缘终端的用户来说，一方面云端LLM服务面临推理速度慢、响应时延长的问题，另一方面将边缘的隐私数据上传云端处理可能面临隐私泄露的风险。同时在边缘环境可以部署的LLM模型（如TinyLlama-1.1b）推理准确率相较云端LLM有较大差距。因此，单独使用云端LLM或是边缘LLM都无法同时兼顾隐私保护、推理实时性和推理准确率，所以我们需要通过云边协同的策略结合云端LLM推理准确率高和边缘LLM推理隐私性强、速度快的优势，从而更好满足边缘用户的需求。</li><li><strong><em>项目链接</em></strong>：
<a href="https://summer-ospp.ac.cn/org/prodetail/2498a0324?lang=zh&amp;list=pro" target="_blank" rel="noopener noreferrer">https://summer-ospp.ac.cn/org/prodetail/2498a0324?lang=zh&amp;list=pro</a></li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="项目9多语言mapper支持">项目9：多语言mapper支持<a href="#项目9多语言mapper支持" class="hash-link" aria-label="项目9：多语言mapper支持的直接链接" title="项目9：多语言mapper支持的直接链接">​</a></h3><ul><li><strong><em>项目编号</em></strong>：2498a0316</li><li><strong><em>项目难度</em></strong>：进阶/Advanced</li><li><strong><em>导师联系</em></strong>：刘家伟（jiawei） <a href="mailto:jiawei.liu@daocloud.io" target="_blank" rel="noopener noreferrer">jiawei.liu@daocloud.io</a></li><li><strong><em>项目简述</em></strong>：所有的设备都可以通过厂商的驱动进行连接和控制，但是从设备拿到的信息需要转换成Kubeedge所理解的格式。Mapper就是Kubeedge和devices之间相互联系的应用程序。Mapper-framework 是一个框架，通过提供mapper运行时库和用于脚手架和代码生成的工具来生成新的mapper，使编写mapper变得更容易。目前社区有基于go语言实现的Mapper-framework，但其它语言(c、java、python)在实际业务中也有需求。需要做的事情：基于 (c、java、python)中至少一种语言实现。</li><li><strong><em>项目链接</em></strong>：
<a href="https://summer-ospp.ac.cn/org/prodetail/2498a0316?lang=zh&amp;list=pro" target="_blank" rel="noopener noreferrer">https://summer-ospp.ac.cn/org/prodetail/2498a0316?lang=zh&amp;list=pro</a></li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="项目10kubeedge边缘设备管理插件mapper支持设备发现">项目10：KubeEdge边缘设备管理插件Mapper支持设备发现<a href="#项目10kubeedge边缘设备管理插件mapper支持设备发现" class="hash-link" aria-label="项目10：KubeEdge边缘设备管理插件Mapper支持设备发现的直接链接" title="项目10：KubeEdge边缘设备管理插件Mapper支持设备发现的直接链接">​</a></h3><ul><li><strong><em>项目编号</em></strong>：2498a0331</li><li><strong><em>项目难度</em></strong>：进阶/Advanced</li><li><strong><em>导师联系</em></strong>：王彬丞 <a href="mailto:wangbincheng4@huawei.com" target="_blank" rel="noopener noreferrer">wangbincheng4@huawei.com</a></li><li><strong><em>项目简述</em></strong>：目前KubeEdge使用Mapper插件管理边缘设备，能够将边缘设备以设备孪生的形式纳管至KubeEdge集群中，以云原生的方式对边缘设备进行生命周期管理。目前Mapper管理边缘设备时，需要用户实现并提交设备CRD文件至KubeEdge集群，Mapper根据CRD文件中的定义连接并管理设备。但部分情况下设备支持自动发现，例如Onvif网络摄像头设备。本项目计划为边缘设备管理插件Mapper提供设备发现功能，能够让Mapper自动扫描发现设备，并将其纳管至KubeEdge集群，简化用户操作流程。</li><li><strong><em>项目链接</em></strong>：
<a href="https://summer-ospp.ac.cn/org/prodetail/2498a0331?lang=zh&amp;list=pro" target="_blank" rel="noopener noreferrer">https://summer-ospp.ac.cn/org/prodetail/2498a0331?lang=zh&amp;list=pro</a></li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="项目11大语言模型智能体llm-agent个性化研究基于kubeedge-ianvs云边协同终身学习">项目11：大语言模型智能体（LLM Agent）个性化研究：基于KubeEdge-Ianvs云边协同终身学习<a href="#项目11大语言模型智能体llm-agent个性化研究基于kubeedge-ianvs云边协同终身学习" class="hash-link" aria-label="项目11：大语言模型智能体（LLM Agent）个性化研究：基于KubeEdge-Ianvs云边协同终身学习的直接链接" title="项目11：大语言模型智能体（LLM Agent）个性化研究：基于KubeEdge-Ianvs云边协同终身学习的直接链接">​</a></h3><ul><li><strong><em>项目编号</em></strong>：2498a0333</li><li><strong><em>项目难度</em></strong>：进阶</li><li><strong><em>导师联系</em></strong>：杨步芳 <a href="mailto:bfyang@link.cuhk.edu.hk" target="_blank" rel="noopener noreferrer">bfyang@link.cuhk.edu.hk</a></li><li><strong><em>项目简述</em></strong>：大语言模型 (LLM)由于其卓越的推理能力和零样本能力受到广泛关注。其中，LLM Agent被视作LLM在物理世界中的一个重要落地方向。一个LLM Agent可以通过任务规划、工具调用、自我反思和任务执行，在物理世界中实现各种复杂的任务。本项目旨在通过利用云边协同框架，结合云端大模型的回答和边侧基于隐私数据生成的回答，实现个性化LLM Agent。我们计划基于KubeEdge-lanvs边云协同平台终身学习（知识库维护用户个性化的数据，终身学习本身可以支持不同边缘上有不同的模型）开发一个个性化LLM Agent。该系统能够结合云端大型LLM的泛化能力和边缘设备上的个性化用户数据，生成高质量、个性化的回答。</li><li><strong><em>项目链接</em></strong>：
<a href="https://summer-ospp.ac.cn/org/prodetail/2498a0333?lang=zh&amp;list=pro" target="_blank" rel="noopener noreferrer">https://summer-ospp.ac.cn/org/prodetail/2498a0333?lang=zh&amp;list=pro</a></li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="项目12面向标注稀缺问题的联邦类增量学习研究基于kubeedge-ianvs实现">项目12：面向标注稀缺问题的联邦类增量学习研究：基于KubeEdge-Ianvs实现<a href="#项目12面向标注稀缺问题的联邦类增量学习研究基于kubeedge-ianvs实现" class="hash-link" aria-label="项目12：面向标注稀缺问题的联邦类增量学习研究：基于KubeEdge-Ianvs实现的直接链接" title="项目12：面向标注稀缺问题的联邦类增量学习研究：基于KubeEdge-Ianvs实现的直接链接">​</a></h3><ul><li><strong><em>项目编号</em></strong>：2498a0334</li><li><strong><em>项目难度</em></strong>：进阶</li><li><strong><em>导师联系</em></strong>：陈浩锐 <a href="mailto:sechenhr@mail.scut.edu.cn" target="_blank" rel="noopener noreferrer">sechenhr@mail.scut.edu.cn</a></li><li><strong><em>项目简述</em></strong>：在边缘环境中，数据随时间不断到达边缘设备，其所包含的类别随时间不断增加。受制于赋予标记所需的成本，这些数据之中仅有少量数据带有标注。为了利用这些数据优化模型，可以通过联邦学习的方式在边缘设备间进行协作分布式模型训练。然而，传统的联邦学习仅考虑在数据不变的场景中进行有监督学习，无法在动态变化且标注稀缺的数据集上进行训练。本项目旨在充分利用不同边缘设备上标注稀缺的流式数据，通过联邦学习的方式对模型进行分布式训练，从而缓解模型在类增量学习场景中的遗忘程度，提升模型的泛化能力。</li><li><strong><em>项目链接</em></strong>：
<a href="https://summer-ospp.ac.cn/org/prodetail/2498a0334?lang=zh&amp;list=pro" target="_blank" rel="noopener noreferrer">https://summer-ospp.ac.cn/org/prodetail/2498a0334?lang=zh&amp;list=pro</a></li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="项目13面向高移动场景的异构多边协同神经网络推理">项目13：面向高移动场景的异构多边协同神经网络推理<a href="#项目13面向高移动场景的异构多边协同神经网络推理" class="hash-link" aria-label="项目13：面向高移动场景的异构多边协同神经网络推理的直接链接" title="项目13：面向高移动场景的异构多边协同神经网络推理的直接链接">​</a></h3><ul><li><strong><em>项目编号</em></strong>：2498a0335</li><li><strong><em>项目难度</em></strong>：进阶</li><li><strong><em>导师联系</em></strong>：李蕴哲 <a href="mailto:yunzhe.li@sjtu.edu.cn" target="_blank" rel="noopener noreferrer">yunzhe.li@sjtu.edu.cn</a></li><li><strong><em>项目简述</em></strong>：在高速公路、高铁等高移动场景下，个人终端设备与基站等边缘设备连接不稳定，使得基于云的服务质量难以保证。然而，近几年，AI技术已经深入我们生活的方方面面，我们在高移动场景下也需要使用有高计算、存储需求且延迟敏感的AI技术，例如对话大模型等，这给边缘AI服务带来了新的挑战。本项目旨在利用边缘的多个异构计算单元（例如个人的手机、平板、手环、笔记本电脑等多个计算设备）进行协同的AI神经网络推理，使得AI任务可以利用更近的边缘设备以较低的延迟执行完毕，提高用户的使用体验。</li><li><strong><em>项目链接</em></strong>：
<a href="https://summer-ospp.ac.cn/org/prodetail/2498a0335?lang=zh&amp;list=pro" target="_blank" rel="noopener noreferrer">https://summer-ospp.ac.cn/org/prodetail/2498a0335?lang=zh&amp;list=pro</a></li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="项目14批量节点接入">项目14：批量节点接入<a href="#项目14批量节点接入" class="hash-link" aria-label="项目14：批量节点接入的直接链接" title="项目14：批量节点接入的直接链接">​</a></h3><ul><li><strong><em>项目编号</em></strong>：2498a0325</li><li><strong><em>项目难度</em></strong>：基础/Basic</li><li><strong><em>导师联系</em></strong>：侯玲玉（lingyu） <a href="mailto:lingyu.hou@daocloud.io" target="_blank" rel="noopener noreferrer">lingyu.hou@daocloud.io</a></li><li><strong><em>项目简述</em></strong>：KubeEdge将Kubernetes的能力延伸到了边缘场景中，为云和边缘之间的网络，应用部署和元数据同步提供基础架构支持。在边缘场景中，边端节点可能处于私网中，无法从云端访问边端节点，因此需要从边端节点接入云端，反向建立双向通信链路。目前kubeedge只支持了单个节点接入，但是实际业务场景中，可能存在大量的边端节点，单个接入非常麻烦，所以需要支持批量接入节点。需要做的事情：支持批量接入节点，可以借助脚本或者其它方式实现 。</li><li><strong><em>项目链接</em></strong>：
<a href="https://summer-ospp.ac.cn/org/prodetail/2498a0325?lang=zh&amp;list=pro" target="_blank" rel="noopener noreferrer">https://summer-ospp.ac.cn/org/prodetail/2498a0325?lang=zh&amp;list=pro</a></li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="项目15提供一个通用的-mqtt-协议">项目15：提供一个通用的 MQTT 协议<a href="#项目15提供一个通用的-mqtt-协议" class="hash-link" aria-label="项目15：提供一个通用的 MQTT 协议的直接链接" title="项目15：提供一个通用的 MQTT 协议的直接链接">​</a></h3><ul><li><strong><em>项目编号</em></strong>：2498a0326</li><li><strong><em>项目难度</em></strong>：基础/Basic</li><li><strong><em>导师联系</em></strong>：方志颖（Zhiying） <a href="mailto:zhiying.fang@daocloud.io" target="_blank" rel="noopener noreferrer">zhiying.fang@daocloud.io</a></li><li><strong><em>项目简述</em></strong>：在设备硬件市场中，MQTT协议是较为常见的设备协议。我们希望能有一个通用的MQTT Mapper来处理这些使用MQTT协议的设备，并且它能够支持常见的序列化方式（json、yaml 和 xml）中获取属性值。为了实现上述需求，我们需要您完成这些任务：1. 我们期望您使用最新的Mapper-Framework框架在 kubeedeg/mappers-go 项目中新增 MQTT 协议的Mapper；2. 我们期望这个Mapper能够从指定MQTT服务的Topic获取报文，并且能用常见序列化方式（json、xml）从报文中解析出属性值；3. （可选）我们期望您能提供一个更有扩展性的方案来从更多的自定义报文中解析属性值；</li><li><strong><em>项目链接</em></strong>：
<a href="https://summer-ospp.ac.cn/org/prodetail/2498a0326?lang=zh&amp;list=pro" target="_blank" rel="noopener noreferrer">https://summer-ospp.ac.cn/org/prodetail/2498a0326?lang=zh&amp;list=pro</a></li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="项目16边缘节点支持ota升级">项目16：边缘节点支持OTA升级<a href="#项目16边缘节点支持ota升级" class="hash-link" aria-label="项目16：边缘节点支持OTA升级的直接链接" title="项目16：边缘节点支持OTA升级的直接链接">​</a></h3><ul><li><strong><em>项目编号</em></strong>：2498a0327</li><li><strong><em>项目难度</em></strong>：基础/Basic</li><li><strong><em>导师联系</em></strong>：胡炜 <a href="mailto:wei.hu@daocloud.io" target="_blank" rel="noopener noreferrer">wei.hu@daocloud.io</a></li><li><strong><em>项目简述</em></strong>：
为了使边缘节点更为方便、迅速的得到升级，我们将一种远程升级方案OTA（Over-The-Air）引入到 KubeEdge 中，在OTA主要流程（制作升级包-&gt; 下载升级包 -&gt; 验签升级包 -&gt; 固件更新）中，我们已经实现了大多步骤。我们发布版本会生成新的名为installation-package的镜像版本，然后通过NodeUpgradeJob CRD定义实现在边端节点获取镜像中的安装工具 keadm 执行升级命令升级边端节点。但在这个过程中如果黑客在节点中伪装镜像，这会导致 keadm 是不受信的，我们需要在keadm执行升级前，对镜像的摘要进行验证，也就是第三步验签升级包。并且在一些业务场景下（车联网、物联网）我们还需要提供一个可选项，使节点在等待收到一个有权限者确认后，再执行升级操作。为了实现上述需求，我们需要您完成这些任务：1. 我们期望您在边端节点升级前完成对升级镜像包摘要的验证；2. 我们期望您在NodeUpgradeJob CRD中新增一个参数，用于定义是否需要边端进行确认，如果需要，等待确认后再执行节点更新；3. 我们期望您在 MetaService 中提供确认边端节点升级的 AP I接口，并且在 <code>keadm ctl</code> 子命令中提供确认边端节点升级的命令操作；</li><li><strong><em>项目链接</em></strong>：
<a href="https://summer-ospp.ac.cn/org/prodetail/2498a0327?lang=zh&amp;list=pro" target="_blank" rel="noopener noreferrer">https://summer-ospp.ac.cn/org/prodetail/2498a0327?lang=zh&amp;list=pro</a></li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="项目17kubeedge支持边缘节点离线场景下对数据面资源的操作">项目17：KubeEdge支持边缘节点离线场景下对数据面资源的操作<a href="#项目17kubeedge支持边缘节点离线场景下对数据面资源的操作" class="hash-link" aria-label="项目17：KubeEdge支持边缘节点离线场景下对数据面资源的操作的直接链接" title="项目17：KubeEdge支持边缘节点离线场景下对数据面资源的操作的直接链接">​</a></h3><ul><li><strong><em>项目编号</em></strong>：2498a0352</li><li><strong><em>项目难度</em></strong>：进阶/Advanced</li><li><strong><em>导师联系</em></strong>：杨志佳 <a href="mailto:2938893385@qq.com" target="_blank" rel="noopener noreferrer">2938893385@qq.com</a></li><li><strong><em>项目简述</em></strong>：边缘计算场景中，边缘节点常处于离线状态，用户需要在离线状态下查看本节点的数据面资源，比如pod，device,在某些场景下可能还需要对资源进行操作，比如重启pod，修改device instance等，同时在离线场景中开发一些资源操作的API供用户或上层应用。①在kubeedge1.17中将支持边缘节点离线时对pod的重启和状态查看，还需要进一步扩展离线状态下数据面操作的功能，比如对pod的logs/exec/describe ②离线状态下支持对device资源查看，device资源的修改，上线后与云端自动同步 ③提供离线状态下操作数据面资源的API，供上层应用使用 ④保证边缘节点从离线到在线后，边缘数据同步到云</li><li><strong><em>项目链接</em></strong>：
<a href="https://summer-ospp.ac.cn/org/prodetail/2498a0352?lang=zh&amp;list=pro" target="_blank" rel="noopener noreferrer">https://summer-ospp.ac.cn/org/prodetail/2498a0352?lang=zh&amp;list=pro</a></li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="项目18windows非wsl虚拟化节点环境改造mapper支持-windows节点运行">项目18：Windows非WSL虚拟化节点环境，改造mapper支持 Windows节点运行<a href="#项目18windows非wsl虚拟化节点环境改造mapper支持-windows节点运行" class="hash-link" aria-label="项目18：Windows非WSL虚拟化节点环境，改造mapper支持 Windows节点运行的直接链接" title="项目18：Windows非WSL虚拟化节点环境，改造mapper支持 Windows节点运行的直接链接">​</a></h3><ul><li><strong><em>项目编号</em></strong>：2498a0428</li><li><strong><em>项目难度</em></strong>：进阶</li><li><strong><em>导师联系</em></strong>：吕涛涛（ttlv） <a href="mailto:steven.lv@nio.com" target="_blank" rel="noopener noreferrer">steven.lv@nio.com</a></li><li><strong><em>项目简述</em></strong>：汽车试验台架，Windows的环境下，devops自动化流水线，不开启WSL虚拟化的Windows上位机环境，将边缘的Windows节点做为边缘设备纳管的同时，依托云端的device和deviceModel的CRD定义和edgecore的devicetwin以及evenbus模块，将边缘侧的mapper做为统一的业务处理模块，实现批量下发测试多业务场景的测试任务并且实时反馈测试结果的需求。</li><li><strong><em>项目链接</em></strong>：
<a href="https://summer-ospp.ac.cn/org/prodetail/2498a0428?lang=zh&amp;list=pro" target="_blank" rel="noopener noreferrer">https://summer-ospp.ac.cn/org/prodetail/2498a0428?lang=zh&amp;list=pro</a></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="如何报名开源之夏课题">如何报名开源之夏课题？<a href="#如何报名开源之夏课题" class="hash-link" aria-label="如何报名开源之夏课题？的直接链接" title="如何报名开源之夏课题？的直接链接">​</a></h2><p><img loading="lazy" alt="summer-02" src="/zh/assets/images/summer-02-6abed1ad292ea26e45e7cda43a383999.png" width="1063" height="445" class="img_ev3q"></p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="报名对象">报名对象<a href="#报名对象" class="hash-link" aria-label="报名对象的直接链接" title="报名对象的直接链接">​</a></h4><ul><li>本活动面向年满 18 周岁的高校在校学生。</li><li>暑期即将毕业的学生，只要申请时学生证处在有效期内，就可以报名活动。</li><li>中国籍学生参与活动时需提供身份证、学生证、教育部学籍在线验证报告（学信网）或在读证明。</li><li>外籍学生参与活动时需提供护照，同时提供录取通知书、学生卡、在读证明等文件用于证明学生身份。</li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="报名时间">报名时间<a href="#报名时间" class="hash-link" aria-label="报名时间的直接链接" title="报名时间的直接链接">​</a></h4><p><strong><em> 4月30日-6月4日</em></strong> ，学生可在系统（<a href="https://summer-ospp.ac.cn/%EF%BC%89" target="_blank" rel="noopener noreferrer">https://summer-ospp.ac.cn/）</a> 注册账号并填写个人资料，资料审核通过的学生可在系统提交项目申请书。注：个人资料应在06/03 15:00 UTC+8 前完成填写并提交审核，项目申请书应在06/04 18:00 UTC+8 前完成提交。</p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="我可以在开源之夏获得什么">我可以在开源之夏获得什么？<a href="#我可以在开源之夏获得什么" class="hash-link" aria-label="我可以在开源之夏获得什么？的直接链接" title="我可以在开源之夏获得什么？的直接链接">​</a></h4><ul><li>结识开源界小伙伴和技术大牛</li><li>获得社区导师的专业指导，与开源项目开发者深度交流</li><li>丰富项目实践经验，提升项目开发技能</li><li>为学习方向提供参考，为职业发展积累人脉</li><li>通过结项考核的学生将获得结项奖金和结项证书（<strong><em>基础难度税前8000元RMB，进阶难度税前12000元RMB</em></strong>），更有机会获选优秀学生</li></ul><h4 class="anchor anchorWithStickyNavbar_LWe7" id="如何快速选定项目">如何快速选定项目<a href="#如何快速选定项目" class="hash-link" aria-label="如何快速选定项目的直接链接" title="如何快速选定项目的直接链接">​</a></h4><p>对KubeEdge社区开源之夏课题感兴趣的同学，可以 <strong><em>通过本文上方导师邮箱</em></strong>，及时联系导师沟通锁定课题。为方便同学们更快了解与找到最适合自己的课题方向，KubeEdge社区将于 <strong><em>5月8日、5月9日特别组织18个课题线上宣讲会，大咖导师空降</em></strong>，为你娓娓道来，欢迎同学们通过以下方式参会：<a href="https://zoom.us/my/kubeedge" target="_blank" rel="noopener noreferrer">https://zoom.us/my/kubeedge</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="开源之夏" term="开源之夏"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[KubeEdge v1.16.0 版本发布！]]></title>
        <id>https://kubeedge.io/zh/blog/release-v1.16</id>
        <link href="https://kubeedge.io/zh/blog/release-v1.16"/>
        <updated>2024-01-27T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[北京时间2024年1月23日，KubeEdge发布1.16版本。新版本新增多个增强功能，在集群升级、集群易用性、边缘设备管理等方面均有大幅提升。]]></summary>
        <content type="html"><![CDATA[<p>北京时间2024年1月23日，KubeEdge发布1.16版本。新版本新增多个增强功能，在集群升级、集群易用性、边缘设备管理等方面均有大幅提升。</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="kubeedge-v116-新增特性">KubeEdge v1.16 新增特性：<a href="#kubeedge-v116-新增特性" class="hash-link" aria-label="KubeEdge v1.16 新增特性：的直接链接" title="KubeEdge v1.16 新增特性：的直接链接">​</a></h2><ul><li><a href="#%E9%9B%86%E7%BE%A4%E5%8D%87%E7%BA%A7%E6%94%AF%E6%8C%81%E4%BA%91%E8%BE%B9%E7%BB%84%E4%BB%B6%E8%87%AA%E5%8A%A8%E5%8C%96%E5%8D%87%E7%BA%A7">集群升级：支持云边组件自动化升级</a></li><li><a href="#%E6%94%AF%E6%8C%81%E8%BE%B9%E7%BC%98%E8%8A%82%E7%82%B9%E7%9A%84%E9%95%9C%E5%83%8F%E9%A2%84%E4%B8%8B%E8%BD%BD">支持边缘节点的镜像预下载</a></li><li><a href="#%E6%94%AF%E6%8C%81%E4%BD%BF%E7%94%A8keadm%E5%AE%89%E8%A3%85windows%E8%BE%B9%E7%BC%98%E8%8A%82%E7%82%B9">支持使用Keadm安装Windows边缘节点</a></li><li><a href="#%E5%A2%9E%E5%8A%A0%E5%A4%9A%E7%A7%8D%E5%AE%B9%E5%99%A8%E8%BF%90%E8%A1%8C%E6%97%B6%E7%9A%84%E5%85%BC%E5%AE%B9%E6%80%A7%E6%B5%8B%E8%AF%95">增加多种容器运行时的兼容性测试</a></li><li><a href="#edgeapplication%E4%B8%AD%E6%94%AF%E6%8C%81%E6%9B%B4%E5%A4%9Adeployment%E5%AF%B9%E8%B1%A1%E5%AD%97%E6%AE%B5%E7%9A%84override">EdgeApplication中支持更多Deployment对象字段的Override</a></li><li><a href="#%E6%94%AF%E6%8C%81%E5%9F%BA%E4%BA%8Emapper-framework%E7%9A%84mapper%E5%8D%87%E7%BA%A7">支持基于Mapper-Framework的Mapper升级</a></li><li><a href="#dmi%E6%95%B0%E6%8D%AE%E9%9D%A2%E5%86%85%E7%BD%AE%E9%9B%86%E6%88%90redis%E4%B8%8Etdengine%E6%95%B0%E6%8D%AE%E5%BA%93">DMI数据面内置集成Redis与TDEngine数据库</a></li><li><a href="#%E5%9F%BA%E4%BA%8Emapper-framework%E7%9A%84usb-camera-mapper%E5%AE%9E%E7%8E%B0">基于Mapper-Framework的USB-Camera Mapper实现</a></li><li><a href="#%E6%98%93%E7%94%A8%E6%80%A7%E6%8F%90%E5%8D%87%E5%9F%BA%E4%BA%8Ekeadm%E7%9A%84%E9%83%A8%E7%BD%B2%E8%83%BD%E5%8A%9B%E5%A2%9E%E5%BC%BA">易用性提升：基于Keadm的部署能力增强</a></li><li><a href="#%E5%8D%87%E7%BA%A7k8s%E4%BE%9D%E8%B5%96%E5%88%B0v127">升级K8s依赖到v1.27</a></li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="新特性概览">新特性概览<a href="#新特性概览" class="hash-link" aria-label="新特性概览的直接链接" title="新特性概览的直接链接">​</a></h2><h3 class="anchor anchorWithStickyNavbar_LWe7" id="集群升级支持云边组件自动化升级">集群升级：支持云边组件自动化升级<a href="#集群升级支持云边组件自动化升级" class="hash-link" aria-label="集群升级：支持云边组件自动化升级的直接链接" title="集群升级：支持云边组件自动化升级的直接链接">​</a></h3><p>随着KubeEdge社区的持续发展，社区版本不断迭代；用户环境版本升级的诉求亟需解决。针对升级步骤难度大，边缘节点重复工作多的问题，v1.16.0版本的 KubeEdge 支持了云边组件的自动化升级。用户可以通过Keadm工具一键化升级云端，并且可以通过创建相应的Kubernetes API，批量升级边缘节点。</p><ul><li><p><strong>云端升级</strong></p><p>  云端升级指令使用了三级命令与边端升级进行了区分，指令提供了让用户使用更便捷的方式来对云端的KubeEdge组件进行升级。当前版本升级完成后会打印ConfigMap历史配置，如果用户手动修改过ConfigMap，用户可以选择通过历史配置信息来还原配置文件。我们可以通过help参数查看指令的指导信息：</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 --help</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">Upgrade the cloud components to the desired version, it uses helm to upgrade the installed release of cloudcore chart, which includes all the cloud components</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 upgrade cloud [flags]</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">Flags:</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      --advertise-address string    Please set the same value as when you installed it, this value is only used to generate the configuration and does not regenerate the certificate. eg: 10.10.102.78,10.10.102.79</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  -d, --dry-run                     Print the generated k8s resources on the stdout, not actual execute. Always use in debug mode</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      --external-helm-root string   Add external helm root path to keadm</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      --force                       Forced upgrading the cloud components without waiting</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  -h, --help                        help for cloud</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      --kube-config string          Use this key to update kube-config path, eg: $HOME/.kube/config (default "/root/.kube/config")</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      --kubeedge-version string     Use this key to set the upgrade image tag</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      --print-final-values          Print the final values configuration for debuging</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      --profile string              Sets profile on the command line. If '--values' is specified, this is ignored</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      --reuse-values                reuse the last release's values and merge in any overrides from the command line via --set and -f.</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      --set stringArray             Sets values on the command line (can specify multiple or separate values with commas: key1=val1,key2=val2)</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      --values stringArray          specify values in a YAML file (can specify multiple)</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" 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>  升级指令样例：</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=&lt;init时设置的值&gt; --kubeedge-version=v1.16.0</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" 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>边端升级</strong></p><p>  v1.16.0版本的KubeEdge支持通过NodeUpgradeJob的Kubernetes API进行边缘节点的一键化、批量升级。API支持边缘节点的升级预检查、并发升级、失败阈值、超时处理等功能。对此，KubeEdge支持了云边任务框架。社区开发者将无需关注任务控制、状态上报等逻辑实现，只需聚焦云边任务功能本身。</p><p>  升级API样例：</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="复制代码到剪贴板" title="复制" 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>兼容测试</strong></p><p>  KubeEdge社区提供了完备了版本兼容性测试，用户在升级时仅需要保证云边版本差异不超过2个版本，就可以避免升级期间云边版本不一致带来的问题。</p></li></ul><p><strong>更多信息可参考</strong>:</p><p><a href="https://github.com/kubeedge/kubeedge/pull/5330" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubeedge/pull/5330</a>
<a href="https://github.com/kubeedge/kubeedge/pull/5229" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubeedge/pull/5229</a>
<a href="https://github.com/kubeedge/kubeedge/pull/5289" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubeedge/pull/5289</a></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="支持边缘节点的镜像预下载">支持边缘节点的镜像预下载<a href="#支持边缘节点的镜像预下载" class="hash-link" aria-label="支持边缘节点的镜像预下载的直接链接" title="支持边缘节点的镜像预下载的直接链接">​</a></h3><p>新版本引入了镜像预下载新特性，用户可以通过ImagePrePullJob的Kubernetes API提前在边缘节点上加载镜像，该特性支持在批量边缘节点或节点组中预下载多个镜像，帮助减少加载镜像在应用部署或更新过程，尤其是大规模场景中，带来的失败率高、效率低下等问题。</p><p>镜像预下载API示例：</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="复制代码到剪贴板" title="复制" 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>更多信息可参考</strong>:</p><p><a href="https://github.com/kubeedge/kubeedge/pull/5310" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubeedge/pull/5310</a>
<a href="https://github.com/kubeedge/kubeedge/pull/5331" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubeedge/pull/5331</a></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="支持使用keadm安装windows边缘节点">支持使用Keadm安装Windows边缘节点<a href="#支持使用keadm安装windows边缘节点" class="hash-link" aria-label="支持使用Keadm安装Windows边缘节点的直接链接" title="支持使用Keadm安装Windows边缘节点的直接链接">​</a></h3><p>KubeEdge 1.15版本实现了在Windows上运行边缘节点，在新版本中，我们支持使用安装工具Keadm直接安装Windows边缘节点，操作命令与Linux边缘节点相同，简化了边缘节点的安装步骤。</p><p><strong>更多信息可参考</strong>:</p><p><a href="https://github.com/kubeedge/kubeedge/pull/4968" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubeedge/pull/4968</a></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="增加多种容器运行时的兼容性测试">增加多种容器运行时的兼容性测试<a href="#增加多种容器运行时的兼容性测试" class="hash-link" aria-label="增加多种容器运行时的兼容性测试的直接链接" title="增加多种容器运行时的兼容性测试的直接链接">​</a></h3><p>新版本中新增了多种容器运行时的兼容性测试，目前已集成了<code>containerd</code>，<code>docker</code>，<code>isulad</code>和<code>cri-o</code> 4种主流容器运行时，保障KubeEdge版本发布质量，用户在安装容器运行时过程中也可以参考该PR中的适配安装脚本。</p><p><strong>更多信息可参考</strong>:</p><p><a href="https://github.com/kubeedge/kubeedge/pull/5321" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubeedge/pull/5321</a></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="edgeapplication中支持更多deployment对象字段的override">EdgeApplication中支持更多Deployment对象字段的Override<a href="#edgeapplication中支持更多deployment对象字段的override" class="hash-link" aria-label="EdgeApplication中支持更多Deployment对象字段的Override的直接链接" title="EdgeApplication中支持更多Deployment对象字段的Override的直接链接">​</a></h3><p>在新版本中，我们扩展了EdgeApplication中的差异化配置项（overriders），主要的扩展有环境变量、命令参数和资源。当您不同区域的节点组环境需要链接不同的中间件时，就可以使用环境变量（env）或者命令参数（command, args）去重写中间件的链接信息。或者当您不同区域的节点资源不一致时，也可以使用资源配置（resources）去重写cpu和内存的配置。</p><p><strong>更多信息可参考</strong>:</p><p><a href="https://github.com/kubeedge/kubeedge/pull/5262" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubeedge/pull/5262</a>
<a href="https://github.com/kubeedge/kubeedge/pull/5370" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubeedge/pull/5370</a></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="支持基于mapper-framework的mapper升级">支持基于Mapper-Framework的Mapper升级<a href="#支持基于mapper-framework的mapper升级" class="hash-link" aria-label="支持基于Mapper-Framework的Mapper升级的直接链接" title="支持基于Mapper-Framework的Mapper升级的直接链接">​</a></h3><p>1.16版本中，基于Mapper开发框架Mapper-Framework构建了Mapper组件的升级能力。新框架生成的Mapper工程以依赖引用的方式导入原有Mapper-Framework的部分功能，在需要升级时，用户能够以升级依赖版本的方式完成，简化Mapper升级流程。</p><ul><li><p>Mapper-Framework代码解耦:</p><p>  1.16版本中将Mapper-Framework中的代码解耦为用户层和业务层。用户层功能包括设备驱动及与之强相关的部分管理面数据面能力，仍会随Mapper-Framework生成在用户Mapper工程中，用户可根据实际情况修改。业务层功能包括Mapper向云端注册、云端下发Device列表等能力，会存放在kubeedge/mapper-framework子库中。</p></li><li><p>Mapper升级框架:</p><p>  1.16版本Mapper-Framework生成的用户Mapper工程通过依赖引用的方式使用kubeedge/mapper-framework子库中业务层功能，实现完整的设备管理功能。后续用户能够通过升级依赖版本的方式达到升级Mapper的目的，不再需要手动修改大范围代码。</p></li></ul><p><strong>更多信息可参考</strong>:</p><p><a href="https://github.com/kubeedge/kubeedge/pull/5308" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubeedge/pull/5308</a>
<a href="https://github.com/kubeedge/kubeedge/pull/5326" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubeedge/pull/5326</a></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="dmi数据面内置集成redis与tdengine数据库">DMI数据面内置集成Redis与TDEngine数据库<a href="#dmi数据面内置集成redis与tdengine数据库" class="hash-link" aria-label="DMI数据面内置集成Redis与TDEngine数据库的直接链接" title="DMI数据面内置集成Redis与TDEngine数据库的直接链接">​</a></h3><p>1.16版本中进一步增强DMI数据面中向用户数据库推送数据的能力，增加Redis与TDengine数据库作为内置数据库。用户能够直接在device-instance配置文件中定义相关字段，实现Mapper自动向Redis与TDengine数据库推送设备数据的功能，相关数据库字段定义为：</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">"poolsize,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="复制代码到剪贴板" title="复制" 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="复制代码到剪贴板" title="复制" 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>更多信息可参考</strong>:</p><p><a href="https://github.com/kubeedge/kubeedge/pull/5064" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubeedge/pull/5064</a></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="基于mapper-framework的usb-camera-mapper实现">基于Mapper-Framework的USB-Camera Mapper实现<a href="#基于mapper-framework的usb-camera-mapper实现" class="hash-link" aria-label="基于Mapper-Framework的USB-Camera Mapper实现的直接链接" title="基于Mapper-Framework的USB-Camera Mapper实现的直接链接">​</a></h3><p>基于KubeEdge的Mapper-Framework，新版本提供了USB-Camera的Mapper样例，该Mapper根据USB协议的Camera开发，用户可根据该样例和Mapper-Framework更轻松地开发具体业务相关的Mapper。</p><p>在样例中提供了helm chart包，用户可以通过修改usbmapper-chart/values.yaml部署UBS-Camera Mapper，主要添加USB-Camera的设备文件, nodeName, USB-Camera的副本数，其余配置修改可根据具体情况而定，通过样例目录中的Dockerfile制作Mapper镜像。</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">global</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">replicaCounts</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 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">cameraUsbMapper</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">replicaCount</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><span class="token comment" style="color:#999988;font-style:italic">#USB-Camera的副本数</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">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 punctuation" style="color:#393A34">...</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">nodeSelectorAndDevPath</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">mapper</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">edgeNode</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"edgenode02"</span><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">#USB-Camera连接的缘节点nodeName</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">devPath</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"/dev/video0"</span><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">#USB-Camera的设备文件</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">edgeNode</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"edgenode1"</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">devPath</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">"/dev/video17"</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 punctuation" style="color:#393A34">...</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" 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>USB-Camera Mapper的部署命令如下：</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">helm install usbmapper-chart ./usbmapper-chart</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" 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>更多信息可参考</strong>:</p><p><a href="https://github.com/kubeedge/mappers-go/pull/122" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/mappers-go/pull/122</a></p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="易用性提升基于keadm的部署能力增强">易用性提升：基于Keadm的部署能力增强<a href="#易用性提升基于keadm的部署能力增强" class="hash-link" aria-label="易用性提升：基于Keadm的部署能力增强的直接链接" title="易用性提升：基于Keadm的部署能力增强的直接链接">​</a></h3><ul><li><p><strong>添加云边通信协议配置参数</strong></p><p>  在KubeEdge v1.16.0中，使用keadm join边缘节点时，支持使用--hub-protocol配置云边通信协议。目前KubeEdge支持websocket和quic两种通信协议，默认为websocket协议。</p><p>  命令示例：</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 join --cloudcore-ipport &lt;云节点ip&gt;:10001 --hub-protocol=quic --kubeedge-version=v1.16.0 --token=xxxxxxxx</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" 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>说明</strong>：当--hub-protocol设置为quic时，需要将--cloudcore-ipport的端口设置为10001，并需在CloudCore的ConfigMap中打开quic开关，即设置modules.quic.enable为true。</p><p>  操作示例：使用kubectl edit cm -n kubeedge cloudcore，将quic的enable属性设置成true，保存修改后重启CloudCore的pod。</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">modules：</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 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">quic</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">address</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> 0.0.0.0</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><span class="token plain">  </span><span class="token comment" style="color:#999988;font-style:italic">#quic协议开关</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">maxIncomingStreams</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">10000</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">port</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">10001</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" 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>更多信息可参考</strong>:</p><p>  <a href="https://github.com/kubeedge/kubeedge/pull/5156" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubeedge/pull/5156</a></p></li><li><p>keadm join与CNI插件解耦</p><p>  在新版本中，keadm join边缘节点时，不需要再提前安装CNI插件，已将边缘节点的部署与CNI插件解耦。同时该功能已同步到v1.12及更高版本，欢迎用户使用新版本或升级老版本。</p><p>  <strong>说明</strong>：如果部署在边缘节点上的应用程序需要使用容器网络，则在部署完edgecore后仍然需要安装CNI插件。</p><p>  <strong>更多信息可参考</strong>:</p><p>  <a href="https://github.com/kubeedge/kubeedge/pull/5196" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubeedge/pull/5196</a></p></li></ul><h3 class="anchor anchorWithStickyNavbar_LWe7" id="升级k8s依赖到v127">升级K8s依赖到v1.27<a href="#升级k8s依赖到v127" class="hash-link" aria-label="升级K8s依赖到v1.27的直接链接" title="升级K8s依赖到v1.27的直接链接">​</a></h3><p>新版本将依赖的Kubernetes版本升级到v1.27.7，您可以在云和边缘使用新版本的特性。</p><p><strong>更多信息可参考</strong>:</p><p><a href="https://github.com/kubeedge/kubeedge/pull/5121" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubeedge/pull/5121</a></p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="版本升级注意事项">版本升级注意事项<a href="#版本升级注意事项" class="hash-link" aria-label="版本升级注意事项的直接链接" title="版本升级注意事项的直接链接">​</a></h2><p>新版本我们使用DaemonSet来管理边端的MQTT服务Eclipse Mosquitto了，我们能够通过云端Helm Values配置来设置是否要开启MQTT服务。使用DaemonSet管理MQTT后，我们可以方便的对边端MQTT进行统一管理，比如我们可以通过修改DaemonSet的配置将边端MQTT替换成EMQX。</p><p>但是如果您是从老版本升级到最新版本，则需要考虑版本兼容问题，同时使用原本由静态Pod管理的MQTT和使用新的DaemonSet管理的MQTT会产生端口冲突。兼容操作步骤参考：</p><ol><li>您可以在云端执行命令，将旧的边缘节点都打上自定义标签</li></ol><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">kubectl label nodes --selector=node-role.kubernetes.io/edge without-mqtt-daemonset=""</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" 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><ol start="2"><li>您可以修改MQTT DaemonSet的节点亲和性</li></ol><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">nodeAffinity</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">requiredDuringSchedulingIgnoredDuringExecution</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">nodeSelectorTerms</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 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"> without</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">mqtt</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">daemonset</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"> Exists</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" 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><ol start="3"><li>将节点MQTT改为由DaemonSet管理</li></ol><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"># 修改/lib/systemd/system/edgecore.service，将环境变量DEPLOY_MQTT_CONTAINER设置成false</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># 这步可以放在更新EdgeCore前修改，这样就不用重启EdgeCore了</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">sed -i '/DEPLOY_MQTT_CONTAINER=/s/true/false/' /etc/systemd/system/edgecore.service</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"># 停止EdgeCore</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">systemctl daemon-reload &amp;&amp; systemctl stop edgecore</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"># 删除MQTT容器，Containerd可以使用nerdctl替换docker</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">docker ps -a | grep mqtt-kubeedge | awk '{print $1}' | xargs docker rm -f</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"># 启动EdgeCore</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">systemctl start edgecore</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><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">kubectl label nodes &lt;NODE_NAME&gt; without-mqtt-daemonset</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="复制代码到剪贴板" title="复制" 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>新版本的keadm join命令会隐藏with-mqtt参数，并且将默认值设置成false，如果您还想使用静态Pod管理MQTT，您仍然可以设置参数--with-mqtt来使其生效。with-mqtt参数在v1.18版本中将会被移除。</p>]]></content>
        <author>
            <name>KubeEdge SIG Release</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="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/zh/blog/release-v1.15</id>
        <link href="https://kubeedge.io/zh/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="v1.15 What's New的直接链接" title="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="Release Highlights的直接链接" title="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="Support Windows-based Edge Nodes的直接链接" title="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="New v1beta1 version of Device API的直接链接" title="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="Support Alpha version of DMI DatePlane and Mapper-Framework的直接链接" title="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="Support Kubernetes native Static Pod on Edge Nodes的直接链接" title="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="Support more Kubernetes Native Plugin Running on Edge Node的直接链接" title="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="Upgrade Kubernetes Dependency to v1.26.7的直接链接" title="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="Important Steps before Upgrading的直接链接" title="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/zh/blog/release-v1.14</id>
        <link href="https://kubeedge.io/zh/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="v1.14 What's New的直接链接" title="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="Release Highlights的直接链接" title="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="Support Authentication and Authorization for Kube-API Endpoint for Applications On Edge Nodes的直接链接" title="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="Support Cluster Scope Resource Reliable Delivery to Edge Node的直接链接" title="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="Upgrade Kubernetes Dependency to v1.24.14的直接链接" title="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>备注</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="Support Kubectl Attach to Container Running on Edge Node的直接链接" title="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="Alpha version of KubeEdge Dashboard的直接链接" title="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="Important Steps before Upgrading的直接链接" title="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[CNCF社区首个！KubeEdge达到软件供应链SLSA L3等级]]></title>
        <id>https://kubeedge.io/zh/blog/reach-slsa-l3</id>
        <link href="https://kubeedge.io/zh/blog/reach-slsa-l3"/>
        <updated>2023-01-19T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[KubeEdge 社区已于 2022 年 7 月份完成整个 KubeEdge 项目的第三方安全审计，已发布云原生边缘计算安全威胁分析和防护白皮书，并根据安全威胁模型和安全审计的建议，对 KubeEdge 软件供应链进行持续安全加固。经过社区的不断努力，我们很兴奋地宣布，在 2023 年 1 月 18 日发布的 v1.13.0 版本中，KubeEdge 项目已达到 SLSA L3 等级（包括二进制和容器镜像构件），成为 CNCF 社区首个达到 SLSA L3 等级的项目。]]></summary>
        <content type="html"><![CDATA[<p>KubeEdge 社区已于 2022 年 7 月份完成整个 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">第三方安全审计</a>，已发布云原生边缘计算安全威胁分析和防护白皮书，并根据安全威胁模型和安全审计的建议，对 KubeEdge 软件供应链进行持续安全加固。经过社区的不断努力，我们很兴奋地宣布，在 2023 年 1 月 18 日发布的 v1.13.0 版本中，KubeEdge 项目已达到 SLSA L3 等级（包括二进制和容器镜像构件），成为 CNCF 社区首个达到 SLSA L3 等级的项目。</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="为什么说达到-slsa-l3-等级对-kubeedge-项目十分重要">为什么说达到 SLSA L3 等级对 KubeEdge 项目十分重要<a href="#为什么说达到-slsa-l3-等级对-kubeedge-项目十分重要" class="hash-link" aria-label="为什么说达到 SLSA L3 等级对 KubeEdge 项目十分重要的直接链接" title="为什么说达到 SLSA L3 等级对 KubeEdge 项目十分重要的直接链接">​</a></h2><p>软件供应链完整性攻击（对软件包的未经授权的修改）在过去三年中呈上升趋势，KubeEdge 实现 SLSA L3 等级标准后，可以端到端的从源码构建到发布流程进行安全加固，保障用户获取到的二进制或容器镜像产物不被恶意篡改。基于 SLSA 安全框架，可以潜在地加强软件构件的完整性。SLSA 提供端到端的指导原则，可以作为软件的一组防御措施，并防止对组成软件产品的软件包的篡改或任何类型的未经授权的修改。采用 SLSA 框架可以保护项目软件免受常见的供应链攻击。</p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="关于-slsa">关于 SLSA<a href="#关于-slsa" class="hash-link" aria-label="关于 SLSA的直接链接" title="关于 SLSA的直接链接">​</a></h2><p>什么是 SLSA（Supply chain Levels for Software Artifacts 软件构件的供应链级别）：</p><p>Google 提出的用于保证整个软件供应链完整性的框架 SLSA，是一套基于行业共识的安全准则，也是一个安全框架、一份标准和控制清单，用于防止篡改、提高完整性以及保护项目、业务或企业中的软件包和基础设施。它不是一个单一的工具，而是一个逐步采用的大纲，以防止工件被篡改和被篡改的工件被使用，并在更高层次上强化构成供应链的平台。生产商遵循 SLSA 准则使他们的软件更加安全，用户则根据软件包的安全状况来做出决策。</p><p>截止目前，SLSA 标准处于 alpha 阶段，相关的定义可能会发生变化。</p><p>下图描述了软件供应链中已知的攻击点。更多详细描述，可参考<a href="https://slsa.dev/" target="_blank" rel="noopener noreferrer">https://slsa.dev/</a></p><p><img loading="lazy" alt="slsa-dev" src="/zh/assets/images/slsa-dev-9956b5ed19fef734a38384ffb8602be1.png" width="964" height="538" class="img_ev3q"></p><p>SLSA 框架引入了许多新的工具和概念，例如：</p><ul><li>Artifact（软件制品）：由构建流水线生成的任何制品文件，如容器镜像、语言包、编译的二进制文件等；</li><li>Provenance （来源证据链）： 构建的元数据包括构建过程、构建源和依赖关系；</li><li>Digest （数字摘要）：加密哈希函数的结果，该函数生成唯一标识工件的固定大小值，例如容器镜像的 SHA-256 哈希；</li><li>Attestation （证书）：一个加密签名的文件，记录当时生成软件产物的来源；</li><li>Immutable references（不可变引用-一种标识符）：，保证始终指向相同的、不可变的软件制品，如特定的容器图像或语言包；</li><li>Build integrity（构建完整性）：验证构建流水线的输出完整性。</li></ul><h2 class="anchor anchorWithStickyNavbar_LWe7" id="kubeedge-项目如何达到-slsa-l3">KubeEdge 项目如何达到 SLSA L3<a href="#kubeedge-项目如何达到-slsa-l3" class="hash-link" aria-label="KubeEdge 项目如何达到 SLSA L3的直接链接" title="KubeEdge 项目如何达到 SLSA L3的直接链接">​</a></h2><p>截止目前，SLSA 评估等级共分为 4 个等级 L1~L4，安全性由低到高，每个等级有不同的达标要求，详细的达标要求可参考 SLSA 详细标准（<a href="https://slsa.dev/spec/v0.1/requirements%EF%BC%89%E3%80%82" target="_blank" rel="noopener noreferrer">https://slsa.dev/spec/v0.1/requirements）。</a></p><p>在去年 7 月发布的第三方安全审计报告中，KubeEdge 项目在软件供应链 SLSA Provenance 维度暂未达到 L3 等级，经过 SIG-Security 的持续安全加固，在今年 1 月发布的 v1.13.0 版本中，KubeEdge 项目在所有的 SLSA 维度中均达到 L3 等级。以下表格展示了 KubeEdge 在<strong>Source</strong>、<strong>Build</strong>、<strong>Provenance</strong>、<strong>Common</strong>中的达标情况（Y 表示 KubeEdge 已达标，空格表示 SLSA 在该等级下未要求）。</p><p><strong>SLSA 评估表格及达标情况</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>TODO</td></tr><tr><td>Authenticated</td><td></td><td>Y</td><td>Y</td><td>TODO</td></tr><tr><td>Service generated</td><td></td><td>Y</td><td>Y</td><td>TODO</td></tr><tr><td>Non-falsifiable</td><td></td><td></td><td>Y</td><td>TODO</td></tr><tr><td>Dependencies complete</td><td></td><td></td><td></td><td>TODO</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>本章节将着重介绍 KubeEdge 如何达成 SLSA L3 等级在 Build、Provenance 维度的要求。Build/Provenance Requirements 及 KubeEdge 相应的解决方案如下。</p><p><strong>Build Requirements：</strong></p><p>a) <strong>通过脚本构建：</strong>所有的构建步骤都是通过脚本自动化执行。</p><p>b) <strong>通过构建服务进行构建：</strong>所有的构建步骤由构建服务完成，不在开发者本地环境。构建服务如 GitHub Actions、第三方云平台提供的构建服务等。</p><p>c) <strong>作为源码构建：</strong>构建服务执行的构建定义文件和配置文件来源于版本控制系统中的文本文件，并且是可验证的。</p><p>d) <strong>构建环境临时性：</strong>构建服务确保构建步骤在临时环境中运行，例如容器或 VM，仅为此构建提供，而不是复用先前的构建 。</p><p>e) <strong>构建的隔离性：</strong>构建服务确保构建步骤在隔离的环境中运行，不受其他构建实例(无论是先前的还是并发的)的影响。</p><p>f) <strong>无用户自定义参数：</strong>除了构建入口点和初始源配置之外，构建输出不会受到用户参数的影响。换句话说，构建完全是通过构建脚本定义的，而不是其他。</p><p>g) <strong>封闭性：</strong>所有可传递的构建步骤、源和依赖项都使用不可变引用预先完全声明，并且构建步骤在没有网络访问的情况下运行。</p><p><strong>解决方案：</strong></p><p>KubeEdge 项目所有的构建流程均在 GitHub 上由脚本自动化执行，GitHub Actions 作为构建服务（相关的定义文件和配置文件保存在.github/workflows 目录下），可保障构建过程的可回溯、可验证以及构建环境的临时性、隔离性、构建参数和依赖项不可篡改。</p><p><strong>Provenance Requirements：</strong></p><p>a) <strong>可用性：</strong>Provenance 通过用户可接受的格式提供。应该满足 SLSA Provenance 格式，但如果生产商和用户都同意，并且满足所有其他要求，可以使用另一种格式。</p><p>b) <strong>可验证：</strong>Provenance 的真实性和完整性可以由用户验证。这应该通过来自私钥的数字签名来实现，只有生成 Provenance 的服务才能访问私钥。</p><p>c) <strong>通过构建服务生成：</strong>Provenance 中的数据必须从构建服务中获得。</p><p>d) <strong>不可伪造：</strong>构建服务的用户不能伪造 Provenance。</p><p>e) <strong>第三方依赖的完整性：</strong>Provenance 记录运行构建步骤时可用的所有构建依赖项。包括构建的机器、VM 或容器的初始状态。</p><p><strong>解决方案：</strong></p><p>在 KubeEdge 版本发布的产物中，包括二进制文件和容器镜像 2 种格式，通过集成 SLSA 官方的 GitHub 构建项目 slsa-github-generator 来实现 SLSA L3 等级。</p><p>在 KubeEdge 版本发布的流程（.github/workflows/release.yml）中，集成了 slsa-framework/slsa-github-generator/.github/workflows/generator_generic_slsa3.yml 和 slsa-framework/slsa-github-generator/.github/workflows/generator_container_slsa3.yml，可保障构建和发布产物（包括二进制文件和容器镜像）的流程满足 SLSA L3 等级的要求。</p><p>更多关于 slsa-github-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><h3 class="anchor anchorWithStickyNavbar_LWe7" id="关于-provenance">关于 Provenance<a href="#关于-provenance" class="hash-link" aria-label="关于 Provenance的直接链接" title="关于 Provenance的直接链接">​</a></h3><p>Provenance 是构建的元数据包括构建过程、构建源和依赖关系，是软件构建和发布执行流程的一种证明，并且是可以被验证的，包括构建的源码仓库、代码分支、配置文件等信息。在 SLSA L3 级别，Provenance 内容是真实的、防篡改的，并且不会被项目维护者更改。二进制发布产物的 Provenance 文件随发布软件包一起发布，名称为 multiple.intoto.jsonl，容器镜像的 Provenance 文件随镜像文件一起上传到 KubeEdge dockerhub 公开仓库中。具体的 Provenance 格式说明，请参考<a href="https://github.com/slsa-framework/slsa-github-generator/blob/main/internal/builders/generic/README.md#provenance-format%E3%80%82" 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="如何校验-kubeedge-发布产物是否满足-slsa-l3-等级">如何校验 KubeEdge 发布产物是否满足 SLSA L3 等级<a href="#如何校验-kubeedge-发布产物是否满足-slsa-l3-等级" class="hash-link" aria-label="如何校验 KubeEdge 发布产物是否满足 SLSA L3 等级的直接链接" title="如何校验 KubeEdge 发布产物是否满足 SLSA L3 等级的直接链接">​</a></h3><p>详细步骤描述请见<a href="https://github.com/kubeedge/kubeedge/pull/4285" target="_blank" rel="noopener noreferrer">https://github.com/kubeedge/kubeedge/pull/4285</a></p><p>校验示例如下：</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="复制代码到剪贴板" title="复制" 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="复制代码到剪贴板" title="复制" 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="slsa-github-generator-签名和验证原理">SLSA GitHub generator 签名和验证原理<a href="#slsa-github-generator-签名和验证原理" class="hash-link" aria-label="SLSA GitHub generator 签名和验证原理的直接链接" title="SLSA GitHub generator 签名和验证原理的直接链接">​</a></h2><p>使用 OpenID Connect (OIDC) 向外部服务 (Sigstore) 证明工作流的身份。OpenID Connect (OIDC) 是身份提供商在网络上使用的标准，用于为第三方证明用户的身份。 GitHub 现在在其工作流程中支持 OIDC。每次运行工作流程时，运行者都可以从 GitHub 的 OIDC 提供商处创建一个唯一的 JWT 令牌。令牌包含工作流身份的可验证信息，包括调用者存储库、提交哈希、触发器以及当前（可重用）工作流路径和引用。</p><p>使用 OIDC，工作流向 Sigstore 的 Fulcio 根证书颁发机构证明其身份，后者充当外部验证服务。 Fulcio 签署了一份短期证书，证明运行器中生成的临时签名密钥并将其与工作负载身份相关联。签署出处的记录保存在 Sigstore 的透明日志 Rekor 中。用户可以使用签名证书作为信任方来验证来源是否经过身份验证且不可伪造；它必须是在受信任的构建器中创建的。流程图如下所示。</p><p><img loading="lazy" alt="sigstore" src="/zh/assets/images/sigstore-c01b845a047326ae858793968c0ee24e.png" width="1040" height="388" class="img_ev3q"></p><p>值得一提的是，SLSA GitHub generator 获得 sigstore 社区 2022 年度徽章 Best User Adopter。</p><p><img loading="lazy" alt="best-user-adopter" src="/zh/assets/images/best-user-adopter-3805ca4f3c13221d7b50b0a46613cd2a.png" width="798" height="324" class="img_ev3q"></p><h2 class="anchor anchorWithStickyNavbar_LWe7" id="总结">总结<a href="#总结" class="hash-link" aria-label="总结的直接链接" title="总结的直接链接">​</a></h2><p>SLSA 在 KubeEdge 项目软件供应链安全中发挥着重要作用。基于 sigstore 社区提供的能力，从源码到发布产物，对软件供应链端到端的整个流程进行签名和校验，确保 KubeEdge 软件供应链安全。</p><p><strong>相关参考：</strong></p><p><a href="https://slsa.dev/" target="_blank" rel="noopener noreferrer">https://slsa.dev/</a></p><p><a href="https://www.sigstore.dev/" target="_blank" rel="noopener noreferrer">https://www.sigstore.dev/</a></p><p><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><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><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><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="软件供应链" term="软件供应链"/>
        <category label="边缘计算" term="边缘计算"/>
    </entry>
    <entry>
        <title type="html"><![CDATA[KubeEdge v1.13 is live!]]></title>
        <id>https://kubeedge.io/zh/blog/release-v1.13</id>
        <link href="https://kubeedge.io/zh/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="v1.13 What's New的直接链接" title="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="Performance Improvement的直接链接" title="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="Security Improvement的直接链接" title="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="Upgrade Kubernetes Dependency to v1.23.15的直接链接" title="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="Modbus Mapper based on DMI的直接链接" title="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="Support Rolling Upgrade for Edge Nodes from Cloud的直接链接" title="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="Test Runner for conformance test的直接链接" title="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="EdgeMesh: Added configurable field TunnelLimitConfig to edge-tunnel module的直接链接" title="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="Important Steps before Upgrading的直接链接" title="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/zh/blog/release-v1.12</id>
        <link href="https://kubeedge.io/zh/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="What's New in KubeEdge v1.12的直接链接" title="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="Alpha Implementation of Next-Gen Cloud Native Device Management Interface (DMI)的直接链接" title="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="Next-Gen Edged Graduates to GA: Suitable for More Scenarios的直接链接" title="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="Introducing High-Availability Mode for EdgeMesh的直接链接" title="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="Support Edge Node Upgrade from the Cloud的直接链接" title="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="Support Authorization for Edge Kube-API Endpoint的直接链接" title="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="New GigE Mapper的直接链接" title="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="Important Steps Before Upgrading的直接链接" title="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/zh/blog/scalability-test-report</id>
        <link href="https://kubeedge.io/zh/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="Abstract的直接链接" title="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="Background的直接链接" title="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="Introduction to KubeEdge的直接链接" title="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="/zh/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="SLIs/SLOs的直接链接" title="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="Kubernetes Scalability Dimensions and Thresholds的直接链接" title="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="/zh/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="复制代码到剪贴板" title="复制" 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="Test Tools的直接链接" title="Test Tools的直接链接">​</a></h2><h3 class="anchor anchorWithStickyNavbar_LWe7" id="clusterloader2">ClusterLoader2<a href="#clusterloader2" class="hash-link" aria-label="ClusterLoader2的直接链接" title="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="Edgemark的直接链接" title="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="/zh/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="Cluster Deployment Scheme for the Test的直接链接" title="Cluster Deployment Scheme for the Test的直接链接">​</a></h2><p><img loading="lazy" alt="deploy" src="/zh/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="Test Environment Information的直接链接" title="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="复制代码到剪贴板" title="复制" 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="复制代码到剪贴板" title="复制" 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="复制代码到剪贴板" title="复制" 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="复制代码到剪贴板" title="复制" 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="复制代码到剪贴板" title="复制" 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="复制代码到剪贴板" title="复制" 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="复制代码到剪贴板" title="复制" 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="复制代码到剪贴板" title="复制" 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="Component Parameter Configurations的直接链接" title="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="复制代码到剪贴板" title="复制" 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="复制代码到剪贴板" title="复制" 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="复制代码到剪贴板" title="复制" 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="复制代码到剪贴板" title="复制" 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="Density Test的直接链接" title="Density Test的直接链接">​</a></h2><h3 class="anchor anchorWithStickyNavbar_LWe7" id="test-execution">Test Execution<a href="#test-execution" class="hash-link" aria-label="Test Execution的直接链接" title="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="Test Results的直接链接" title="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="/zh/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="/zh/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="/zh/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="/zh/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="Conclusion and Analysis的直接链接" title="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="KubeEdge's Support for Large-Scale Edge Node Access的直接链接" title="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="1. Efficient Cloud-Edge Messaging的直接链接" title="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="/zh/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="/zh/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="2. Reliable Incremental Cloud-Edge Data Transmission的直接链接" title="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="3. Lightweight Edge + Edge-Cloud Messaging Optimization的直接链接" title="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="/zh/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="/zh/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="Next Steps的直接链接" title="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/zh/blog/security-threat-model</id>
        <link href="https://kubeedge.io/zh/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/tree/master/security-team" 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="References:的直接链接" title="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/zh/blog/release-v1.11</id>
        <link href="https://kubeedge.io/zh/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="v1.11 What's New的直接链接" title="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="Release Highlights的直接链接" title="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="Node Group Management的直接链接" title="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="Mapper SDK的直接链接" title="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="Beta sub-commands in Keadm to GA的直接链接" title="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="deprecation-of-original-init-and-join的直接链接" title="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="Next-gen Edged to Beta: Suitable for more scenarios的直接链接" title="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="Important Steps before Upgrading的直接链接" title="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="Other Notable Changes的直接链接" title="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/zh/blog/release-v1.10</id>
        <link href="https://kubeedge.io/zh/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="v1.10 What's New的直接链接" title="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="Release Highlights的直接链接" title="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="Installation Experience Improvement with Keadm的直接链接" title="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="Preview version for Next-gen Edged: Suitable for more scenarios的直接链接" title="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="Edgemark: Support large-scale KubeEdge cluster performance testing的直接链接" title="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="EdgeMesh proxy tunnel supports quic的直接链接" title="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="EdgeMesh supports proxy for udp applications的直接链接" title="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="EdgeMesh support SSH login between cloud-edge/edge-edge nodes的直接链接" title="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="Kubernetes Dependencies Upgrade的直接链接" title="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="Important Steps before Upgrading的直接链接" title="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="Other Notable Changes的直接链接" title="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/zh/blog/release-v1.9</id>
        <link href="https://kubeedge.io/zh/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>备注</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>备注</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="release-highlights的直接链接" title="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="Support Custom HTTP Request Routing from Edge to Cloud through ServiceBus for Applications的直接链接" title="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="Support CloudCore to run independently of the Kubernetes Master host的直接链接" title="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="EdgeMesh add tls and encryption security的直接链接" title="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="Enhanced the ease of use of EdgeMesh的直接链接" title="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="Support containerized deployment of CloudCore using Helm的直接链接" title="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="Support compiled into rpm package and installed on OS such as openEuler using yum package manager的直接链接" title="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="future-outlook的直接链接" title="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/zh/blog/release-v1.8</id>
        <link href="https://kubeedge.io/zh/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>备注</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>备注</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="release-highlights的直接链接" title="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="active-active-ha-support-of-cloudcore-for-large-scale-cluster-beta的直接链接" title="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="EdgeMesh Architecture Modification的直接链接" title="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="EdgeMesh Cross LAN Communication的直接链接" title="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="Onvif Device Mapper的直接链接" title="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="Kubernetes Dependencies Upgrade的直接链接" title="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="future-outlook的直接链接" title="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/zh/blog/release-v1.7</id>
        <link href="https://kubeedge.io/zh/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>备注</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>备注</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="release-highlights的直接链接" title="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="active-active-ha-support-of-cloudcore-for-large-scale-cluster-alpha的直接链接" title="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="support-to-manage-clusters-on-edge-alpha的直接链接" title="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="Decoupled EdgeMesh from EdgeCore的直接链接" title="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="Mapper Framework的直接链接" title="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="autonomic-kube-api-endpoint-for-applications-on-edge-nodes-beta的直接链接" title="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="custom-http-request-routing-between-cloud-and-edge-for-applications-alpha的直接链接" title="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="28+ bug fixes and enhancements的直接链接" title="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="future-outlook的直接链接" title="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/zh/blog/release-v1.6</id>
        <link href="https://kubeedge.io/zh/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="kubeedge-v16-a-major-upgrade-for-maintainability的直接链接" title="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>备注</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>备注</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="release-highlights的直接链接" title="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="support-autonomic-kube-api-endpoint-for-applications-on-edge-nodes-alpha的直接链接" title="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="custom-message-routing-between-cloud-and-edge-for-applications-alpha的直接链接" title="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="Simplified Application Autonomy Configuration When Node Is Off-line的直接链接" title="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="New home for Device Mappers code的直接链接" title="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="OPC-UA Device Mapper的直接链接" title="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="24+ bug fixes and enhancements的直接链接" title="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="future-outlook的直接链接" title="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/zh/blog/release-v1.5</id>
        <link href="https://kubeedge.io/zh/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="kubeedge-v15-a-major-upgrade-for-maintainability-and-edge-devices-management的直接链接" title="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>备注</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>备注</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="release-highlights的直接链接" title="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="Simplified Device Mapper reference architecture的直接链接" title="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="Modbus Mapper Golang Implementation的直接链接" title="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="Support Remote Exec to Pods on Edge From Cloud的直接链接" title="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="Support Keadm Debug Command for Trouble Shooting On Edge Nodes的直接链接" title="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="Kubernetes Dependencies Upgrade的直接链接" title="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="future-outlook的直接链接" title="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/zh/blog/release-v1.4</id>
        <link href="https://kubeedge.io/zh/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="kubeedge-v14-a-major-upgrade-for-maintainability-and-edge-devices-management的直接链接" title="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>备注</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>备注</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="release-highlights的直接链接" title="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="Enhance Devices Management的直接链接" title="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="Metrics-Server Support for metrics collection across cloud and edge的直接链接" title="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="EdgeNode Certificate Rotation的直接链接" title="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="Kubernetes Dependencies Upgrade的直接链接" title="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="34+ bug fixes and enhancements的直接链接" title="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="future-outlook的直接链接" title="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/zh/blog/release-v1.3</id>
        <link href="https://kubeedge.io/zh/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="kubeedge-v13-a-major-upgrade-for-maintainability的直接链接" title="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>备注</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>备注</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="release-highlights的直接链接" title="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="Collecting logs from pods at edge in cloud的直接链接" title="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="Edge node and container monitoring的直接链接" title="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="High availability of KubeEdge cloud components的直接链接" title="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="Automated TLS bootstrapping for edge nodes的直接链接" title="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="More container runtime support的直接链接" title="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="25+ bug fixes and enhancements的直接链接" title="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="future-outlook的直接链接" title="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/zh/blog/release-v1.2</id>
        <link href="https://kubeedge.io/zh/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="today-we-announce-the-v12-release-of-kubeedge的直接链接" title="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>备注</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>备注</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="A major upgrade on Cloud-Edge transmission reliability的直接链接" title="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="Component Config API的直接链接" title="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="Edge Nodes Auto-registration的直接链接" title="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="Kubernetes v1.17.1 support的直接链接" title="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="Other Fixes的直接链接" title="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="Summary的直接链接" title="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/zh/blog/contributor-contest-announcement</id>
        <link href="https://kubeedge.io/zh/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/zh/blog/contributor-contest</id>
        <link href="https://kubeedge.io/zh/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 useable 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 useable 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>备注</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="how-to-participate-的直接链接" title="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="who-can-participate-的直接链接" title="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="how-the-winners-are-selected-的直接链接" title="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="timeline的直接链接" title="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>备注</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="how-the-winners-are-notified-的直接链接" title="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>备注</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="resources的直接链接" title="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="kubeedge-community-code-of-conduct的直接链接" title="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/zh/blog/secure-kubeedge</id>
        <link href="https://kubeedge.io/zh/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="Why SPIFFE for edge computing?的直接链接" title="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="What is SPIFFE and SPIRE?的直接链接" title="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="How does SPIRE work?的直接链接" title="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="/zh/assets/images/reg-b5d247767289a670981626f5d03eccfe.png" width="952" height="532" class="img_ev3q"></p><p><img loading="lazy" alt="nodeattestion1" src="/zh/assets/images/node1-f3a9e3fdcd732191a1d221db26f316b7.png" width="951" height="511" class="img_ev3q"></p><p><img loading="lazy" alt="nodeattestion2" src="/zh/assets/images/node2-b9033144a3ec7f280df940a7269fab0d.png" width="949" height="497" class="img_ev3q"></p><p><img loading="lazy" alt="Workloadattestation" src="/zh/assets/images/wattest-7cf7b052aec66bfcd203a6b9f9091178.png" width="940" height="488" class="img_ev3q"></p><p><img loading="lazy" alt="svidbundle1" src="/zh/assets/images/sb1-139b31728185a1882070e98a7948aa7e.png" width="931" height="488" class="img_ev3q"></p><p><img loading="lazy" alt="svidbundle2" src="/zh/assets/images/sb2-031be04bab26968764b981c4d014fbb6.png" width="943" height="486" class="img_ev3q"></p><p><img loading="lazy" alt="svidbundle3" src="/zh/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="What are the few desired security requirements for Kubeedge?的直接链接" title="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="How SPIRE helps Kubeedge?的直接链接" title="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 heirarchical 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="Example Demo的直接链接" title="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/zh/blog/cncf-sandbox-announcement</id>
        <link href="https://kubeedge.io/zh/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="today-we-announce-the-acceptance-of-kubeedge-under-the-cncf-sandbox的直接链接" title="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>信息</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>信息</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>信息</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://docs.kubeedge.io/en/latest/setup/setup.html" 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="kubeedge-becomes-the-first-kubernetes-native-edge-computing-platform-with-both-edge-and-cloud-components-open-sourced的直接链接" title="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 utlization, 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="kubernetesedge---opening-up-a-new-kubernetes-based-ecosystem-for-edge-computing的直接链接" title="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 Kuberenetes 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="you-heard-it-right的直接链接" title="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 Kuberenetes 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>备注</div><div class="admonitionContent_S0QG"><ul><li>KubeEdge provides scalable lightweight Kubernetes Native Edge Computing Platform which can work in offline mode.</li></ul><ul><li>It helps simplify edge application development and deployment.</li></ul><ul><li>Cloud vendor agnostic and can run the cloud core modules on any compute node.</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="release-01-to-02--game-changer的直接链接" title="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="future-taking-off-with-competent-features-and-community-collaboration的直接链接" title="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="how-to-get-involved的直接链接" title="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>信息</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/zh/blog/control-home-appliances-via-cloud</id>
        <link href="https://kubeedge.io/zh/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="/zh/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="/zh/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="/zh/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="/zh/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="/zh/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>提示</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/zh/blog/release-v0.2</id>
        <link href="https://kubeedge.io/zh/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="today-we-announce-the-v02-release-of-kubeedge的直接链接" title="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>备注</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>备注</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="Features added的直接链接" title="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="Known issues的直接链接" title="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="Features Work In Progress (Future release)的直接链接" title="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>