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"><</span><span class="token operator">!</span>
1DOCTYPE html<span class="token operator">></span>\n<span class="token operator"><</span>html<span class="token operator">></span>\n<span class="token operator"><</span>head<span class="token operator">></span>\n<span class="token operator"><</span>title<span class="token operator">></span>Welcome to nginx<span class="token operator">!</span><span class="token operator"><</span>/title<span class="token operator">></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"><</span><span class="token operator">!</span>DOCTYPE html<span class="token operator">></span>\n<span class="token operator"><</span>html<span class="token operator">></span>\n<span class="token operator"><</span>head<span class="token operator">></span>\n<span class="token operator"><</span>title<span class="token operator">></span>Welcome to nginx<span class="token operator">!</span><span class="token operator"><</span>/title<span class="token operator">></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">'{print $1}'</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">'{print $1}'</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.