PageSourceSearch

https://edgemesh.netlify.app/assets/js/v-73f3066e.e2744dcc.js

js edgemesh.netlify.app collected 2026-10-03 10:41:10 UTC 19,133 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunkedgemesh=self.webpackChunkedgemesh||[]).push([[461],{933:(s,n,e)=>{e.r(n),e.d(n,{data:()=>a});const a={key:"v-73f3066e",path:"/zh/guide/test-case.html",title:"测试用例",lang:"zh-CN",frontmatter:{},excerpt:"",headers:[{level:2,title:"准备工作",slug:"准备工作",children:[]},{level:2,title:"HTTP",slug:"http",children:[]},{level:2,title:"HTTPS",slug:"https",children:[]},{level:2,title:"TCP",slug:"tcp",children:[]},{level:2,title:"Websocket",slug:"websocket",children:[]},{level:2,title:"UDP",slug:"udp",children:[]},{level:2,title:"负载均衡",slug:"负载均衡",children:[]},{level:2,title:"跨边云通信 ⭐",slug:"跨边云通信",children:[]}],filePathRelative:"zh/guide/test-case.md",git:{updatedTime:16456161e5,contributors:[]}}},1893:(s,n,e)=>{e.r(n),e.d(n,{default:()=>h});var a=e(6252);const l=(0,a._)("h1",{id:"测试用例",tabindex:"-1"},[(0,a._)("a",{class:"header-anchor",href:"#测试用例","aria-hidden":"true"},"#"),(0,a.Uk)(" 测试用例")],-1),p=(0,a.Uk)("本章节里的所有测试用例都在目录 "),c={href:"https://github.com/kubeedge/edgemesh/tree/main/examples",target:"_blank",rel:"noopener noreferrer"},t=(0,a.Uk)("examples"),r=(0,a.Uk)(" 下可找到对应文件。"),o=(0,a._)("h2",{id:"准备工作",tabindex:"-1"},[(0,a._)("a",{class:"header-anchor",href:"#准备工作","aria-hidden":"true"},"#"),(0,a.Uk)(" 准备工作")],-1),i=(0,a._)("ul",null,[(0,a._)("li",null,[(0,a._)("strong",null,"步骤1"),(0,a.Uk)(": 部署 EdgeMesh")])],-1),b=(0,a.Uk)("请参考 "),u=(0,a.Uk)("快速上手"),d=(0,a.Uk)(" 完成 EdgeMesh 的部署"),m=(0,a.uE)('<ul><li><strong>步骤2</strong>: 部署测试容器</li></ul><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ kubectl apply -f examples/test-pod.yaml\npod/alpine-test created\npod/websocket-test created\n</code></pre><div class="line-numbers"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br></div></div><h2 id="http" tabindex="-1"><a class="header-anchor" href="#http" aria-hidden="true">#</a> HTTP</h2><p>部署支持 http 协议的容器应用和相关服务</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ kubectl apply -f examples/hostname.yaml\ndeployment.apps/hostname-edge created\nservice/hostname-svc created\n</code></pre><div class="line-numbers"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br></div></div><p>进入测试容器,并使用 <code>curl</code> 去访问相关服务</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ kubectl <span class="token builtin class-name">exec</span> -it alpine-test -- <span class="token function">sh</span>\n<span class="token punctuation">(</span>在容器环境内<span class="token punctuation">)</span>\n/ <span class="token comment"># curl hostname-svc:12345</span>\nhostname-edge-5c75d56dc4-rq57t\n</code></pre><div class="line-numbers"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br></div></div><h2 id="https" tabindex="-1"><a class="header-anchor" href="#https" aria-hidden="true">#</a> HTTPS</h2><p>部署支持 https 协议的容器应用和相关服务</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ ./examples/nginx-https/tools.sh <span class="token function">install</span>\n<span class="token punctuation">..</span>.\nGetting Private key\nGetting CA Private Key\nsecret/nginxsecret created\nconfigmap/nginxconfigmap created\ndeployment.apps/nginx-https created\nservice/nginx-https created\ncreate https example success<span class="token operator">!</span>\n</code></pre><div class="line-numbers"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br></div></div><p>进入测试容器,并使用 <code>curl</code> 去访问相关服务</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ kubectl <span class="token builtin class-name">exec</span> -it alpine-test -- <span class="token function">sh</span>\n<span class="token punctuation">(</span>在容器环境内<span class="token punctuation">)</span>\n/ <span class="token comment"># curl -k --cert client.crt --key client.key https://nginx-https</span>\n<span class="token operator">&lt;</span><span class="token operator">!</span>
1DOCTYPE html<span class="token operator">&gt;</span>\n<span class="token operator">&lt;</span>html<span class="token operator">&gt;</span>\n<span class="token operator">&lt;</span>head<span class="token operator">&gt;</span>\n<span class="token operator">&lt;</span>title<span class="token operator">&gt;</span>Welcome to nginx<span class="token operator">!</span><span class="token operator">&lt;</span>/title<span class="token operator">&gt;</span>\n<span class="token punctuation">..</span>.\n\n<span class="token punctuation">(</span>也可以使用外部域名去访问相关服务<span class="token punctuation">)</span>\n/ <span class="token comment"># curl --cacert rootCA.crt --cert client.crt --key client.key https://my-nginx.com</span>\n<span class="token operator">&lt;</span><span class="token operator">!</span>DOCTYPE html<span class="token operator">&gt;</span>\n<span class="token operator">&lt;</span>html<span class="token operator">&gt;</span>\n<span class="token operator">&lt;</span>head<span class="token operator">&gt;</span>\n<span class="token operator">&lt;</span>title<span class="token operator">&gt;</span>Welcome to nginx<span class="token operator">!</span><span class="token operator">&lt;</span>/title<span class="token operator">&gt;</span>\n<span class="token punctuation">..</span>.\n</code></pre><div class="line-numbers"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br><span class="line-number">15</span><br><span class="line-number">16</span><br></div></div><details class="custom-container details"><p>examples/nginx-https/tools.sh 脚本功能:</p><ol><li>生成自签根证书,服务器、客户端的证书和私钥</li><li>创建 nginx-https 相关的 secret,configmap,deployment 和 service</li><li>往 alpine-test 内复制证书和私钥</li><li>往 alpine-test 内的 /etc/hosts 文件写入 IP 与域名 (my-nginx.com) 的映射</li></ol><p>备注:使用 tools.sh 脚本的 cleanup 命令可清空上述创建的所有资源,以及还原对 alpine-test 的修改</p></details><h2 id="tcp" tabindex="-1"><a class="header-anchor" href="#tcp" aria-hidden="true">#</a> TCP</h2><p>部署支持 tcp 协议的容器应用和相关服务</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ kubectl apply -f examples/tcp-echo-service.yaml\ndeployment.apps/tcp-echo-deployment created\nservice/tcp-echo-service created\n</code></pre><div class="line-numbers"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br></div></div><p>进入测试容器,并使用 <code>telnet</code> 去访问相关服务</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ kubectl <span class="token builtin class-name">exec</span> -it alpine-test -- <span class="token function">sh</span>\n<span class="token punctuation">(</span>在容器环境内<span class="token punctuation">)</span>\n/ <span class="token comment"># telnet tcp-echo-service 2701</span>\nWelcome, you are connected to node ke-edge1.\nRunning on Pod tcp-echo-deployment-66457b769-7zgqb.\nIn namespace default.\nWith IP address <span class="token number">172.17</span>.0.2.\nService default.\n</code></pre><div class="line-numbers"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br></div></div><h2 id="websocket" tabindex="-1"><a class="header-anchor" href="#websocket" aria-hidden="true">
1#</a> Websocket</h2><p>部署支持 websocket 协议的容器应用和相关服务</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ kubectl apply -f examples/websocket.yaml\ndeployment.apps/ws-edge created\nservice/ws-svc created\n</code></pre><div class="line-numbers"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br></div></div><p>进入测试容器,并使用 websocket <code>client</code> 去访问相关服务</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ kubectl <span class="token builtin class-name">exec</span> -it websocket-test -- <span class="token function">sh</span>\n<span class="token punctuation">(</span>在容器环境内<span class="token punctuation">)</span>\n/ <span class="token comment"># ./client --addr ws-svc:12348</span>\nconnecting to ws://ws-svc.default:12348/echo\nrecv: <span class="token number">2021</span>-12-02 03:42:20.191695384 +0000 UTC <span class="token assign-left variable">m</span><span class="token operator">=</span>+1.004526202\nrecv: <span class="token number">2021</span>-12-02 03:42:21.191724176 +0000 UTC <span class="token assign-left variable">m</span><span class="token operator">=</span>+2.004554995\nrecv: <span class="token number">2021</span>-12-02 03:42:22.191725321 +0000 UTC <span class="token assign-left variable">m</span><span class="token operator">=</span>+3.004556159\n</code></pre><div class="line-numbers"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br></div></div><h2 id="udp" tabindex="-1"><a class="header-anchor" href="#udp" aria-hidden="true">#</a> UDP</h2><p>部署支持 udp 协议的容器应用和相关服务</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ kubectl apply -f examples/hostname-udp.yaml\ndeployment.apps/hostname-edge created\nservice/hostname-udp-svc created\n</code></pre><div class="line-numbers"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br></div></div><p>进入测试容器,并使用 <code>nc</code> 去访问相关服务</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ kubectl <span class="token builtin class-name">exec</span> -it alpine-test -- <span class="token function">sh</span>\n<span class="token punctuation">(</span>在容器环境内<span class="token punctuation">)</span>\n/ <span class="token comment"># nc -u hostname-udp-svc 12345</span>\nhostname-edge-5cd47b65d5-8zg27\n</code></pre><div class="line-numbers"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br></div></div><h2 id="负载均衡" tabindex="-1"><a class="header-anchor" href="#负载均衡" aria-hidden="true">#</a> 负载均衡</h2><p>部署配置了 <code>random</code> 负载均衡策略的容器应用和相关服务</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ kubectl apply -f examples/hostname-lb-random.yaml\ndeployment.apps/hostname-lb-edge created\nservice/hostname-lb-svc created\ndestinationrule.networking.istio.io/hostname-lb-svc created\n</code></pre><div class="line-numbers"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br></div></div><div class="custom-container tip"><p class="custom-container-title">提示</p><p>EdgeMesh 使用了 DestinationRule 中的 loadBalancer 属性来选择不同的负载均衡策略。使用 DestinationRule 时,要求 DestinationRule 的名字与相应的 Service 的名字要一致,EdgeMesh 会根据 Service 的名字来确定同命名空间下面的 DestinationRule</p></div><p>进入测试容器,并多次使用 <code>curl</code> 去访问相关服务,你将看到多个 hostname-edge 被随机的访问</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ kubectl <span class="token builtin class-name">exec</span> -it alpine-test -- <span class="token function">sh</span>\n<span class="token punctuation">(</span>在容器环境内<span class="token punctuation">)</span>\n/ <span class="token comment"># curl hostname-lb-svc:12345</span>\nhostname-lb-edge-7898fff5f9-w82nw\n/ <span class="token comment"># curl hostname-lb-svc:12345</span>\nhostname-lb-edge-7898fff5f9-xjp86\n/ <span class="token comment"># curl hostname-lb-svc:12345</span>\nhostname-lb-edge-7898fff5f9-xjp86\n/ <span class="token comment"># curl hostname-lb-svc:12345</span>\nhostname-lb-edge-7898fff5f9-iq39z\n</code></pre><div class="line-numbers"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br></div></div><h2 id="跨边云通信" tabindex="-1"><a class="header-anchor" href="#跨边云通信" aria-hidden="true">
1#</a> 跨边云通信 ⭐</h2><p>处于 edgezone 的 busybox-edge 应用能够访问云上的 tcp-echo-cloud 应用,处于 cloudzone 的 busybox-cloud 应用能够访问边缘的 tcp-echo-edge 应用</p><p><strong>部署</strong></p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ kubectl apply -f examples/cloudzone.yaml\nnamespace/cloudzone created\ndeployment.apps/tcp-echo-cloud created\nservice/tcp-echo-cloud-svc created\ndeployment.apps/busybox-sleep-cloud created\n</code></pre><div class="line-numbers"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br></div></div><div class="language-text ext-text line-numbers-mode"><pre class="language-text"><code>$ kubectl apply -f examples/edgezone.yaml\nnamespace/edgezone created\ndeployment.apps/tcp-echo-edge created\nservice/tcp-echo-edge-svc created\ndeployment.apps/busybox-sleep-edge created\n</code></pre><div class="line-numbers"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br></div></div><p><strong>云访问边</strong></p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ <span class="token assign-left variable">BUSYBOX_POD</span><span class="token operator">=</span><span class="token variable"><span class="token variable">$(</span>kubectl get all -n cloudzone <span class="token operator">|</span> <span class="token function">grep</span> pod/busybox <span class="token operator">|</span> <span class="token function">awk</span> <span class="token string">&#39;{print $1}&#39;</span><span class="token variable">)</span></span>\n$ kubectl -n cloudzone <span class="token builtin class-name">exec</span> <span class="token variable">$BUSYBOX_POD</span> -c busybox -i -t -- <span class="token function">sh</span>\n$ telnet tcp-echo-edge-svc.edgezone <span class="token number">2701</span>\nWelcome, you are connected to node ke-edge1.\nRunning on Pod tcp-echo-edge.\nIn namespace edgezone.\nWith IP address <span class="token number">172.17</span>.0.2.\nService default.\nHello Edge, I am Cloud.\nHello Edge, I am Cloud.\n</code></pre><div class="line-numbers"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br></div></div><p><strong>边访问云</strong></p><p>在边缘节点,使用 <code>telnet</code> 去访问相关服务</p><div class="language-bash ext-sh line-numbers-mode"><pre class="language-bash"><code>$ <span class="token assign-left variable">BUSYBOX_CID</span><span class="token operator">=</span><span class="token variable"><span class="token variable">$(</span>docker <span class="token function">ps</span> <span class="token operator">|</span> <span class="token function">grep</span> k8s_busybox_busybox-sleep-edge <span class="token operator">|</span> <span class="token function">awk</span> <span class="token string">&#39;{print $1}&#39;</span><span class="token variable">)</span></span>\n$ docker <span class="token builtin class-name">exec</span> -it <span class="token variable">$BUSYBOX_CID</span> <span class="token function">sh</span>\n$ telnet tcp-echo-cloud-svc.cloudzone <span class="token number">2701</span>\nWelcome, you are connected to node k8s-master.\nRunning on Pod tcp-echo-cloud.\nIn namespace cloudzone.\nWith IP address <span class="token number">10.244</span>.0.8.\nService default.\nHello Cloud, I am Edge.\nHello Cloud, I am Edge.\n</code></pre><div class="line-numbers"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br></div></div>',44),h={render:function(s,n){const e=(0,a.up)("OutboundLink"),h=(0,a.up)("RouterLink");return(0,a.wg)(),(0,a.iD)(a.HY,null,[l,(0,a._)("p",null,[p,(0,a._)("a",c,[t,(0,a.Wm)(e)]),r]),o,i,(0,a._)("p",null,[b,(0,a.Wm)(h,{to:"/zh/guide/getting-started.html"},{default:(0,a.w5)((()=>[u])),_:1}),d]),m],64)}}}}]);

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