From 7d369bad508eac6cb9d4e5f35d3cf505696cc1c5 Mon Sep 17 00:00:00 2001 From: "huanqing.shao" Date: Tue, 30 Jul 2019 07:35:19 +0800 Subject: [PATCH] concepts --- devops/README.md | 8 + docs/404.html | 4 +- docs/assets/img/1563696697515.94512132.png | Bin 23987 -> 0 bytes docs/assets/img/1563697667480.8c846298.png | Bin 13825 -> 0 bytes docs/assets/img/1563698644736.d67b2e09.png | Bin 67049 -> 0 bytes docs/assets/img/1563698714557.fa1eeb1c.png | Bin 26417 -> 0 bytes docs/assets/img/1563698865448.2cbaf53a.png | Bin 85199 -> 0 bytes .../js/{10.c14eb303.js => 10.9cca6985.js} | 2 +- .../js/{11.2c820498.js => 11.ff32352c.js} | 2 +- .../js/{12.34ad378a.js => 12.c2300662.js} | 2 +- .../js/{13.f80da918.js => 13.d081ddb3.js} | 2 +- .../js/{14.0c1161b9.js => 14.a39ad74c.js} | 2 +- .../js/{15.bd6e3f06.js => 15.6b271638.js} | 2 +- .../js/{16.a9d0c8b0.js => 16.f74fb0ee.js} | 2 +- .../js/{17.6c24b518.js => 17.ee7f38be.js} | 2 +- .../js/{19.1f580046.js => 18.0a1c6c47.js} | 2 +- docs/assets/js/18.b4940cde.js | 1 - .../js/{20.fe37a967.js => 19.42d282d4.js} | 2 +- .../js/{2.db1527d8.js => 2.e1436c28.js} | 2 +- .../js/{21.503dfaa7.js => 20.7d69131f.js} | 2 +- .../js/{22.9b36c6ac.js => 21.8842b110.js} | 2 +- .../js/{23.781e01e5.js => 22.3bcbfd51.js} | 2 +- .../js/{24.fa8c0e9e.js => 23.f823eb32.js} | 2 +- .../js/{25.4904fb18.js => 24.1bc0882c.js} | 2 +- .../js/{26.a4a2b4f5.js => 25.c4981212.js} | 2 +- .../js/{27.bb340b56.js => 26.fd2ceefd.js} | 2 +- .../js/{28.adea3ff5.js => 27.fca68cbf.js} | 2 +- .../js/{29.34e51a57.js => 28.7af5748a.js} | 2 +- .../js/{30.ebc3939c.js => 29.65c4e307.js} | 2 +- .../js/{3.930ba94c.js => 3.6e08f756.js} | 2 +- .../js/{31.3da499b5.js => 30.7eeaa48d.js} | 2 +- .../js/{32.b266ee0b.js => 31.f943ea94.js} | 2 +- .../js/{33.7f10b8c4.js => 32.c792b9c4.js} | 2 +- docs/assets/js/33.ff95101e.js | 1 + .../js/{35.6cae918c.js => 34.58cdb831.js} | 2 +- docs/assets/js/34.87249fd0.js | 1 - .../js/{36.9f712a2d.js => 35.db6fd1f6.js} | 2 +- .../js/{37.5f4873f4.js => 36.c9c2a92d.js} | 2 +- .../js/{38.ec712cca.js => 37.25043df3.js} | 2 +- .../js/{39.29915c9b.js => 38.baa4e556.js} | 2 +- .../js/{40.9a1aee06.js => 39.5c5fb736.js} | 2 +- .../js/{4.3b478f68.js => 4.f8d362a5.js} | 2 +- .../js/{41.d239da25.js => 40.ce489113.js} | 2 +- .../js/{42.6a6dd5f1.js => 41.d8b05b79.js} | 2 +- .../js/{43.19d69837.js => 42.b63f5407.js} | 2 +- docs/assets/js/43.4805f850.js | 1 + .../js/{45.069539e4.js => 44.06b497f8.js} | 2 +- docs/assets/js/44.c325329a.js | 1 - .../js/{46.ba8e59b0.js => 45.8ffc77a0.js} | 2 +- docs/assets/js/46.0e8b49ec.js | 1 + docs/assets/js/47.42aa7d35.js | 1 - .../js/{5.c0d09fa0.js => 5.3e96437a.js} | 2 +- .../js/{6.215a502f.js => 6.ea9245de.js} | 2 +- .../js/{7.6ab61d75.js => 7.c439ef10.js} | 2 +- docs/assets/js/8.18aa9262.js | 1 - docs/assets/js/8.80660d67.js | 1 + .../js/{9.9a5c935f.js => 9.c6d220d9.js} | 2 +- .../js/{app.fe9bdd45.js => app.17b54172.js} | 8 +- docs/devops/index.html | 8 +- docs/guide/cluster/computing.html | 4 +- docs/guide/cluster/namespace.html | 4 +- docs/guide/cluster/storage.html | 4 +- docs/guide/diagonize/events.html | 4 +- docs/guide/diagonize/logs.html | 4 +- docs/guide/diagonize/port-forward.html | 4 +- docs/guide/example/busybox.html | 4 +- docs/guide/example/import.html | 4 +- docs/guide/example/monitor.html | 4 +- docs/guide/index.html | 4 +- docs/guide/monitor/apis.html | 4 +- docs/guide/monitor/index.html | 4 +- docs/guide/namespace/adjustion.html | 4 +- docs/guide/namespace/configMap.html | 4 +- docs/guide/namespace/index.html | 4 +- docs/guide/namespace/multi-env.html | 4 +- docs/guide/namespace/pvc.html | 4 +- docs/guide/namespace/secrets.html | 4 +- docs/guide/namespace/workload.html | 4 +- docs/index.html | 6 +- docs/install/index.html | 4 +- docs/install/install-common-ingress.html | 4 +- docs/install/install-common-vm.html | 4 +- docs/install/install-dashboard copy.html | 4 +- .../install-dashboard-diagonize-kube-dns.html | 4 +- docs/install/install-dashboard-diagonize.html | 4 +- docs/install/install-dashboard-upgrade.html | 4 +- docs/install/install-dashboard.html | 4 +- docs/install/install-k8s.html | 4 +- docs/install/install-kind.html | 42 ----- docs/install/install-kubectl.html | 4 +- docs/install/install-kubernetes.html | 4 +- .../spring-cloud/cloud-eureka.html | 4 +- docs/micro-service/spring-cloud/index.html | 6 +- docs/overview/change-log.html | 8 +- docs/overview/concepts.html | 6 +- docs/overview/index.html | 8 +- docs/overview/support.html | 8 +- docs/overview/why-kuboard.html | 4 +- install/install-dashboard.md | 4 +- install/install-kind.assets/1563696697515.png | Bin 23987 -> 0 bytes install/install-kind.assets/1563697653048.png | Bin 23987 -> 0 bytes install/install-kind.assets/1563697667480.png | Bin 13825 -> 0 bytes install/install-kind.assets/1563698644736.png | Bin 67049 -> 0 bytes install/install-kind.assets/1563698714557.png | Bin 26417 -> 0 bytes install/install-kind.assets/1563698865448.png | Bin 85199 -> 0 bytes install/install-kind.md | 146 ------------------ micro-service/spring-cloud/README.md | 6 +- overview/concepts.md | 16 +- 108 files changed, 158 insertions(+), 345 deletions(-) delete mode 100644 docs/assets/img/1563696697515.94512132.png delete mode 100644 docs/assets/img/1563697667480.8c846298.png delete mode 100644 docs/assets/img/1563698644736.d67b2e09.png delete mode 100644 docs/assets/img/1563698714557.fa1eeb1c.png delete mode 100644 docs/assets/img/1563698865448.2cbaf53a.png rename docs/assets/js/{10.c14eb303.js => 10.9cca6985.js} (99%) rename docs/assets/js/{11.2c820498.js => 11.ff32352c.js} (91%) rename docs/assets/js/{12.34ad378a.js => 12.c2300662.js} (98%) rename docs/assets/js/{13.f80da918.js => 13.d081ddb3.js} (99%) rename docs/assets/js/{14.0c1161b9.js => 14.a39ad74c.js} (98%) rename docs/assets/js/{15.bd6e3f06.js => 15.6b271638.js} (98%) rename docs/assets/js/{16.a9d0c8b0.js => 16.f74fb0ee.js} (98%) rename docs/assets/js/{17.6c24b518.js => 17.ee7f38be.js} (98%) rename docs/assets/js/{19.1f580046.js => 18.0a1c6c47.js} (93%) delete mode 100644 docs/assets/js/18.b4940cde.js rename docs/assets/js/{20.fe37a967.js => 19.42d282d4.js} (96%) rename docs/assets/js/{2.db1527d8.js => 2.e1436c28.js} (60%) rename docs/assets/js/{21.503dfaa7.js => 20.7d69131f.js} (98%) rename docs/assets/js/{22.9b36c6ac.js => 21.8842b110.js} (95%) rename docs/assets/js/{23.781e01e5.js => 22.3bcbfd51.js} (80%) rename docs/assets/js/{24.fa8c0e9e.js => 23.f823eb32.js} (92%) rename docs/assets/js/{25.4904fb18.js => 24.1bc0882c.js} (96%) rename docs/assets/js/{26.a4a2b4f5.js => 25.c4981212.js} (51%) rename docs/assets/js/{27.bb340b56.js => 26.fd2ceefd.js} (98%) rename docs/assets/js/{28.adea3ff5.js => 27.fca68cbf.js} (89%) rename docs/assets/js/{29.34e51a57.js => 28.7af5748a.js} (99%) rename docs/assets/js/{30.ebc3939c.js => 29.65c4e307.js} (84%) rename docs/assets/js/{3.930ba94c.js => 3.6e08f756.js} (76%) rename docs/assets/js/{31.3da499b5.js => 30.7eeaa48d.js} (83%) rename docs/assets/js/{32.b266ee0b.js => 31.f943ea94.js} (90%) rename docs/assets/js/{33.7f10b8c4.js => 32.c792b9c4.js} (78%) create mode 100644 docs/assets/js/33.ff95101e.js rename docs/assets/js/{35.6cae918c.js => 34.58cdb831.js} (96%) delete mode 100644 docs/assets/js/34.87249fd0.js rename docs/assets/js/{36.9f712a2d.js => 35.db6fd1f6.js} (98%) rename docs/assets/js/{37.5f4873f4.js => 36.c9c2a92d.js} (92%) rename docs/assets/js/{38.ec712cca.js => 37.25043df3.js} (92%) rename docs/assets/js/{39.29915c9b.js => 38.baa4e556.js} (96%) rename docs/assets/js/{40.9a1aee06.js => 39.5c5fb736.js} (98%) rename docs/assets/js/{4.3b478f68.js => 4.f8d362a5.js} (97%) rename docs/assets/js/{41.d239da25.js => 40.ce489113.js} (87%) rename docs/assets/js/{42.6a6dd5f1.js => 41.d8b05b79.js} (98%) rename docs/assets/js/{43.19d69837.js => 42.b63f5407.js} (99%) create mode 100644 docs/assets/js/43.4805f850.js rename docs/assets/js/{45.069539e4.js => 44.06b497f8.js} (87%) delete mode 100644 docs/assets/js/44.c325329a.js rename docs/assets/js/{46.ba8e59b0.js => 45.8ffc77a0.js} (95%) create mode 100644 docs/assets/js/46.0e8b49ec.js delete mode 100644 docs/assets/js/47.42aa7d35.js rename docs/assets/js/{5.c0d09fa0.js => 5.3e96437a.js} (85%) rename docs/assets/js/{6.215a502f.js => 6.ea9245de.js} (99%) rename docs/assets/js/{7.6ab61d75.js => 7.c439ef10.js} (75%) delete mode 100644 docs/assets/js/8.18aa9262.js create mode 100644 docs/assets/js/8.80660d67.js rename docs/assets/js/{9.9a5c935f.js => 9.c6d220d9.js} (99%) rename docs/assets/js/{app.fe9bdd45.js => app.17b54172.js} (58%) delete mode 100644 docs/install/install-kind.html delete mode 100644 install/install-kind.assets/1563696697515.png delete mode 100644 install/install-kind.assets/1563697653048.png delete mode 100644 install/install-kind.assets/1563697667480.png delete mode 100644 install/install-kind.assets/1563698644736.png delete mode 100644 install/install-kind.assets/1563698714557.png delete mode 100644 install/install-kind.assets/1563698865448.png delete mode 100644 install/install-kind.md diff --git a/devops/README.md b/devops/README.md index a498b63..53f8945 100644 --- a/devops/README.md +++ b/devops/README.md @@ -1 +1,9 @@ # Kubernetes + DevOps + +如何继承 DevOps ? + +[文档准备好后,请通知我](https://www.wjx.top/jq/43453748.aspx) + +
+ +
\ No newline at end of file diff --git a/docs/404.html b/docs/404.html index d96f3e5..f3bfc72 100644 --- a/docs/404.html +++ b/docs/404.html @@ -7,11 +7,11 @@ - +

404

There's nothing here.
Take me home.
- + diff --git a/docs/assets/img/1563696697515.94512132.png b/docs/assets/img/1563696697515.94512132.png deleted file mode 100644 index 84ff14e6abfdba09e1f0b2d234c21f485b87e433..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23987 zcmd43Wmr^e8#cTM=~7UT79<3uyG0O?k`j;(rAwM2m6k@jHZ9%VT>{eGT|*BI?_%#~ zKaaZicYJ@|AFsz83gg6@weI`6&br3`jjT8(8X+100GN^zq6z>2{~7#w5CtCmn|qWA z0|3YYNzoTdjtM)nPA+)L4a`^b+2y%8(NCXx0dN$E2qiwxJ-Twt0?;lzE?$TyR5xrn z8oEFk_Ab8%p7yiZT=S=;onF`VJMN8cb8Cr_1O@wfG!!R}MqIxpaE7|3* z*SXuGc-pGe@Ok3!&ttoL5tX1ds?9JI%VHhHzQtgrW>n@nxzs*v$Q zIOR)4Gcg{Qd`n;H+^dV&LdSi9^1Ob#KvGQ13kUd?U8vpgzBl^|zNXgULbOyi}lPO2q4+&K2HU#fv3o3kZkN28hN=uy?Cu@FaWLTK)AZ1qOQHN6>4B+w3iw zaQAlY)DwznMUGqcu@W~q-qiP4Z!3AdnOg|wfs#<66Tsm@PX5#dBKocxQ;ic)eTklG zBbBg&VO3{xxg*@fKqCm`@Fi1lKuKn64*B@JT{xb1nlRNww7(IeN-kC^Iggs zsFFHV+-RdMSgEln!@Inc-k!cZhTbgN1d zP+Vs%5Iu@862yH`14qDS@>MjI*5Z{xOc(AE;CVVby0D~ql=d_bSu5HKf zy{iD8-oz9hTwJk_7ciyQTLbIg&xcv@)x+fz^uBI&69no{qf}D9EkbO(S)9CBoQrO;GgQQ^G8y-WYNxIh{Z@?Y z6UYsM>5dz<(1Ozho#kw0B^e4u*Q3Ze2pu6*F#2X~7pDC!U#Rf}v4E;NbNl6u%FIEj zXc&;;w4WnKk0ipX?Sk$xab7L0i2zgu(hpuejg!M~xP8}+NZG|4DOWi6A_nLcO^QLT zSax-Pu7i<1kOljJkscq*)ZqPI?rc(QfqU07I+ZqHi@$H&zgPv{W8#GZzv#Pq5@sZk zPzwNH?uubndZ!+Yf&MtNO23gOhk5L4{g0+Ze(V_LCy_!5pKVx&u=-2wEE!m=#0R+R zOZ3op=O$+kY=9;&rA(HUl@HYpdeX#<=5wuNyx!9B#u#jv7RJ-}Y@Qjdug6g$!?jvv znS>eFR>*P-0XT+&ng__T9-qTkIXaCo~hzMZ1XY;|-TBib$x_ z10E_%n*Zm(JKH3N;ebnn%x6Ot_i>frBF3bOgqzCz1JaC2z7oi6up~-f0hBToin%IFdBLE|Ts&j3T?+@I;wB zxNN#X^&M~{0VXvF;D%GSvOwpVW>yt30=zJw>M5B-F*T4c4WBz zTGc$&G6|^bS&9djA(BK6zFMl^M>r}p#vO*KWz#nobe2@e)8Tb3ZyonK&1K^RQyL zk60my2-r7jlbw=)DZGE|ZZH6Z??5RK75vk+Gi=VbB?fT;~OL>dZ zfzS2h(B>zclr2ZwHPsfI37Se$OI{q4i}m-5hL7xRdB6hg&>acM@)q!|C)h6SFg~Jr z5;$4&YA>EXRF~R05ovg#n+Z+Qjreeim*Tua0P@ST84cF^T-!Ma_)|x>G z4glQupK80-Y^wBz8cS~XwC`R5!kVnTq@lj9XygXi8|@>=u9mKgk4ki>?$r}%yI}!u zMncC_+Mvp^qBBkaqL!-A1^jm@Rt%Yh&0QYCIM;7EI9jp=?jG@Xud)gE#5z)GW|3iL zu(^%8TJLgI$L@>wqs+fWcE3=Sx@SBePhZ0eE@Rq&*Vt)G{k z!4~Amwk5E+)~ntrlGW4jx+|oXZ??}LIMuS$NF{J7977K}(idedqBMW-@j^Zcd@GC? zrv!iC(Zhi*a&_W~t;bLLtW&JJwNKra?o;+cWzJywZ-xt_oaS!>`0QaF z9gz&Fjuat%9cnjCw@ysEu#Pre@ajFk?Yr6}(;MZ%)l)lJe7v?HQbcS#Yyn>NzTW#r z=vlZSf4Ec?%w|RCH9klbLKVZLp1JaVX(K(Tobs9i)(zI{s}#j*mGeI-dO9<;-v&t$}g*^J1;k1@OW_5NVcA9 z8vdA2Z1!-dr;R~hy6UBqrA+FHUuZ?+zCYb4ZhIPI()-ylWNx2qY$qX&fuw8%51)A< zva`yNiBf#HCSvt;x#zIP3pn6k@k0}ITG7>ov40;8lA|B#Fg;z6&KSFDV7R~lR-g1u zPZc4nXLdVd11;IG1-Aw6rGl43aU=^mK$D=F>xut`Y}Z!9eEhMVTH<;m4)6HsHZgM$TK=*4+;vqa(}Gx=-Tddc_#kWp^L|9aSmZ ze@JXQbZGZ6gF6@wey=vSxj7pet+f6edg&{nXRt|3BNXlEm8mU=3MB1Dj`KfMPJX*H zS+|a~HxI(DqV?@nrizXmQ_RPIfLpbr@k(Wf7T54B&h5mY$8f^~; zc!qw*pNA*6cVko>ziE!JgSb}|uq;=)BZ<80QL-}Jf@iAFofYzyP=x@>l1=0W-^ z1k1uUH>$HQd-t@ie^6o89^unMEu3+jIs_SPI3*iCsX!Nmrmj@~2? zx9V-;0ACwjVAWQ8i4NZgDcnp>{`iq~ z@=K7k>zf-}Hiw!=kkua{_(b|&+79WW4>Ad{0fGphFVm;(*?xhjMbaz&PC9&Zr{f)j z={4F4iIr7*WOy7dmIchzA^Z}7k{o^Bk)*bn$q*Fg$-2!;Pe42A0$H{Kxs`|%r|kI%gl5~N{=d*qOm zW@5qpoRc_47j<)K;8p*R}&(}!fu)|=L zXV+=olGG}R6`E?H+pSf@_S&ahW0R%xQFU?@d&m6XalE_V^>9|Og&Jv=f&lO;cT#>lfi;9NP=n?=gaQCw-*qdUIH5?>x*|EM@}o2N zJ_n+{%qU;&DhkyN;Dg1dp+yi_5}TO|;OK09p4mhf_CU>Uqd@>5DV}^zq|CY^bnfX$ z>jqUpTtSWm2B*EN%Sj{UiCxP_Z$|bTPL&h*XI~{;hhNlXoZP^f zE@~(I=K^Bk__x#XIaRppJD>PZY4wzQL41L;WU}Qa9?0)h2wNEG!iK7lCFy>}Xcd5e z-Uqgxix>h=PWSMA8IJporf;-CdJtXF!sV;qi3$9u8IqlTeFBi*!Rr(`l6=NE=wzMv zR8{WoHTlYxr8LV6j*Nf`>&o7w!bC^F=_VtAQs*k=SmgGmWCM&w6N0(?=3 z_xX#Yr7ok${)ZTW=-ilHk>V_KT=?PvnW35Z*~Vx=R}2`vFiL+njyJdx=DwY-YxlL{#M7eu$8gEci-v zZZp>Z`n7^xrlKbU9}H_zHUXC&OI7T;PzIJyG|j0aeb!5c4j+QC9mgrHN~tyJng;fd zuA-QWP=`)J!0NE%<*kk6wos4$S!QdTxKXJiGk1)ToY2Cn3o_br6n!FwkPu$Gf*gfG8A*(eU{&iGgS zARxzGiXaIL1e3Lv#ohm3qI|d(VZhH>CFf9URue{=D(ymmc*$Hjcjs%<8Tme>da9 z*@;-bAsHiN-5om(R&&79=!QNwr;vxaT)N*Vj5xd)(q?D|_m^fe`wZbb@(RKFN7yg? z_BD3MigwLfNJqHr!vj!Xg=Qi+oX4DqeCBaxCif~uAj#JubEy3p)WSSba23vTmZz?| zMHl>3hV~xMCm^BR&j}Vc45s4ubv=wcW4Yg0F!V^eIaY8%b%s)B{d6ZClpSz_sXjH0 z`2tPQXw!$7Mrse;>x|nzqdKg8vQyuyFeQ)y3FDklz5-eGv?Nq8jT1q_Y3@P2yPgyX zul<#~8m>s_DE41m2 z#0J67SvwzjzVFqJD!)M{mcoPK0wIlRM(<&=6;+cD0bA84gg>@3$S+{SL zGsEm+i|VJM2$7ch#!m;Gz*lFCwot+!Fu9tw`JO>NuqN=ToB1>-N9w~Q!eNmdoYxLq zeayuld-+TnY3#e7=7N}nkO5i~iEa9+>R2kcy~FaU&%<$AE@+d%Me9X%AH;30lFgLJ zs%tm7gmkuE>gAex9qp z#k-Yb#731BXv{QV17Ibsj#vj7#VJe0#>}-Tc9%ZWy#9p9S?0T1ceG(V<5QoNUKG~+ zv2j-oRfJ0;>^U(+&umKt!OP208n5N!<;k+n?nAEYEy*I1fhfzubIQmrQk!EPuzAe& zzr9Dw-A~AggGhR5kjtE0C>UhcS(oO)2MNnIExTNY1B{()z=cZ`cR1p5H_Y_ zYo9(M^Zc-l|5Z>=M*NgzPqE6JCdRM}G8w!P&;5RzZuiOn5RhgIz$6%Q>+TIP0}CGT zSRX|Cuz`<<&dkkS`Efoe!<|x1m$2xu(3|Img5T81;LR7=n^bS|5<8vQO|PLQ)nN^z zJa}C-yviUn@s#NIaR41tqIBhH%hgNq2GivXP+bsg$c>Ew`9!J(7MHv{ z+#R*Jz)Jn=t{R27@)!WXsUf8@`qtmZ3Su(ZJ+n+fTIhuPt|AHVT+*FBQFP2!e6f$Q z!1MlmN;Yuq!oNRJ;;HUH_(DF-&P}FV;Ew!M4}EXz_$q%DMhIOw zuQIK-EX0G6-M#Uk?a3g-<=_DfGwMUe#ddzF+@5;nDO+Y>c*6u;lrp>shye#DaY0%M z(!ShUU)$j-8!th9>AY_?IlG|V_)RwYE%k@T`Yj|q5Yw3{oECO35Gn1ZY!=@G^~<%Y zCo^G$t``IgJjHpeu*IZrCC;t6x8Gb!1_^||o;`)0@l@L?npOW3{2D}myH%ne#T8SC z{{FFq%_=Iy4}R#lDVMD3D`Ugl!!`dUdHjJAi){qr))C)2vI4__r!IsUnm^(T`Awur zn@RYH61h+}eLx1$`7tLk+4K?iTEB*p;Dx#^%R_ z$3#>PR^kQhr51YwV;mo@U<1M^)mO)}UXi2sODwl{-LLh9rO!5zkJXmbIrspNZ0w$7 zi#6GCy+Y!P13i7SFjcM9A@`iftuz~{P(sYQ`UjVh3rr38jwdgp*>{HI43%TXvmPQm z0d=i=!aG+QnFWcTA=cwhChTaBTOPnf>dQVLt555Il9Rs0djCi_ePy|;g6&^txj%9z zLov-Dh9{F2R?1V+Rcco#wcK^O#?^4u`U9IxZ~J8rO+J~tRQl*NoIZJabwR4>d%Kh+ z00#(cKcur+`C~!^CW7E_$gcy^DUjUtcUx`GD<^>P#D32Vyb6Gh2;DFNSbv8$vT*6Y zvqgWhcPrreh{KHGkn<>ZSBUZl2ns0T%1XYIekF5qDHx`gy3xxm+J2K-7H0yvlbvy? zT%`krNLW8EhJ#*uD^)BnJv%9zy@~Cooku3LGi-y+`6eZ$@DfXbiBN!PF2f0)#qoG%f7Q~ zY)op~;ZxU_X_#K&(~7uMS!207Aw1Q9tyonnW1eG*ffNI44LeDC&5!LdG;*|9TX#SU z5g^{@RAJJY1cmO^A(>*c`)a&dFXKZTTEEuiFq}nneiG6SVAnkV<2=|f?wD`;HBQ6@a&`fa#k@12@vGH;xtXsSfV*RYm3 zN#ERo#eKQ7N*va`(S~*e`=eo^5CCuk$z_m( z?IsyZNU|I_pB7wgtr!@gXO`h*|7SmMDpcu9O}I1EEXdN+DBd`}q}_*;L4FH;^XP#e_QOzsBRL zgQYd~?v<9GaOtQ&PngNuXG3>&XL!%V2`2(7>?!zB2G={-v$?h`VeK2=t)*3u%+5KT z2OKvo`A)hi{hm5kxO`!+U;eAWe4VO{0k!?&yhC2^2goLklIwRG(Ts}>VN>^ZGa}_I zJthJ$gyFQxnWYj{u^?Nk&9rpC%^ch@nf)eztq3e7kE(|Uf6GS%@bG|{`RBd9hngfx zaT8NWVBh8LOk42 z*$W4=Z0rFbNinK$x6O!`k=KDDO!U08FLAE)VnaZh`9bbdXrRxy8=m8;E6l~v4ZWA4 zL4eoBY$0+ral+6!?+HSg_i&Ml-ls6|gjMo;lrA3$70Fo)U^M2@ZfpsiFn3&rB;}c6 z*wb2o?-wr@7fXPQr+@Xv{ZmV;{R=HysA#P_ldxa?4_fz{XYy3b$2cJbYW9VDL2}b~ zh7AUWz^dDOQolF@*y*KWuZ5B)Io6qcRy>xI`Iye@ckn zqyNBkul{!R0#6PAucfOqOMgEw9L~9WaAj_I#Ltjmf(=CuriAi7&7XwBvX89hwhu&&Y9Cyy5n$?nHTC^eB0Y9~YRmC+@5;pEf?JGwrk|uDzc64lc`C*^=nv zyRsLPIx(;|K`}5^Zym2&hzR)8qdqV`v2P+kF)qmMBG+$uV{FdD%3u()6nwq*twmMw zwGc(90TbMT?QtQC!a77G&zLYTrPqo^vg8^Sy=Q`-Wx$foK4>JRf z6>eXo(T#no%nQNxE4;NV_N$@vJP|Ca!XWnen8gIZQKyIZQY9>d?qoFQ-XeCQNM;|q zk3RNL3tT(h7E>V|!t{%{MKzTaIl@Ij%k0;NNpNPyG;A_q6{fL&ILkyrb|O4M8qH5on?7~1RrrhC!26~l2{pTKQ5VC^M)?KI zrCu|J2?|!SEAEB&1DdaAUa&3qhl#F$vW$PhczCYm>3fR7D4nh@b*=;GUY%^}Tls|eeVS#eTn)FHv1tGQbHrXCQ*zUkR#&;! z%*Pg^Uoc}n0X>}a`LjH#{2G1s#B6Nm+p^c7gqy$Y#9Oi{u(IZ@;2EL_Rid2f+(?hqkq|Ap-E57Qy6JFSIMu z7TLj%;PGCq!dzd3nL1Oq<7P5yw7M7sZL=7^0h-V1rT=Q4nJ~FGQ1L=UHqL!PI7if) zbn;L`hU9mgL)=>n08M24-73iz7o)5O?}lnVf?OMT6aBpec||uF9%T~2ndRigyn4au z1ENgLAGHUo>i{5zY3wStL%L&c-8s;cY>Ddb?s;2|9a}{G58kbeL4JgVVSt2UA^2)wJMwz}IK0s!8+6K;hCoj|4&jCR%i>M)CB`*9#p=Zvgj(GkT^JnbczE*eZ zgY_@N&SU-Sswp2!T=2GI#sw6V$5b@=K_{cl9HKuOT2ql+cE4T!bQcxTPbHwAcpI## zL}UoytK+{u+F{3{1@jr!je{!&hF$3Djqg1r^UD{%0D4pI2G*OK75GnG7wnTTNx5K?GOTu@5$)mzQOT1bt=o={%uBO%!S_XeJ&n(t*w|a`83(t8h&lGc;rAD z*dOneisS&J0Jy8wE&_{ZypiUowVgS4K|U{9u{?y0t016$`d|`)pJqpBu4EH5*2%4I zZqH^)SJi8o=Se5HDma~Q@xW5=?#B3*n3*~V<*Ff(-7J_iPk>wb+#v00lNu!96&0jn zn1J71Tw(0$_CV!e`x-Ro5)zxqvL(wjqtBLu$1`pTOecg5rmq%&pTLR=!M*6%E0#mS&01U?J5{Hu!DiP`yEb?$P|{XdS?pUyY! z)iPR;O+uEA3GE@vZsvKM|Mov%L{iC@<*_yWT-LkhxfpJZsXAXFTeMitVS*2YB7g@% zfbxj8mNHVsXZF_80+D3)7T4N>0+K?=ZT15?EC8-am7$PT9P6XyPKowX;FlL2UMWLU zhpKcB9d@|HA6Bp_$us+6vx`3}DL=Vbxi5+bT2~(HR!yeCq-OXl83NKEErC*PmJXwo zokw_C=J+?Mf4-pW9j`8X*qaM#K_EQ=4LMoa58F2F=99m&{^lrU={NUgP_@4Xs2>Q9 zqQSU_J2lK|>~))b8HkKKRy`<14{$ucM4koJYF2Vj2aea@R)K8t2l^NFoA~p_o3xC9 zC{vikaIu^{c87Um*<*ZIcT>rtAt@p}@B^xBm9QED8aL~f4?(@|u1!3*B2JI@(yvx5 zPp{BQ=IAF@d>U=>anBcQw2wl~s2}y_9@oB#Z~xrfeAOJ$O`P&E%Orz?Z^SoKTWth( z*~viUW)D&Z$r&dcfI@2h=|h>EdHvw=y91ZL%fJ+BPW)<1s0K`I6z^hJ}cN!}rN^f!(Vl(9v9#)h8T*K@|xFB`MpZ0;)_c31(9y}T>HCuxojd`GE?3`)A%ve}DNMVClZeq5qrn=uRLBD( zs^ulVapTlGusU48Lvo@dC=OolR7*)qtmX!r9?|qB-;y9|H5$6CcO=W+Vtshvf-eDz z9emcLsvR+`3KNjFjF7LV=+sN&%2S`7z21C9oww+L-%FvQ82yb$MbS4EDNGbpL9RCh zrVtzsd}SA<-M1r#TGP~`;(;1xGI<*rAHDfh5LNN4#1ssHF>(u6viMVd)e(SF z2a2;<;vW8lNtm^IG-dU@<0ja$rp^b?4ER8M^e~QOvprcN^@dXJyUn4qP9r`_u@8pM zfR@>5ECCozxa;-F3_E;llSRE5$?UK%|A_Ha8R%s`xwDz|hphAuQFc`Pc38exT55@V z6bkN69zJ(p@Vb0-_Zcz&(ZMAOKe<+p?N5ckGc^v3jXBtntLQ(rF-UP6rv)PgtPHyA za3BkjOj-g%Ej1kJFjqZLP=(r**CZa(O*lZf7KcTN8FqNUn=~Hk=7*gqGjLn(ecdxU zA-d^$yg0oDrdmw1b@m`OVk*cdi9RDnD!#&?z`>!w$0q|eSb3%O)RX@NNC*E4nQCSu z#1hPUo!-8=`){s@8xnOeGV|XKETMEDICvPdG2<`#V0D0VenN+@^Ls4Y?agT;J|5mg zh3gXHHS9U~%*wAHs5{`=34}&&eTOP?!CD4pgg|GN!Pnmij2E;t=x>^PJGOyg5?4!? zIO%28c8Fc~tR!Q|eNevme!?qeiN7MYE?aha3hy<69t4ILV?w8nmsp)vD<(d3+?4|% zf$;NEA(3}SoE9@xB_$F+KibWN>M$zN_qA zrJV7csQk`gT4$zAJorxi$wDD4{k^?>?t=Z$Kkhj9N8|T;Q7qImDRq_98TeFr%!Q64 z?WK9s7eFTn3io`sC)w=&nLP#N30C=gmr5XX%Ly51f2^e|XSZ!4@4x)@*Pv;Rx}^T! zDcCh%*A6Tze{tc=b~4`gGdwNVi*ZotVFQA-iDG@=jfzU=QC-2d@#(8Oyp>|hTFhfc z9$+Ln>S^iyk3i?`=C6qi0Cc|2<}`FcMK6%lrH{u7v^v~tV)-<`)PLOQ{1Q|wrst$g zn6}VAa!<=y1@xT4_`BO4C#ruMF{`yUZFa4eaq3F4g=LeT|oa*sq!C9M}li; z@?AXI5sS#GJSaRz#6NV}5~O}muYgu*4mm}GB~oc69OjfP$dRJoxI7!OUHxo#5aPh3 z-$Dq$c81^T0_w@z6N(0{(5S3R_=6F!ed3q;qa+Ris z__Kt)wH(jFF9qq!X^L!M6X{5FwyA*#-CqK0?E2t)v(tOYeBivJ%@KZv7nf!5m)ZQG)A{!9!zI;3Mn4*;Md>Opg8O*^Xf@k3U+;-d-j?M3^a4a09Z9UU~2<>lq z{YjbrnJj@((`ijo+(f=GiPWpfH6kK2t_4BMaes1@R$uJG{QTYFtbv(o8#r=etYkq~ zUV3_Tpr^O@bZ=g64?7FQN)i95=*Mw%k}Sqbb#h++tKa&dliAeRkjq%j*S*RDQYp`B z#;lFR9gN-PZ2K3M3u>7xJCjwltJXTtg0_*0&<|5>Xr`_qa3VY2ug-^MX1b4{NA`&Z z@87@w@F9uMfsu{PW-Lz)D6(1a#}>M>g6&M=(#Z1L?@Yw7=+n{BSr|xw=VDwvF7|I0 z7N{5}m=SOay&EpDaUJk1EyoZHS|#LxO?_E0_$ za_0R|J*Ef=xEf?D_GVnB2uNrARWU{aekXyCFE6PF`JVt>d;*kimxJek-ugPL9VXzB>I3>L9V_=cHk!v15dLlWAcF-BDy_MY;ZS~= zh0`4&od7agi6EpoEii?&k3WxIcab7Rhy;KhA?Q|vR?XEQVUosPnJ zYIuC7!#R+V8IQsy=zi9=<*kx^MXgP+rKz-@fddTy?cw$1@g#0KQ}5quczAN9=yXsm znPyby=tt?iZD&nQ62LE&+h*^H-FdT7=MUx@C+OikAl{v(Pp2$WuVc1u z?1*V-XtGjL7PW6ywckC0&er0CYnwsDZ!G?f_Cy@Bu)v$&JY9@8q1Ye$qoL=}&e$vv zlyejBQFsWfFc`;x)H__X)=Qa=KBZwP`G zOye?|4z!+&>w2K`QV=7bh=|Dx;xi7bKbc*hS`_LlzojSezS2ZM%pX(svJd)R&Ttq1 zH4&k+vr)H7$1!v~@h7a9flmxs3Qv{_^IGu`(gt2F-qYPSwI9C5DCgRjUAG;EyK`frqH_!lB!(9#1B;|^`b$M)r?HhJ_`fN! zd*KC5cHr9a_dm0Xtk6O0KZfgEB8B5?G&Bn;bM_U?S4|c~GCcF6ow)v}&M1~uF^hOP z`2M!zVeNBzC|#$u1~d=sIa`^(>$Os)O7wH;2#0|gHvV0d!w={}z>sHo-V%1wO0FE& zwaH`F=f;|#_)PXst=16um%)Ud_tiB9Q3B-Hmv~@S?8ldE?2EaJ7V|3~WBg+amvbIK zSpMZZ?fbRsJaE6$L)K_(I1h*Oce~BTGE9QrX5tezs#>M3RF9&aB=EBS!P?q_KmY5X zMn@u7^e**O2;*gC{sfD4YMRz*IamW{@%}yd6dwwLHMb8bdm$M+?bO0u&}p{gmhimf z>%|YW@-y!o{Mo_+12NR1*euA{_EX%=YGJCIx8t^sm6^seGBR9(oOgiqX}Kkf|NBTi zwN*Q`)ek-hXxuTV9MN$0f99QJV&=dJ1b?qqUCD6SWP!%z;Yjmw7!PDlT!K5HC2F@<=FiG23&BNYpN5~f4c%z?) z+$7<&l==Cd{~uOGS`BkVcbg>mmwx+iovzkW?&P4FyOn+?+d?z{+d(85m?jJKZ}of1 z`b1f6PUAcIDD0o}dj7A`xo%*aP4s(gFF4L3#P6na+zX4*j!qyQmp5m|sb_tQ2z}Ns zt0*}xj#-*)Kz00hbX>)*=cfq1=mI!`l(&cg_hfOJa;V3=t0ZD;J?@QW2N9F(PQ<7< z6qJgKqd&Qf9?)M>z2Fx;`1Zw6t?~peSa<8?9QJsr;Z)&+W;WW^R_&4RQiKj&gd2UE z2*6u*7gpN`9%FC76Ba=EOTPs*C+3spK4Uom)Ww@z{=I%^L z-w0u7ZV!zPJOi$i9_d8z>2P zg5dy+Z*TFB*w6rQAYsS~=g;+LO$AAupnd!y_*uZUS@82iv)TBe4_3m(0T>^=z^m2OpWyjczvvyJ#FHgJz0 z!Fptqi3`?5AP2aAIk(k0TIoMe?GX?dNE6WIKNt7$#!#Foo+nnGa1)XY;nGb&iEXtw z0*68?TD_EtQ*)}nv>h=29E=*v7hN7bbkV3-S~(|aL1VQv=)V6J#~70e+{vP#F8At> zzT~GaiZY0Egd-|y4U8Fm3xBzprRcbUIPEVH`>&4@Q8~1YL~$MJ zsjB~Q*&|wD9kwA}vGxhR)9 z7n8X2)cF}Cg$>GW$~Nb9WXAK~F~NAbo!U-HCDMm%;m=b zv=9ks0tg6K5(dV6p3a*Gq`DNJFR)3i2)PH>$~{8^FAfpSrX`CmMgClY9H9l~a~ub< z*CPQa2?FF`$gqFk1baYdn-H75{*s9`mXT8t86nPBkm@nERpZqCwy{7f-F$iB? zBhGang0}oj_B+!F^WsC)&GrE!UPZFw8{*bpn}3+4|6|L%#Vh1bt|lcUr_PAyDK2xBzep?Uf^ z1(||VS#o4z^1;MBskCU-H`;o4FemsgK0gU6trm2@vUwxI22$zayn=!??t*OpdpdAU z+b5hH9HXP7PW4*EwRQ<${WhWOGc>cqzY1e(sT>7I?R`7|Kz(}QPZ8Fx_d$Um90?yv zaAG1f)$gtkd#dx}B0M?lF$Zs&B*=G0X}kC~?wwkrr1EzX`M=G2s!`Sqdn=bQ$)C+- zsiGdF5nSY%P};u(XqqGvJsUR};e-2^>j<~7`w-ZY-PY}xBN_EAk5&D8#Fkb8FLed_ zA*fWDUCow)ad-TSEO9W912mBc;GT^;c+dLsHLxt*2j_sd9ECL7socP3&b5=Rn@AsY z4Y`Kt+d|uZggnxo3~l1LUL*Uyh)~#B@lCX5<@9*$EW!Vh=f|wj={KT<9+qO|7&6f6 zG(I9dUk(biP`y__S<}%!8*?`>$bnshAAL4C)$bT=%Vm8HOEYX`1o^b75uE!1B0%5} z^nr=J>@rXx$7Z&rF>73XX226Fm^^}MMTKknCvPnq=`lZDE@r2@K4k0%Oy%HWzP`{{vhV^;!{YIBLh9dDCO7MuDhh+;1rNx zJ%OR2hp}Wl%<-mTI3rnfy4>dxIOxtj`FKHRu?cmRiKxk1W2y2IrbL$fg{`h7X-n06 zfgn|4>-SMWqu*qKO2w}fgH=l~OHfWd?QIu;pP+$o?v7OaM5_)7lHA z3h>R%u4OG4Ifcxe?|nVc+8cNref{v%hCJvz5LM_JfHY{`q}C>7WGRd$`1}7SJH|Vw zKZADklQz6_`_gzD2AazV9zTun`Azief9d-rn1%WyQb=SO7GYHTZ^1I$_JPD~^t$5$ zFak*7^o}WnA+dD?na%B*^L|xV#ObT`uM)Wx2*8UjV&x6@dOTwByKk{b2p>D=JGZ9V zn(rULtUGi&ixnID@u_KV&h%nE>uz99kCNPAer)>oqSGS=oP*pb?T{=8=?~@;+T88@ z>IbHSM&#G_Ux4*FWlNMHu_};D*?)}<>gGFgs*(z`US2n0?=N zn9^Aasu~?am)xu;8vz}x+UMYxJ3N^Ubg^{ntx}lXV{FVKA=^8-NwA*OwiZGjiWykL zBoXT5^csqPoWp0*ARAc!04Rf4MJa_mQ;w0-$R-5G2X&D#QJvdT@G z1N%vIOi&f`K>e?dAldYfeAi&f7&th*-&AZvDy0ji$St z;t#51w#2GNa;S?Ib$%hvgXp?63xU4>eFZ}JD<;GYHQl)kaM+Of#pr7JxP9cNJ|kzl z=4b_3^e(6d{u~W&eu_|)bNeT93hadwy^{^_FY9zfOw4#%2vjRgKKpk>esc$ei?d9? zX}Aclm7a|lBO6Hi=GjN*;70lJ>!AY}6qJ&~cs+$215i2TzFxXikV_KlP&p@8?VNsv zsm#FqmkdoAV<^#4d%;os1)VJSf>}QG3%W^G?cJL>JE)s3Vf?Lvc7os_9O~ZDT!ONO&qQK5#Revz1ezW$4rF8TS5-aMSb8sSGcK z<<;=;^sIRNQd#7a<${>})m9RTOS8jbV%qR!KI%1*U{)=N5TKNFaiVo`GN2*wvN5yO zE88hMjMndk5IR>BY;AssN%GutIQzU=&~P%Vemb^0b%9RBNIGu;2%tp4=Jx-Css;fO^2;}4hFjyE~Vz2>=tdx zU0(1Ww;oev?b0Nc&F)53e$nRENYfNRdm3Hkg76eG%^mf~smeL4wJonhGkCc-vmu?W z!}9GiUd^N%weM~uC#lpWOw=%MEh}bam8i_0vRpD6JctNUePRD2D%^&OC-Q=LC@JmD zYu}H8AFowg1;Q8&N)Ul2Yd|)3tCY%ODno|Y7z5g=0gvg}H>8)9VLsN2nB-5PO$G<( z3rl`fRqMsh@SjJ*m)GFK&Kd4xk=GGat6eKeNVa~hUO3Y;PW_dwvaPN}@J7#iS};qD zq*7{ZIxO_ZZGXrdAAJ@QV3k*>DO46wA&^*k*# zU+g^>^dq4*$=*88*W_95-4Bv_y{}f-_8FI^F%0da^=$n|^xMc`a>-h)R2u%? zv9>iiL$4|<;z$+qjIp!g5bbKG68W*{i+W){`7z&I>`QG&BEW^o_1hdbOW6XWUX0$V zR><&8 zx%J(-XFE&lTdhq;O$6HGI*;znf=A0pGi@E+diJ{3)qJ_T#HIFTMiItlKiz8~6lxB6 z7g*BZk_k~7-1G``&#ka-RzAl0)A}vOBk=+0k;$u6Z-9OaEJCh zk((`})zcGai(Pj*_A40N(azj?aO!qK!7{v^oJa!#0O(je$EVHECHS94O&% zkwE}xxwP{`1cj9Ia&veeda!)6blD=%*C8YKDl|W?tA2fUX!>qLrNJ(PC0!^c^UOGM zUHkTlRXd4D5=-P5 z)GQX8+UK$PBCNJ`Qdf3sJk!7Xf4aExc&Og?eGrmFlr39`>}$w2Qphq?@)a3tWgQIJ z_fqnuWZ%goyOAwp8T*nwW6PGEjAfWHXe{$P{oePl_s?^l&-2H*&voC|echkuxu)I= zIf}Nx+$IgRvTsG#>)<8$YquEcyP^aCb(dokrOzF-n5a@IB*(Z8n`PPu3<7oqPvs+U8)ke!%or-`!rAl;H{S$RkVDL02?(kji zKYKp!XZKj{>!)v0p@Z^&-} z*FNQ2O(}g})qJw|)pfls_SOq)3$O}XSZT$a7_ml|(B_7wm&WDeqv{V54@fRY+ca(S zm_B|DIshyj&TP7LIiXXQvWUfcvW7ys@V~kIPCLUJOU^FC{kl$xy4WS^`@*Yc$va^l zbjN2NlkOwOFGj;T{58pQ>9!9*$ByBuII33E>Gt#>>cDqd@wWYgV4PDm8ZZ*yA-97F zlZCGP8eh7`nH|PUY5^fX{Zqq1MJ5r0+|Dy+{5R5n&jqA*sWe!TkJ z%^azEeCXcVLs=>5`yV*31iK(c^JuPj-~JNeXhYww(-QPrDIn?OjPC0Y-((bH=$W#} zg-W%G7!xk3mbzb-I)tW(V3j;ULS16pue^Yk6`Rg_aid% zYk4((xD9W?v`+cmov&ZTM| zXgi-?QbFv`dr7r=R|br>%7(;1YS>vmjDh|qNL6q3#5t+d=aItAa>Bb?tg_I*_1{$Y z>9G*$sX43EL-YbI4xxw7WGdLOT0I&Yxfe}OIk?2+-vPl09qmg@yi923Uz;$&j`v4A zoKQZ>)DiF;!4Ddc)@$|vEo5+!szZ~<9({Y;=K%>CXVrH#n-t&e7uo0BpB#On$Qb^q z*feeXS=$0@oT}m~vPy5=pm zrbXddfbG5vgJ!KtAbxA*-JLd3_BUsT($#*~!^-4N5BfrRsImwMyGCmO>9XW#MowdV zq)LX|Ul*T89!4X-XiBR?_}kBf$VH2bdLD%sYN&^2C+CADRZm6eowr<#A>7fM%{u(gvQR+l z>7J5nl;9S`{y>Zx5D-SR-QM}P+&0bXUcA!wz>{|mE#2M>>Rds|*{58wxHC=auzCio z7``v4{}^W3IEWj*wD;RVI?3F;;ebbw;k9e57t`hMW0cXFr8KX((QLuMhLZCoi`hI7DqsnJ=QrUp>+6oSv88{L!c< z<<=~pUr35$oFP#I;k#Yt-JhCyZTLt|(4NjQJXKEIub|I9O*3oa@%z2TJ~&RWvvtDo zuP;Fp*&g1)9fD4rWPR*?sHK%kcayuw1z|e?;P}Uq54k!3X4}cHhTXWee`gLFOD@p> zvUE~+ML^RRC0L4B@KylpWcmsgb(0z5Ww@(Msad)VnafnQu0su9HmkOL&Ddp$ig#jI zi+>a*p9-iC>s$eBBZ2Ufk%HeL)tRqu-zh?oPEY3wSXqq=i_4KklVJSt2^T(>Df;#( z0>B5wGhC2V>dK~e#G4A0I%a+D;Jf!`PoEQJL#HF-bL#$~0f^{`Wo*tQwk1F=(Tead zl((tbRfln+%O}S}JZt??Md8_UIHlniC)Q@VDTbZa=|@kP505;l!|iz)hfsN+2`qG3 z(7-h8TU-=7x!xg9iT1^B%J#Grz4HuHStBifPNHSmt|%py+jYA~4B!ME780fNsAOby zgE-!0`Z-$N@>|NGvCrUIu8Zjr8~XpBBWDBv-K`BzTEh{YzCo*s9|-c&8HO<>1M3?{ zgd#oHjOhBJ3k4ftz6>^*YsTkDWQ4Yl6j&~;RE=hc&Q z&2N{oog;E@W)OwXeIzky3L`!9(i}IqLBe@$A}MJ3>fU34NIHzw6Dq)xQ^25Ukl_(h zbk4P|t1#{hhOzvsKGsP=30>63&-_^w$O!7fvai`dKZq4v+aO(Km~*TnY@Z*)WV*!x-IX}Ap1#r6^V?kiGq`?B$2^DxwVt}+~cHJG)&d#Or!Sw(@k z2X8O8TfHJN8*gQ={*N?fNW7QV@Rou@dyOX7w0ay!KX!~wRoW5=EY19~%B+n0Ec4rT z7cRGk`dKn`^uo(2Y>nM{lS@znq|xo%MZxxO&yfXw|+X$n1-}hvh>0 zWLXDv5+x(ZJe(IAhh7dRX-NS`*5n5mguPQ6tW&nD50i7K{On?T?XjWx_~H)-qQ0P5 zSWV^fp^x-MG33NX6`v|Nu)2KGA#BH~ zeNyI8e3VP({P9Y7_n^Q}8X9&N#o@t(P(T0yv##uI&{Kv(YBb}YLYz%yh7&G4A6n@a z-C6$-HCrlSYLjzcegmXF!Y&Uk8Fn0(Pp*ckW7l8;4M~|O#UR>x^bRNjRUc;ErI_@8 zJB3dV-Z@4X>_<9IW&AwZh-I0K_)I7%f9&3TltA>~dO3tBSp5;^H9EcwdON4}WZ&e+ zQTnlo(L5x9XD3f<-!o>pi&Tw%-ECV)jQNv69*99or}AKPO_z#e-a*gb!)Ho8HtUyA zS`|ZyywHER|I6YGA_WqCILqgGi})xHY4Rd}+jq|%5|?z8ZwF$Ut!oXsoP;i%yUX+Y zrH>b6-n&5kbe@PlFssXcOBEi0_rQxpF&kwweCOcaf2E&^vY<{22|_G#8h3E5{&ZI{ z4q~Ckl|^e6ua{GvS#xGfH*|TpMRvNU$lo^v21oly7VVq4AhaL3W8O0M zJZd>hd)U!V|Jp>#{ZA$-yPtE`B;EU})UKgxoyC+h;i>WDI}_fHXT{5PZo*Ni#nmE@ zatGcxw25-~^~FUCMzY`x=9bdZ>c43&MJ`8UvnP7q#$rOr}vn_)3F<+2T|@ zG1;zpw`Z6(CxEHY4%`)Oydzd%JWV`I8d!m`IQnvZ-&Pn90vE)vgPpK6i_?7h*1AL` z??&FnK)H&i=?b?4hNc8OtwK5v`!1Z_&%T@GOM+VYyW5X>+S$}9ZLoSWfMOX`v?`s6 za5}HXi$vda+-2?aJ|^XkOVYz-ISzD3FSq3D91Sy7SUDxEcBugca;m2f(-2~MoC8Q$ zXIk0hW(?h9wk;D&uf(`1e4KfnR@eU+j9yWYOGq}lU!l|wIV7H|#-~J16_)0^$Ro;A z()$rBclU*th>Q($61BssCa*@^TTavOe=e30w&J;}XrnQJXuVf=3l-dch&$hE-eJ3f2hCl29_3XGmP z1Wf=lZ|GDuqSo#A)-uy)y3(&#ho~B-W4B+TL*$>8=$*elc3PvVHb+Vy&zzXyO7G?E zGwDZJcQ1s3qgA9}37s}k&M8C1`@2yNv|!)O=T1Q&h=pv4LCh#D%YxTUKCx#Fs&IUO zq~e!N;j!-K*I0YHA8{AD)mJCcgR<_eY9`MX8+pawdoKv(alV}MB_mlQSu5+#yyu+PZ(fO1QIdW7gz^ah08c-Dc&`Qk7;jO} z<#5nZkFd($;{fmi`1t;O83hFwy^g83Jt-4x@r!Cw-IT z9Fu$77{zV&&15h}w5(eg1H3Z|DvNq@)i%lc&*y@i(1MOSa-l!<_`}jMyn*lJ&-vJ0 z=j-C|)Ajf~H8RX_xP=eb_GUqY?UU~^PkDD=awY*1I2LLr5lUL@f6Cgm&$_-WTrd(R zQ1MtktU<8vbdPnNsNtJU*ejzVs$Mlg9R~EI;tg&-fhqTUo}Tj~>)jZ%X<0;6+ZDWe zSDPfqB8I3%EcQAGBVB5%v$}|DtICoM3+&9%<1)9oSHYD&5izXX(2(e`(>`jt5ZxM! z8$MJ0Fx%b%z1qo4TpMFgw?TUBmFDQZq7+&O03Pn!!}a1wReHW2>JGKD6{#Kau&uLT z)FNR#d0WvT-5ymmY`q1}qE5vS0#x2(nFgDz!cccbIUk^g%wGSpTPqV@E#v_YSZ55z zkv;mYd92GE7c;dx()P&79~vHdg8*CjIBS}5)({c~VY|v3J*+zwD@7EOq0r`nh$a)_mb2H!LOB;fD*S#If!E&G=OLFoAkS`62bcDkk63vH1HgGLY8ON00HXv#e3xwvxdV> zQDbAVv<97rjk@;yoz)_NICZMbJ_6c5ss^dclC-s~TqVsGou+EmIK_X@FKV_K6YiJ8 z060iOMyL+>S*d#}uRaf@pK$V!*z;Z~QvNKn!cm}!#Kju1l;00%L?8?lZ``cpm}ppcLly=>N}mrT9gA!H{Qf!nULR7yr$a}|=TQ93*yx%mJ_C)XCl zc0-}PyK@9GL`SzV=eI0JqCBON;nPf!KZ_-A;P>P}QCN7`FfHSiW+h&JyOyu(4n?v> z<9$nR0-J<^iV51CEDt%SaGIxK{lkm~9UJjMN`Zd! z&F;XYRSK#;T95$EPWpHOowNpV_RDrfeHb=YYpZ+exOFdVLL)qt${l}oj-E~*?eM!@ z0-bL}?tOET>)xrPmV(Fq8aME4XEQp^XfqN6cqtq1@H?~MYsAojzTmOYMBWUvcN3Rj zI0FAHA!<QhUKDE2YaP8W9j@;%&PtX-@is>>+-p4 zy#E^5nIYnKaww*&x?;0(nM0SRKKB>VA+-Z9(c=>iP*%#Fbg3J?I58~56l!NS^Yi4* zUU!^E0{`Glz(q8=d>YZcgk6gnA&)DziD*i8uUOInvCv5zlIvZ9 zD)N2{GH*jRQUn%sW1KPX5F5{|5x!S%nYGP9hgLIuTS@KXf~JyhwdhJt-i04?k7ij> zr8%QQV6$4#LZSCUW;)qFM(ro!fpuCRe1^9Q0FIjSp44O-{9G=@7E3&?a+$k}n!{FF zcJpT0JoA|(rGA`HYfQVCI4W58fbUa_11Qu&A~E?sXQ}Xl8CnXa9wjFew7;l)s(-cc zrfCQb7^sXV4C+{b(R^8h1Z-wws}VQQj$j1#C2Z&>`(IpE=op*5ySLGwT53S$9Xq?( zt0X?LVNj=hKuKk{wRg14O5Q{q744{|DEDh>qE-L4`X=q$VQy~zk$qURR=ECLCl~va zw&r9(Q*)EqdIS!^yy*0bpoGwuGO)-|0>+L`@{th-Y5Zg%zOV88E`Hly=k0oyp_HI# z+j=G3tt)I;SKCqGhP9weVu;`>`?!z}RZPfn7Msa8MLkm4hsnr@9u}+5hWY#7O~}Yk zrV*Xo&;x;MsbD#`hj>5KK?~dSTeX~tcn{xX^Mh*68a!Nf`3&|e*w0Mcdf_*U(!noP zwx*Q9UWX(0db+7Oo_?6CjqS~$RciN1JOb_j?zTWy`%f&LN}Cw;P;x*)(Z*ks7h0)R zrmAkl3Day`TWPy##9Yq%*^Tigaw2f!^U$N=^&jo^;_~fdXklo{eF_$ZGwbTwfj`kC zRkWnAZ-w4?4ib>AvlJC!00#L33;b^1i9zqpGFC0bx!B7maOF!WAlD}~b7y8jdXCj< z7jx@F^k~O$VVB}W^B{}V!`458`63Gqxr$W8`ylI2m_Zx$kvYd1ey;1V$a`3O`E$iD z$YVP~Y2F8R?A2C}`{BITI~AJlIrkUrKZ5C-L|eWna5G= zV1&vQ<~~CRS82Wcrkns&p*MZuWJ{~$+E#w0vRvejyMW8eZ+?ky=j)M@IQj{0JWU?z z@)*F`B#P-Y(=M#Z+7>@7qhy3$+)OO$mh*cAnCirIX5BffU^~E*7kTEb9;b?!{?0p# z1w9wceC1Zug)h$y0PIi?LzylvYT(maz}rcg$D~Bb=6wM}Gp#Oy_bp^}DU~Dd(tfh+ zrTmPH+xhrq`!jD&qu!Wf&(&0g>G zqPYy86|BuD3h;E2&#oCbNko@8$==vx9bqW)Vy+?H3Hs08=-YC64>Hw{&3VtdGoN>V zJnLxpgk@)T(}1>lN9X&LnW(6!5Nqw30mdn=6ZQ z6MQ{i4LgqCzY7|)yZqi(iuV-uQTdA@axJ?Ztoy6h{!qtY+G|tI+C|}SynMlxBfQ__ zXno3}?)d!BAYSEksHf&*t}(KSq43`&4|KA{vz(@6w~@L;EdGYGfR`Fm1oY7Y&2`}2 zez|IY%%J6UjPIKMmhhqj1-#XKuJ)7k>gsXw(&g(VbOG?IQq3dn(q6QZ-6U(Rtm3WD zP=9Wj)vCC$@_E;C{t9#;FS)RJXGQ&NEqs`h@f^ACZ2-JlsCuyT0(X$Ayzt zG&DPZQJ+4@2LM0?zm^bi%vA-|t+c!$CrHH#D6xDd10T%3Hd|x7UbLY-bjT~E1a11Q zAWum{dOuW%4KF{|6JtWO)JXfwCZMBR>dY98R;x_@!arBn6m$n9Q#-U3$85VAtWQ{7 z2l{SV%`;{}R<2A$PwMTxZf@hQXBsXW50zF^2VHCrce(HrWMo<^t?7W&vZ=MjZ&(R3 zbNxE4n$Enp+CMa(u?*GOGcvCyua^ zfKDDeXy~8Qn5rKsc*M^b=tB9XvMe3W;8j+5rXVbOdNiPiJHS_3Pgq4_REGdS`+zI>G3G-X&oXXa)yOvzT=M># z;$dPLZw*Gesd1H7#e6^C7FclBr=VbH^pXh{ru?_}rH_Cj`k^sc*1&G#L# z6p zT^p|l0q=%&NX(l_`rXUTJrqZ>rU?zN*eVU39%~DTn~o`0-1uc@!8iLIQ9ZWp5xhl! zPDpc;s z`d^(YNFNhm^~|KG3o!9DDQNytZ*zScQIPNr`OVs4LLi$JMz_+$5mKc#AJtE&Y>xAZ z!Cu;|CvtQ!d;i2m>JRZob|#xf#0bsZof%e`Ui;P`gVURd#3`F0N|}z@kb0F%S(v@2 zvC|xs5goM|)*0x{a_4bN)5ls|--Zb2mtOD4RHUMj|7@H1>jW#2{L^%mGteO~Vkq4q zmKB9(LBi9?#ma-@sL3X9f(6)qs`NI0#71QLoGlH^EV8k!XJfgeJ8+?m6`fxYW(ZfY|bNK*edx`&Q4Pf39tSSU!{GmF-vX*9V0ejkNEgSpFbg$ zH$P8(GzZv9xuZ2*ZZcmDjHno}m$j=IT@Shvr2m?l9pIoFZtDkU>#IF%6XR;Q45F&a zFZC=zvN&?0oAqF8Q#Gr4HDPVXi}a9aT->i;#kFDzSo(}gZT8&{FqDPK2*%`?o&2EZ zP&-KSblqRhw;b6-kVCn&(Jnt)+iIOy@rnSHz#?BQ``e0m%cgiDsy=lNE5$y%-6N%I z8~k(hxh~B#HM#r%b{7A(BVF*V!jprA+Kdj6Z&PbB2;b2%%L}&rQD5-acPr*=pUXnS zhW7vJ1hK-FQ=-UUj0Z`~udu7O=1B8-0%58qXz75G@O7J|7nGfIP9E6!|BBb_uC6)_%=IrX*vsfS z!P*^-=ors|h%kXZX6$QPhJPh1;P!^}KeE@9>vMU*e-29GNsN=@|JUKupnj)+u85L- z!32T>PG-nw4F*;kKM2;x?yI+OOjJ zf&d`t`5b1h)N(cPRy{h*a{<8sOJ-?p#RSON?CtCv#Wbfpwtlv?Zg=*D5o@DK9#&A^ z9^SWt958_R3e(?h8=LWHsezSlyC_9KkRx~exG}^87MANTwL*U_e z?lQXE~9e4kSfNO&K2p}GK)WxG{Q?GMspZ?b4tnILydSspcwr-8B-g}q_7 z2QkUw!l5lnWI&)A>vFS+w5Q`6$_Fz?yPbIY7pH~K71Ag{Q|~5FZ#Wc68sl8h^yPR^ zx;4Gy_E+s8xl~CMZ&C^U6tq8oi$LDcBl5>GuX;DhyDH#yS#WUxvwd~-g}MY znT#%_^i7M6z!6K;hwYPvOFd{Hef$DGDyplR=l2`yq3+EiW4QJuT|o@E|6!7d5xosk zcScp9ao;d~&Pui5TA}Sbo-Gdoo%hG7$Vo5Bw{HD8jGhJEaSU7)`mb(r;R9dOlG%x# zXth-tz9hMK9l0OsNA-pWVgZLvbI^WTgJY?qD+Gd$Ud!BkD&1AOpIvZoCVd_HQO0H1t+9_SQ&&FZutk>`26 z&<>*{rLD1f&OzixqN#l(JfLF@bcTMe^fqgg2{j|1F;dYze~|vE@98*AsqX>>db)Sw z?1jNkfSAxf1{JueLal3`;an8*1ixYJ6n4DRfOVw5Z6Tn48? z%4A{38R^EH7g`@E=j;5#4Gf%BK1eh1k65so*Q+Hd9>K~9=~L)X$}5M63Nb#s`3zie zM5A?bbQ_;Xu{s)VLf_6Q@pZd2F^je6X6#t~9x>1#Qr5WrjP7mwkS^_x4 z4TPrB$Vp-A!Mv!wv!r!>d~`6LU5Iop3NNH-TJIrMF27TvCX5$gZvLK!Kmm&%fkIAe z^Y!`OV&2dMq^Eg{?;w*cSz-Uv$5vL8nH?UbESn;qa8OTbbGffBn0u7L;c1C>8 zf=XB_e6ELbbEprKjC_5!o(1NVaLV;snPULFeAY<71&0;-1aY)OX-NFwIe)xxY4e{Y z^80paiyclIv?!G{`vZIALlLwc4_LeYiL<%hE$E5riXJ}bo&K7r3+K3;ugouE zb=iCQu~M*rmyp5aq3ZLR@~E}QN( zwrAumcj3q~xayCIOkFOTuZ~k4n(6=-_#CihqfrB^Wj1?XHa?d;lHr*CrEj4WNu1RZ zMKKbk=sT<~laXMWbYd#ph{^uLA2A;V5$@?<8hhk&>XDn^K z2{fRENn03LB^TgfIQ7(T@8P~5i(5RGv{|3Y_XaAxT*RQ&aqS3FTswsba0OZ5b4>w( zdRw?0CG9rdDicUkXRWqXI^S_(ci<_(PDxfO3I5~LcB6&GQorrg)N~7XZ<-Z(J8nGO zOU-FF>vD(VR3V1$;47ue>sW#>W(O%s@Xb!)`kk>)#Sxhj?td{RWjuEku}8^H?yIil z&3yYzuJ=AaO{*ziwma373-(W>I}~4{1Nm>P{4Ia*LZk$!jxQ;;QF!zLa0e}6KyVckv z(rItaMz;LMsV||heQ+YT?#(`nKmfGzm&QxX<<_ksWJ}!=#P#G;e&5~h0r>UHyjd-C z6+_Xj|F%(9i>3(l$@ z7GB{GA%nuUI;0#FCE#CZm~qehLNS$hTPD4>Da~?GKyObW()0cq(CIXcQe}t_5~zbU zb+>-SW4piGsnmQ>%qHZh?o7zSX2NP{|AD37qoH^?XCcwm{`Y6+e6SuRpExb!V&=;M z{V5Hv?@Zj3P6jG-ftRhOP&Bq%32gF5I?s89JHpr`+_9`E0Zem#x36)NE-Cja^Z}ov zM1W3ypH@RDY>_i5zWT=wGZ;PVlx>x@>1UqE_5>Qx^P)>;HtC!<NBKy5`{&9jHkniVmTzJt_ZfV!d*+m?P3$uIXCe zNOW*pQsH@>sfS9;P~_Ftf-Xz40*yG^>z^s5M$SdnswoTKRK6uNpp~rY;%c z%GshZ7_$L8Kk!zv)V+#-&Da&BPdERg02>=n!K(B6t`GYU9y2sUmnAd%H`;1TO&>FE z0dM+s4qN@+&O{GZ%IL`$nPp6LjeoW<^S0CSC1R?SOw5P6o>AG4`Z%SdogEiU+w_4K z4_fV$fOVJD(ALDZK+{u+%0eE9RL6o{fin6Q%V*TIaU5BkV#g~ci;Z_x?MKJ?UzugY z{m*)&*`yC*wkwnk2FV4xE&OV#9-`?u+AoafQB7+5<&kq)ZcWG55F~stJ$%xjqEtLl z&}OOo>a(1pZX3ozb|JQ$Wwk$w9lmSA1TbA5qqs`xtyf?m3f;NJDerl2hpsTP}F?H0f_PtX1VPG^?LW)V)ujY+T;Hz?a_F!7zi zo!zyk;|fFj?4&o^1eU#e@6Sd`%+ajUd-IASDYM9S&GVf!X4;>A9yy9i_Kg#1qgNiy zU=F=0kp=8@3mngZaljaA28>fG7{Nxr@Q9u?kA5-|dX1R9R$5L_Z`>I0>(_0$DgI<; z)&p9c6@A(`ia+}C6s>Nn}G##$VB3FbsR~MB8PmKGUa}acdqWu_Hw6OvuOt# zI0QLSgw^c`rv$K#006XFD+(QW4h(Q}roES3g?PJtvBxJlsozgz8KdbBvh6^ydi&=* z_PV};l7`To4bd`fu-AoxzMKR=d3aE+sRc+>`4Ni~HERiiZ z|C8im*M8{*OWPMM=TLbgH%qCm|5&gAm3YzaZ%9a4ecc*Am)G(9-;rMNZ=;(S3b{Rn z{xA=<=_Z%Osb4e8b})I`nOPn1lA7-g>}wyf7d1?3J0zm1jJE!vTtcNPXflj*u{GDX>RK6jBu#K}xK?FKF z5>-J7I-tTHO?ZHj*Y^Q4w?R5etU(3M+Zen*$g-o1(m$}FHO2DZ5OSR@@yH&6oDX76zu9*+1esZdRjs@l zKaimd{ZWI|9_;-moc0&^u6zs7zWbJlPFZv5D{rQZDSaW04w2Q9Onk72SSCEg9@F+MJq*6v)7hK=V$vdP~6*Jy1 zJJ*9^6=@_Q;{#0?z@ex~iKl!=qE#nXOy`4I9tzo`(DC17+=4XkQ+DopR3j*FrhjYtO z0IN1M7FG4Y2v}oxgk_l+~cj?7mHRfzXRe(5dc!0+*ki|6ha4Z;A>}EaGC9e18taa*Ayk zEP~!}^V9F=EX1J)Dkww^>d*4!fA%+%dLRHFirdDT{DpvZ5VNwrcoA{n*DWA^RVL!_ zTi=n76w9{E$g3k1(aIUCam`u0Ihw!rEc1uVZev*5>QC9OteCeP^7vnHB`L(1=oolO z&Zq9GV+r1Ds4OkUQ_@MVHYzBLexUZqKX_!r0m9$lBzb14_IIirBQRA3xw%_;ydpA; z&EYkF9o~ANF7q@?j0c9jjQdpS;UW|a0h5P`qjE%*@W#ESOKuf8w`w_YoLjEKWyzzT_bM@g}{u^iyN{+&M+CG(Is`@4=O@-*{x$@$GqjQl3A!c0)J zw7Eg?o?hl;(bT?Xl2bbV(CsH2?uky$`yRR!j zVWEf+^dyD*)eG+M=0_1`X5Bwo@E004HZxXek<<5)T@np5nL@*m@QZ+Y96;k(h}Y(! z`>I>c{iFT#@j0P93loxQaxu?dOmh>|&PyGW^hb;Dix;cZ3u0?FN-8BcB?nDN3e~r4 z^6O25+;?`z_*|YE9Y$fSOyiX{M$w?_f8cIkruF(VedH%NY1d~4Ij!qipB+lAv z``ME7q2|keN-ejC)xeWFR8UtzVQ&e^dc_3Zzc34@!)=f?iwHf4I(^ zD$5=-O|5LzayevRY`P?Vuj8lg)mE~RG@aVVD(t6}xMA^%BUualy5b){i=x*4fmsT{ zw$TRX*qh>j^GGb#rcFC%^O<6{`ffrgbg&;6Dx^oWSaPYQ%<$K{${Na_C&069M z$I#_ZgCa?gn%t4t2a(vG>7lSU*rRQ*)59H!`Gs8GfX0(y6f+Ef4@KN*jT}#6p+HGP zT3VULT5OnLj?VYQNL+`hg@t%|0y43)rn$e%<-Ep$?%GhZlS-tsCV{qJ%u6WwQJXXVw+ULowx(ujjbv-+WqNZq4a1Z>jIK!-b^z+&9o7O#SwL>VF5f@0_=+ z0xNf>r^nhmN=u3#lyKkT;iyRbm2}=Ea1^UrT@AHe(sp8ah7pvrb8}>gAo$!sd2ed+ zFZ7;ldX#{F)i>SzmM^fT%h?ilo$SdFHq|Tqdj(oj3Y19J9f!Ythtn&$S|||!&q3m& z`1T{5?mv_;nEPck8<#O!pp})nor}{6Jqm9x@+*)NRvou%)Gc3(9m&F78=jy$3$EE9 z@@+>4hw)qYY(|b9bw)yxCS}JjIuk4!4H5 z<~Wh%ozY z$tY=qnk)}WOLBjDo8~t58nE&`*PZS^dT-AQ=%}qLOeQ2b+G7C!D;HNaQM|*Jfr!{w z(gYfa7aq_ne7l}cX5UiTFKwm00v+o8yw5y0)8iHX9CapRom3k|@<-${MjT0p@Chy4 zaD?{-?~`H)R{>HAh1#M}Z8nF#pq>tUvTc^J$O-e@CVr3F8M>Cn<21zrhe$6L_wDo0r|F&N}G3 zv*Rn5@8K*U@uYBj$Fd}U-zl+xm!)5ESoaUT`?kV&giwt(3W_>r^Q2P}{k|z757qEH z%tO(^iM(V;bxL8IL0`emd2brsuyOY#^T5hli&klWOhxt zqm+0!wpP`k*woPWppVLkk#{qQSC#m2FVg4RjNl|X$)xc>;D3jRm(>luvc&=p0}9WV zN^bw*lCte4XKq>?st*smfWq|+`ef$gZzoEww>w=qp10V4-*UlV=QzQ0bQKmui0)+>-W=TW)Iz=ZMuw0USEW}Y{W4x(0 z(rmt+C^XSj3Ur#Lnk&S>me{{rqc-Vc6h?S}_5oXwwHoT`J$V{h499V_1m?`cdwM)9*NBtg7YR8*luF9Vx|<5yJ(lmmQN3DA0qik@w? ztN>xQIR=a371VcY!b*li${Y_UBDEjOS=XU!LnEwlS-~lSs13WiW=>ydnun@;vC`Rn z_+r$nu)SP>hl^S6>qe_mdk>ZBJk5d!F=iY1P;b*iklRGTC@^zJQ63O{aKFCqJv1Hg zjScDjMSXP$_0!~^mi;p=wKWJqSvS604I4kFlW3j5=}5UBWkl?Cllg9C z@>ZB;69Wh|+kVW*6h3NV!Ddk(F-oG>-`luB*Ta6MirPm(dCsv$ZU`Go;R?uEF*LO= ziefmAu0n?>|F%#4zag``(*@#K`_CDdot2F;oa|*5_ifEb*HL8$go)E`{r_$OcS8c@ zw!8h!LAF+D#ZYWLqI|RgtfZ%@q3BNY?f6{Ea$l*(h>c2n*-4hm`xb5<4T%ZO^jII| zieaK0(|&}N03M@=XPu?duM2op;GRdNa^2pVFRYd6}N11%zLLJI_r1+1OJO3;CTPsx7 zw=b5fn5KHT9+T^nTy2zDX)>9`W{1HBaO**6m-3ZdLKK?J$IKg;n+aXQib6&y_+&YU+gD|4feXpmdOMuH`4K zO+CeFQq2u1QsSASmnyU#^Hic6!4wKh=Oq<%h>a=hfGb&$%mm73g?G*nF8%ZS(_fJ7IV56Y(g8BN96UsyMekYTz^xL&9 z)fW!Z1NASqPbDX#JZl!)H|t2KIbW}hSEwC7pZ?y$R7s=acxKElS+ z5i`u0kKylT`+QX-f7dRT>L|L@J*J{Mr@u2J$N$o41}f!k6|6dBci=*vw3w}pzZO^6 zbMJOI@a7@&%o!_X{bWuE7Z=JT%V{&i*^@Cp_}Qh<=dM3NmHe)Q0sIfZ}b6+7JfgwA&V=;=WbSBo!3Og!Rk7wAr%N zmxd2`7HgmUL#LCgU)emHs{}kWCDOl=krV-R4rcA(v5ELjS8^qtX$1xv`)O)4>Jzk? z>B4M6owc5@k#IfPdz00Q7$KHH84!aqSiUe+B*JD>C@G^FtP>p_wF4?A1G-le8DHpp zd#T3{NIrdB+b`W*ydrfa=3`Jorfj4-VG^VE2x!y`r%-tD0$8*L!~Eh=1%Z^N{|Q!% znoRi3*@A05Dt_wqE=H7j;vMhZS}C0?(Le#BVYkjom( zJE~>Hbwg|#xlv1ucW^UlbL5zOF(8b-M#6H<_q&0XXHhVJBhHp9iuqjbM=Nfg_g4#= zX-;`Z)VCZbAh>>or?yqk>JMUY^j1!L~tTTDvo*!bM?xxnZ zZ*B)``goC!<>9JG!qsB{3<+(pK@qNz4VhE;z%MNm?=p)A9vNoBE@ju4wrt#} zpK8^ao*PMsmrvm~o)1w{*cqjDMTMmH$!(`Zj=BjnmmaY-t6=_6L3S$4Yll*etTQ&% zLtC0%{Bzn#CU~h3pV>c=ob;)AZeDf zD~vXXe07m#;I*lWtG0M3B(SIGlO*pIKe1aSXZg$$7DiS}osnni+tYh(37xc%c=_Ma zOrCl;=x6FYzvI+1*#FQe z8}s*?XSnM#AU)bU!>*TXbV z;ib*&0kRDOiI%|t@`Z8N-8({$Uq`~UKW0>a;$Gk zisuru>~lp{LdAILO(q(hyOx)kOWntA&qYVGx8kNwFXr;eI900WS?Pj%QXGlyM#B9`fG8uMIk$qn{O&f!g$_vbA@y#Wgi`d2}heXDlp!=vVFYjif!P zcHfz7+TG#)JIysuIn;7P(F#tn;$c6?U(aV!jdqV9DIGnWuUoKF=u>3BTrdHD+Z|Bf z0G^LL4crt7$>Y~A8_0jWBKb@fM)Tv6J6&}Ngbmzz_%IgbCn1s!Zj>j@ZDL{G3RnVf3#fDK%RwWPwd()oGx@kHr5M_ zr{aefn55rKKd=qG3L%a+T%Z6h`R=ZAvJrQ7uC5ByZHWFO4i*{>8kwWcEWGgfO$6m$hJ9 z@37zSJtfBElk4j~^O4F(8g)bWYrT7?50;e$n*&-RTZ$*mm6T{6Je;e7cJw=aw)p7ItX7sQ1WV9l$Vf6!B-&{NY%XfqAJF&6Hc*@oVqWc zY(t7un()#ig%Wb>g3kgo`>k`qxc}?bad<7~L0ejfqC}bhxyXWs(Gg`ujmZwYJ}9w^VaA%79De{c%R8!kY!VLnm!Ep4~X=zbMbW`?(+we05oZ zuD9D~FKg^d&C|{mi+dcJA=B{Js$A;>q?VIw)7=AKzB3_|VlNXGVuz;efSC)uT^Z2O zH)go~0$t7Byas0%gVr9b-Ex=amA5n&Hg>e-J;0$uJqp{FTAEN(pSAopI&2(aA_waO zoskhHasxn9@uj+DZdo!-f>EE4VcBo z>w`ttulo62HPAh_n5|sADF{OqJ1EV;LRhB!Zd%u&<+qBZwQ6x&hDlErEafS_Afm}O zo>;VoZrfQjA6PH>%GpF6dx+0Tk4A#_PEz-lE0IRq3Er~CU0zAa>Q#^F4pN%(Sbrl` z{Gov0$?8UR!zep*r%5@a3EZc6a*(qnkIB*M?H3`?c%34``pK^C@-k^cCS}-Pt+*w(9 zd1J!Xtx~6%)NCOZmX_^&Mc+}~IJ@&P)ml1}7~%6aM%`xY2U!ACr#7`mw5=WpG}>C>5wkgjU%tf1=@F z!lz?%3^1^S41B#tna8C2kjZ3O%vEU6nVc#9tza|xeyE54)0jFZ)7rFT8cIrZyfh++ zn)VIDcFb)Brdn1AxFs8GC7Ww!n%s0Xy0*4s=|-$)kKjxFQj7wdGbu#gGWbQ;U4slv zP($C1*+9M|_M8;;)}WA=BckKz?ly=C)fr~0-UwJtC+89^*wJ92bq0E*25+ql*B&?Q zj5V|$ncEu>LwX4>Phc!PaI;AMboHK;@3EvE324cUfQA6;Nw%=Hjkzhb)2vWcnqCVx z*YWshfjwQb8sjrMk2w#FZ=Id30&noiC6*l4mlH`iwBbKkr$T*vWHl+x62=3=N~c~{ zdu??FX2L!qvLjngd%ZVZ+{?*puEa`K&SPQcc9|n@CFJw)+DC`U+$__5cLb+Al{{Oy ze2wBvAYXWHNE`2kQs1y8YrW`;Dp_r%;5LmIQOa>?mj&JpN0q%?KASUNwp#9B#o4gp zmI>S8)6o3ODx5~Up0m{w-74|3{wL|T?#tI~rgEek3uhTglI!J$3n+EHSTmfT2f^y%#oSLnAJFr z1Fe&qAHwS;%fc>Hc{UK|40tR7=%CyumjRCGTP>?6%nHl{yrBi=lKcu8@6?$1u#!sh zvTSR4QmOi$Qc3KLkF`Zi^Bu?KrbT&EJ1c_YMAYXQ+sO}lQbtRIa+DSjs%6@#*5i*Q z<~Ug13%5|+iIvYdY?UGn1`o1Mo(iw|c$xD2A1aLWTT_`E+xHyW?tARLTfKS$7|i|3 zU0C_$7~k4{k8dCNE8|1nC^efLoP>}G4l2He?xzpChBB&F44 zLtS>JcB;bCQ>Xotg}!f`+u-DPQhcg*e5BSuGvl~q^ymIW4&A%ck7cGlI!<8XgB>wj zQyv@Jm2;_gHY*{?aVTJnB<~pRZS5Q^B#7*KT|53i2}#YosMMt&uim-7vpt>&l4pOs z$~g1mtqV8)E%5(5>D~MPIw`xV3ELo6W2=D1i%9K!5Uz$|n@=5|<{D$qWw;vnK8JXy zzTA?x#8eO)*eyfQMLj%o=DB~uVxtOP{CESA?3GI3lrO3*TcN3p9gdy+^DQdbj*Wb!~8WTR_Ricc*VWmQUot5{8Ju!j=XTJJj7= zk5-S&Bo?=Hb#twg!flLB^)@_|H%_Dqx4A*BKxMHR^|CYVzKi#q*)~u)y`y z%c1DiULAHIRtbN4=|7){MJmc8)!+kktTvLo_#bof?V`9|x$DE-!oo0V_uS3?o>fL! zi+pT_*FgWE_h;Ju9s#H2YgP_Cl*x^czG^gFf!OBpuXU_zm^khu2_v7)H&i`lb`2!o zy@GC^qzspGb+9)HI_ObgdDP9z(G#vGE!PA%a#=a;$s`+hhXd#-&{~bg|H85 zj0^|!A6GZhX51zyOm9Cw-Y_I+Pzc}M4b^bZ^*8q{%)Kc}8k7%KuZ$aqG)a+0kDm&k zn9vZR;&@-8BW|dX`cf&C6vB45z&!Qfi*C+!)xm^r|7{0_3NmQrFuiVu1}E!-*HNj~ z2Q|?b=RVdqg*qCI8|G_pdcgGH&VSSvwv-Xi4XV8t5_Q211)KgAP*+-yMPPRK!ZRi7o(Tg)r~2= zd{=LiR9WtEZ&oS|^cO3Tt}+7fL;^B2#4VSBeb0_EtqPGE+gHNHA$XlaPIpZ15@{`c zQk3ybdkvF#^6ejYPpbuoH6Ppp9G%m|STB?Y$N)DAK0c|$ux5;H?yohT?>}vzyS}7j z4$*G)p9clcfr3B92A1Gmu9_=bb*6j588&l^Hi{chFvq&W^lT%?338yfRYktLLwOGQ ztkFEwH{Q-qdo3wgj~hGUpM?jX8YeixSaK!__Tm)0D^$IeFQEtSBQJV&ZisDlY1JAN zLUsAmuNV|gq!8Mp2i=zR9j;oZA6v<{fyDn^bXxN7Dt+(WrXeru5W%j+7Me_&ZLPLo z5`@=rT3`dCAK<|AAM1fM5C|`8F{`gpwE@rYb#?%NKy#K{e5jQ5vSs8m78!~1iW9bc zTC4frg)~^ti^*DUBik^`qs~h+u{PLOX)Rfr2QMj?@?UK3(i&Rqel{=Ul$ZbGH3#GI zj6Xy6AH~tIP-%$xk<$yeBvMfhdZJQREVyXgS|q(VhC1ve2vj4<*vK8=R$>&_%H;w} z#FjxIb_R!=ESa9gl>sO8BvnO#b%^hV3sP*X5`;F#1SA&Yd`7{ejy^EG@yaAijl&+g zPe*3VdB9t=8tGoiBHi2!+?<=Vs=7F(V2wSbJ`?1r+hU&HOWUti_D%ugQwy*F717BV zkX~FKMY5UivbsE@ku_eY_xJ%?jqNU9&fs`UhpJn|}!qO1J@B_l$r`;wj znH`@-Lc)7tcKaBE0te}B!ynJ@{wt`B5HhlXOuXO=K>~&1rkgn6!`+kF$22(!!lmx~ zI5}WEmCG=8E4OtGQGv6LC1;=@uAiy7fvURr<73czvpU7B)RpG!D12QqA^-)yrqZ3- zB(-@^8T_dos-xA=2Pj$Zvj5 z`H#M9=j%!hC6TXdME-)A4PyfM2!`$K1=W6z$W7<57-ze{&B+Fx1OSeC=uon_5j&YK z@MyBk1PV7;CW;+gDCM@o2kz8&TaG&uJkZHNj$}l%tMQrTwVLJ4xelrJKECT`jLhVw zyS^Vc5g~2dbRBYm`?IGo@N<8lzqt`%BX=fu*=c*8DyxaRy$Xrl$`KsAK){aH(fQ;o zsD5Wgp!?id9&x8NzG(PXWU}Qvme*a|!uWVj%#~a4joXfr_1kofC~HG45z|fravgf~ z08|DNN8TI}5$Noha==|wChMNbE2~d_X<|luCN8{CgE#fNm~R(x*&fKFJpJ8G&a`VS zin#cWV(%)F2`Z8&;OK8yQBSwpbBH}2qbq+W)bEWxiVfl&=Ey5Qlm4Q0_4&hOcpaVh-RY<2)%I<3rSl>} zl%5(ki|)KAP!)WW!Yz_uFm-^fs9?P(lHU?UBxuW27?dAHiTY>rsZ~6PP5&r20 z+<6V~J9{ZIc2{RJDUg8=XntgAeMXxwM(bZu&;l=Wq9dF#bn*ccPz7KLHQ#a@B8!ptpV-`c=UZwuRm@q1VM5Xh|t3y~&V$5VH|s6($j#C-cZJFw9@Dk1V$ zjHG4o>XW%4^72iDkC&A%$NU$P@sd6V9%Tj|`B|o`M@B*VTH~d;4&k?zxD%hC#uq_l zQoP%cNIEh;sabT=ISfS1)jBn(%6%#yggSrRM51@#RP0&8vMiO zlDwXz#n1jQ5fYO6OAmj#xhq0fc#cmedEEE7{Kt#?59IoPcw&+>WPhGi9$sOq%v;S{ zV(D$F`2AKOuDkuApg0Qg)5H4nr8fXm$%QcwrM|GgpPghne6Tml+hq(~&y)%io|u@x zm0^k~NV+v^!VXkn7?=2lA4t!?Ocq(_$tk9e{*(p^dqoTGQF|BgE@OlmzhQ z`_ZpUp?6hC1v>>4$-henv6nN#x^B~bJu|{eXdYCPy7GkiJ4Db)FIq*!bJiC~L0|f6 zeU#{@+Yqf0!X>=8=sI<=^NfGshP2-;0L~cK_HY?)w`WShmp^?W?3}mi7@6?2*os5# z7JM8kgul%XyBvx)J$h^#T3hacxM3>LNe?+=kXQ;q93ZVr9Sb>2=C=yW*r&Lv0&vnS zo6ZySAR{$-pcD{yF~{gsSX=3QJ?wy3{EE9X8zHt`x+isUHRGAF$7ka5vg*1R+ADI9 z&h*~sHU5`u4{Re&n;7sgy0k^mK-RrCo@8PR$fRCdJUA|VT{~m4Curb3*vojHIHR-C zbe&}&H%hsilY(%FbJ~a9)xx(p8OO{^c>y-sbvHDmQwx9r7GIUjRgrFwA^1#BxU^Z8 zw9_Zgb$$DuE1OCkEudw*(bPza1AUUDME6R1RaC8Coq$$ZXZ?zO=>a;uN@btFC9wrt zo41JXjqMHv$_7%Q07~VF&F?;A86c}DZNVow@otH?*Ytu~d{Rf5 zUDWZM=s;JoHTBe8ogOc{Q4OJ@+a>s5%)4GAgS59G-gGB2NxUwy&I=93oq?H>?|X`y zsP{@pEQSLKmVvmwrNZ`DI+K*u=~U3G8ZGVZohq<z4Q#wxk2X=7x)+y^T-{CGs%=Vs3sO&|Eed!QlG6C-<*O~E zc@jD7N(zgq5d42qmvqB(Gd^yV@p~T9%vdcfTqFyzv8YA34ZD`SuUSOFIC^SWa_Q1W zQat{BDJHb|173sZV`ZdY+qu03R%2sTMmCi$vuGW7mOmKcPd}v?G*YdSdN9`yIJi@M z^?VG{UkIH1i9X0w_cf2CjkJmBtr5*0!Z-IRxKLDQZI>DQcMj7q>GGj#K301ie3b#% zK!>L#zB%JkE+Bv8PSaNB9hmwGOE4NV%6lQtY`{E&Ktd0%zEzvv`F^PAla!Q@zDCejJJj zU84-yQ5&$yZCe0PAQ0dg^@k#@s(Vue1HU`w10`3WF8Rkz2C?q#E#xgdJ-zl}Je;x} ztjguxE1NiUlCJ@VyLy!pEVBBv_6yb9&3<)=)^*C5&*fom%cMrh)_2wP?qU0jt|#oA zD?9>IkKc3a(J~wnWf)1ZNhMFk!_ftCn`?1HtL|2fQLDWs?!A-4hpxOXleubiDGf#` z;<`YPWc=toecB5YX+xyUNs;wgAx z=&8{#EZ@vuEk^7Iqu5w@Ll3ev0b5*xzx-ElHeX<7n8digzHYtXcMYg<5lnbhc=?>V zzrWD($QfgnadW2Nj;+G1vawQpp50OhBlipjy;OFK6)TyfPintFO- zX|p}!V7)8nN-QTMm8QrKLfZa>n$ir2>8s~t9VBhK#G=AiL>X$fu`zWuOnmU$wh=r# zL^r2hIrpB)$iv%4I0Z)H4L!*bt7h*uK5StpwY}S8(ZPX+ey|A;Mpovg8_}1+R7(1xceS?>-4y#jx_%Z=@OblFMi6$_kk!R5vf~CoBnyT4Kvbwp|ZDR zlIiB^m{Mm}^B_Pv?;5&aXG{5pKaYD4?$b<7CZCmLnyto|cE^yuhzrxl`&+KS^)YJp zm+S-u3E%*wCxwInsOaASYC9uw;`ZOFtj+vCtE|n9&sUEsHIxxlbAdV`Y#~Y^x7teo z&?ur>fxAEVZJnKwR;R_o=hd!+PJ&HkYnY0L^onBgab@zH*t+SqXx|(INw5M;-x?%+ zzi?c`I(^Xh<;a_9nW5uJ`dN*I;l-a*Bi05F;l9TB8@!Gm8IBlb<-WuKqiQ=j+b_eFBR^sF_UN0!>D!higdnmkG2dx z9GO40+2t@UtIf7$I+>CB(;7jWzyzj>N+ZM}^wThe*qnq3$PWqG_%VNVygl<1jqP-~ z!1qZZ=gp?UKloW#eVY8!fs%y-{Id@;pgKX^J0i zHBaa&pL?qjfOYDbn*Xix+ATDVTR0dCdzi|vF@3(GbV42R(tS}wegl!>kVsznBG9~x zn*s0*XJOz@2r@Nd;LF738RLz+)31FPwC-Vh8b$%!z1zoLFz}taL1aXcNuSA|YSUdOZQ&HXx`m9bzRX5sI(vyQW!MnBu;Qy=+6V_QS)SPucf_Y<1A##eWu_ zpG{5m)ci~x7d?K5bKDMp|veU%9;nf2`_b*Yj& zT94y{EBDN61tSShQ>EKap+tl#zp1*ZHNYaFNLt<$laIg?A-r(rG zfShTCwqJ@%#g%nRb7VBdjw353fvRY=-mMgBi;3-xydu?7(kmsF$0!xKbCTrB%_}@X zY`x)$Nb`8I@AZeyslK&&`4s&eiRU-wfNdx8q$}?JNIW1mr0acBv+fiN#7_Wi3zYC{ zOuL-{HZ)Zx%|9yxDll1VP2n_>?#(x z<7MwN>Q=A5Rl9=?+XIP&a`c>r;-VOK0psCLms}C^OclQl)wR$lsLF5cyc5U)ns)JS zD{{=+sn<GWR?$mbj+I=dM>0{Af1YswMr667CUpz+S591%mmGx@?Y`%VB6h^fu5`FJj-nmA7p zl=xv#)L6&76K&M^s9Mi?e+?o(H(lNdubi+l`3FA3Sl5NT9-tRa!f)RkrC&$XiVybu zt|Ta9dh-^v29)rIWpH(%j%fZ$p}XG{A+&S;?t4Bu-%NUZ3kRiy3@`OqqB(N_Ls?K?Z}3z zd(~Zw=_2)qoIBHM+=*8#l&!WHotEEhhxc@GHc{I&#n}`*APn*?ywv|n?69W_YI^+~ zlT&>53cJgjWq%iK_nvswOl|1e)+0rA!D+VXD;jC@fiAVvcNjU;XJ0pBpASW9$9Mb3 zf2_x}xY_%}cpPt&ZJ&uMvE)Y5{Ud*#ewE${SGeX*zF1fM}{~Fs(CLez^`aC2nb4S*KivlkJ zyHE1$vg~$>ik3%i9@gnrMiZvY_dXeM z@eB)%|F@B$x(hpLkxNG{I*rY*7BZmFbWwCzs`FgL(rCm5sroQ(u44qfKRC$8?h(}( zYq(zJVn3=ebSs*i;I89+SA8qTI*A(H%mrhfStzD@&)lm>{dcGW6zGAm^i!nImR^Bl z6Xy<>mf2sFD9kA12tBWPYcb}p1mB?h&=(+Zj3$N?LfKFA6LhH znsB)YfoWGeA9dTc9r5m!A(S0doN^^)XR{v=Lrmr_k4DTqFrCaI-;lt-(hZ8XHrx%9 zv=7w@@LE*$$E=(PiY*{}*-^HVm;YUvF~VAXfL61d zY!XwkGnidfCDQRRh&z)lkA}L5yRPx2Itd3S00nQQ%M(b>HF1emk(NuidU%X#IJ*!w zSSRl~b(ut#brKhywN-(ZR2(r$1(Iv@Kjn!0Td%fUF_oj#- zVj?%!8Zk0wSJwx`!Lvdes%3R>UR>uIxsy30&Udc-9$d1-_Eo7Fhf0?Cbq$*q<<1TN zXKkDp0PR?C`jG`tOq(Dy=A{&Qx%kYKB2%}-cL4iTKjcHWMA1)d5=hNWO}W#ZXJFBZ z5`k#KAnS^kn2Gv|dzg#{qj){)u;?gzkrcso1VfP5Z9mw2l?OPg38}ldKyPR4ZEs?M znnoa(7}W3JJ{m(o^4NA=S%vRUPAp+CboB5LTJ>+j5P&ZX>knR2f;l7CE}VWZoW3;! zVy4nSJ*`yBc;k~AWqiP8)QZJXejUu;Z3y`j3@ZsiKt>k-}A1obR8oJ`q!9zx)#Ql;z z7&I>G3%&Gll@+K!qIW;D01KG}fF`eQBLzHU*i0tifh1}YD1fqSwsob{^plBgwW!89 zrua(}ci8>kcq7A$n+i-z!sWi0BG#m4`IGtQMv;EqnlYUZCbd>O9NX zj_+4b@=e{9>v0=^h#xWDWU-zE^2MbIh4FGO;0Bf_(mhOYJKm|I*@(dgFT*0=+B;hb z6zxWZ07=EW;yx}TRcewnJ73P5yO(x=o{QD6eq;GYo(b&-z zy+eu$=WihS5FpiGH)|*BA@hn%SoN^If!J|7r1PAjVYaRZ>@ltvMau;@ZkqZoS{sQv@$b@_B7bPo zU3YY3oIc7CG{Q$XLjr)}aZ(mQXeMT_zphsVHwEk;u-8@BcL3WT62kV}U$R@~(0Y-! zD9nbz^wkaOjv-<|LdY9uK!}so;1`L@Oyk{{LsF>EX2Cu8r0&ZDJU@dyocy^z+d+Vx zItHi@n!2=tK?f2TquibJMkOX0maT$QVzWNL>QtEI9aGVG zw=Z^&RwESCqF>*LN;y9yBIHzaJJas zMmbxkE!ZvqN#bVD3wil_dX+=BXnM=TU$BLG6N|-GOV?h`h)4C^C?lou&|%J~HICDERGrnM-51o*|3&gh+E4doQQn|pD%@g2-3di?%V)u)jG-KPW z3>+ga$ABM(^5+Qk?vZ17j~7baogP%lw9sE!m(@Mn`)Tp5!QD`N48O`p8m z1Jm=_X@ffu-Bdhh$-gq zgQh@q2J-eAQ^&zX(g)v69;OJ~B6Oby7HW!uclL1)>Xdv(;>1whl6PA#!2}?W_qXy} z(k485RvM5|KhqEO6?SE|=i?_#1ICRDJCY$OKU|ykikG-a)QWousszf*yRoRnd#;R!(e*)6l5=vvtfc&d~@uUfjl%a69k>;Hi_?gSWiMc!H8-zZ!7w#Xw=hfZ48 z=0;CBq?gioorD8bk7p)E<(>>JfM5W+L1K}krEA~;kY=nWSN$e!;)4wH#pv>@AFRfY z^-b{x=7QldOaPe}I%$1@haZqqUJRY4T$WdLv1q1hkx804VWRUkmCSNjtIJrmyoubOKmY!Jci<9OYtYCCzB$ycCERG zq3np;Lw;#dNrOOsiPd5>p5a#@SDxC?;q8>Q2q*3!{G`R+I{QrYf+o;x#Y1G;-TpMO zZ7-FK$4eE*%RAX!NJxT0|K!UVj-|B#-QoPFgzNuCuk}9?b^ZV5Bv8P^e~_9(xN5%D z0 za(e!w7EJ$EQygun`FrPP@W%4ruW}iEOtg%ra!Wu`LL&MbXK>uN50GV+ zD`_Qx%imxx>+08gZFOf7mydN)XM#rnrF9@}|8xX6cCEmOl59ZR$a!#7X6ezf8u$Mc zVv5yZ;sRPrrjG!iIoNQ#fvZE5)_ef7v)G82E>S(&BcZe#Z1LNL-jbh@m;VP%o2vYO zkeBagXiokIEGJH#`wLSeW&wmPS&br=&M*|j!~JM`TV*|Uwm6IC5R(E_IV##SK^CrYz& zq&DK;;97c|3be}C9Rtm+6T=t*Q~4}h3D7CU|4q-94F7kz94iae8^EU%o^lOd%311I zkOD?us;K>gqe0jXXFP1p%JKzB(q|Y-`o7wbyS!g^pt}gmlOn z82*;2XWj{4Zf7y*}SX^A)1EQ|;_fi;_jh?KEShUD3_N!xYa;3+oT^#I#pm!$hk{Y1$`uYa+0sMGi=T z32Z(&{!5Vdp;%4ppc@e_W&#SO2FCo3WS-AZ|4~xDOh0E!980H;f0@j9vE0#i&5^h0 z&10FlJhi34mt4J_<g)+q7Px5ZOzW zSGVQODl?O8y)kzkVxH`^Pf}woldPNm*vP`0_!zH%1~-@Se1|mztf4(Q<$smY|CzR{ z3w!kJPHjkR`^ZEw;GlXqW?-bBo3pi1vVZ_)@Qu(T*j*M##eD_)5z955YSUqB^;jQ9 zHkQ(w((HQx3ksrVQ!d8`cbg?y$*>(~kW`wu7wZ30*&nK1RHD<1{x818$#idJ3XquD z2OlmemdJ-?ee!9#4#*k87UfhnZEjKFh8WekYtuWaC_Vt#xciB;@viM)t3UC;4IVs~ zUS+foST0b#7~qJ~s$38gi3kBq@^9kA`{`hwA1Xr!qj)xV0~$J3c}o*b^N2g$f(>$T z6{PWQLL7bTG;?6?5%0$19s)`mfBksrZ_X35fzmMX7n~B!Nxp}8|il#$g zU~+mVu=$xmvYp0)j+|*;LgcR$$=jEL(@*b6`6KsG-NGuQlMiJ0fdmg|etFSb_fYAYw}ns0NnYwo*tlzw*?w4LUZZ-1%ZY?;Mgl&8Co&}dSu|DSwjH>N92bOetxiM z1y-jRS>HWv%WsP{~)~iAE|TxKRYRF zn+P-q0P3EQkn1_VANv7p0^ly}iyFPqf@=1?{82vu@d&LS#vfNL=T0!*U{z#}9$;X{B)P<;oJNkJ=kmnJ~&dd^bG21$cgSO`} z>LA21MTI5Fs)S!we&H&6%bS5M#;Id$p4-d9`rszZUtjb>a`1G^_=VWj`hH>tKrdkJ z{~$32Wn89=u|e4Yq7tKY{V$$!1lN2(o9q8`K+g)ze^rg8yhi+-ko%|yzX`+sPq$v& z#1UU{B2$1Ap8UJ2$|98D6J7CRCc0`u*&2xl-(p^wxe?zX4YYD*P#R`&YZmGilZxFA{nAsr)A0DXPO^2MB`_ z;}kX$;*<_BctD2)+VCNNAe!u8PSaA~-m1c&B*j<_7Ohk6UF2<-WmUfQgeQ@9AihTbuQFn4><@V;?U=tc6xA5(yc5h63jdnpN zo|Z64tRUEL8>s-~%ke_T0MY=f!L`pWD4>$Ac=X*Rn>9D9kt4K?d>_z7HjHu(QedAn ze}&U5Ka9~h{)K1i;zhRog$zk=wVf$$vrIqca;SrjEBvFL4bqo7yGX6DJlOJxG#Zd3 zGe>7RPGvVBg7P0Z?gu#NpT~9Zpz5PT>QcPHKx5CVFlk>n;0|yjuhLEZXwR3tBqj{A zT?l19RW`Y^nLp$sQlhUF!49yMK(pw;Llx_*GogYr?PVkHj+`E<^l=DPdM^!L{d)tg zK%Z0G8RpjV^6>5r}DL`@U44q zqxHk%_EGm-<@rTRRZ>~C{Er?Yi88H)nPv9lcYs~*N62WTdOQSp#lN?Tx;OpkUR_GA z2n3QJRol?(vxSmH3H*TMYOF8*Ncp&dAi@!Mzt9)Z9RmE4lg!6Q_8o74W>)URb!W*U zSr79>a&qF{!`PRLB1u_4n{&imBbv1jngoENihPzD-O4yI`En?AjJ7m&RqxCRVE|i% z=&wFE(%#}6^0`N)Y40rt@VA@SS)9qaD5Xt*SnU1hqI%`FqiT;whkbXMm|1cZ1u^E3 z$$WigDjdBeAQy3G>bIk3VVPNmiNth=hGdubH02f+E~{2uL?4zFR3%( z`^z7?xWxM~^#lZbhwkvPg{g{keSeXGLv@%dXWJLyQ-3s`zE%gQ5p5AwP1K~SJfL-& zh&aEL@en|(5Ik!Y^XVL&h>J2ioP(EG0D*)uZyhhF{G5$Z#T|=nWh)>fS!!ES&-o!$ z{q~2LUinz_1Hd)3GX9qGMlTAHQ=Tu_@N9N(f10CQ*)0Xj)!fa>|0CkBf_dN?^DAXQ zcR!HJk?^s;<;{0+IL)8RYSV+tU%O*?S;zhoTen)8Ze%zXSSj-eJGcid(PL|Gcwu%` zR<9l3+2`gp<9?Q(HD+A+--Xf$3(^_y-Oj10+3HzZOunVMIi$?XKxV_!RxN_;Pb~m7 zr9skF8|gPJ831Ru@WBj_C9L_L3IF`Yd9Hyg9HZT|?RYFp8i?f1?i_~MUY%8r0eV#| zCk-?!dUOA!y-r{-Io1UO4*(kgyofA!p5u6&2%t9rtoq`@6v{5<*9z-zilAugPxJm< z85BJ2&YfcF={NssR{08sir*3|l1;f+IoSy(iO1jpigWXseZuyjwd!jJY31YQu|bY# za!DdD|IEi&F(*}+z$?-x$7+~QfW}T5(U}JH@myoo?8}Kx@?q>M_ZL|ex)ljnfUQr0 zW>mn0@wirszT_Y;c`O@17cCTb4y1J-x9h+Huc%}xQ6XF(9S?-WZvfEG#XI>c?>1rU zzAQ7*#J=_E_6EY|uX=0mgKSs29?uuq+pClwQL~IMe+zCt3%q5X#UI)L-M7hX!Kadg zAj93%~urVvG$ zKhCeVeP_FLat)_|a5Gww;lWz^M|ZF20G(}^>@Pp=-~xSEVvj(u$;d&pPg&MTySGT4 zgEpO&T=nPL-5(M9nM!j_k)-oKHmV5xzuN5i@jo|vP9_7X7?CSq`3e>A*DZ3UgZ@q7 zF|Z>1-$fe1Uwb+09P;5YHpjE~EIeK`V0<>Og9w;*-G$ifJ{RPAA<8W3hIJG@Css^V zew$e4v*4!n1dW8MW9o5^U6<}&>bz8nZ6l$&cG`+E@*K+=RoM*>mqHN{7w1B2e)ui$ z)>~sjHJh8t6;1h}4{a4%4>A-Llpz|@QQ+6kOMO`P*HQVIS8J2EK-)FD zsR^?Dp=+0H>o3gbADmCYXPP^;97x zY08Ow5XRy-9epJM<#kTE)OuDbnkY9`og(I@UKLl+L-W@G)2>ycpuUIc$6DW2)X29A zI#8&sh!X>o3#p#@x*B6$&_stq4xG65fn3Jpb+TFYy9hR#>q+2(y*(K`UE30~`29IIO3~6&g#)+C9&DPJv#~h#rn%*B)o)x4P zTXHn}^Vk5tR6e?Y=Ia5I(%`e49YjJ$sXoTH8$%LNLB&@!dq05b;Te+8*R~DxuiXt2 zN@B1T-@~NrSkbj}@$X^CZgaNeM3bSkxEw!J6-=Ht3~(a#GJ9|?tVt+o`moyYdAR-7 zjwo5&tjY7o?`;pG?~A%M1b{3&kFHcSg)`i9oUM69eT&9@aQy3^$IO;e)q{)Q;*mUR zq=>S<26HLIED6cWwYL_|Q5O{M>wq*qy)%-~M$GRr0uLRPi*lw$_k%JHD+veQ-GJu5 z{KPY0lRppHce?{s;&Qj~n&Kks?pa}#T`g|zr6p-*a~@@O8*u$5R#-?`o+SplvlE;0 z?@OpSASrc8P-sE4mX(C$5kd>BL=@T;>T+=inG#jway=pE@Q^V(Bk3qoYgo@ig5=p| z@ME^Km(un$9S`)m*T>ALb0Zga>G@@N^+vCy@T=!7hZ`t(NDLvH7g~oyO=Of)MTO)v zd4*@PzCXL%7q2g9EMv-GHpmF}tPpa)iKw5Py4%4t@aRHuBq_UUT=KnHaF~VS>eZkMiKQ~kt=3`9 zgQP*pq;T2&v+V-@tE%7dDnh}LQhtWOtsWRlTzEx!^B_QPQ)BED$9Q9I00p01tRw!Z z1j34GE~_l)&!ZVlDTIj}DO4;ZTvF-V4~A|XuCWvH3}~K1O~1N~w~h)2j+`m^b8yAg zTGaw3yx@m?DTn~2%>43`BBs#AGTx9sFBjB&RsQXg8BG$Y-Q2tNft3%BoAz;44>V;~ zX7v9$j2{H-4mNWC+o4)5kP~e1*9rRimy6Hx{AI8-Gt|b%+Nn_^`L;44c0hMmdk?;=U z3ki38f!6RSan`?<5$`;gW4F(#QMoIlw$CS=WC&9s%L7%X8Xq0h4@~6sx}+a|I+Q^W z5&^TJw{L2oa2&$XCpE0llCpFe6u#AFrW6wtw;jLDtJ{QAnzOb#*ubA{2L{5To%gv&LEw)@FPuKPMQ8sw9DfiEqaEumWb!{#n? z3rii(ke>&h=sni23P)9%Vzg(Vi@RTmdvOg2L&HU4|MVG|J&#Rhzsqp%KSbR==zcqC zkS$9&DPdF%Y27X=mOD4?RuXZn#Xy_)7W;;TGoQXsT89fa)<;Xq0iF!Y3o^D0!lF%mq-tWNN7KhxA{n?xB3z|_ z4K3}lU5-xb4R%RM!<6{lRA;0#5#ZY3r_2%?)96|E^}b;n2DA#`Sn zsOlUfyth>yTMsP`q$RP;2lm0>Li;8D4UJeLiCQpiZ+wgHi%%0H*hh6j`-5}YPXwl6 z-(>7|ux7A13i}d{b;9ISG~tCa?!+_6EP;SY?%pEP`x&WqHWP=hUl2aaRdHRdzd!il z{!1rOXVZ%F$^ym*hp+ic?M*j7Ak6As-`q#c4pWqM$YkwBa;GO35KdS6RNn0_xD`a& zHcc%1T8whPen2sOmd9O(N!0+Wy1)AQ>||43Cdqo_;UnkOl$NM54 zz!#4rClkjCw=q`@y-#^$*kma3-?<0jM%YECXZpW342%VKi-qjM#@AG5p1m(HYNkdN z8&=H`e_400hwCY(6;2<-zw|4g!*t!9%fse5-1(H?3&jpR#Amf97^;zBeN< zsVAqmyyobja>4C177-&o*~2K6_T7b#>6!y$F0eZmw!zsN%Iom(MePD02$Q@!WX>*C zWh%d&U==SDe+XBhrM*sLM1?ReTLhy60BiU@DMPSCg_%}^?%)r=Z<|sFdPdLt=C%KFe zNOZ;wNz8YAMjj?YdU8=ik1m`yO&{o z=j9p-HF-8(ttHc@X?>3m-a8t zL+3mpcHh%?86h;Rlwc?HKGAYS zf4-M~;Uxnf^#1-I=jpz<1SUw2#-P?a`Cg&fDGJY_q(<>^HePB%MV+{H2offhR9)&2 z0&M&0)w8RYfl$^iuEa_jimE=pMPEgH18MeS<9hbkQ#}%c;iaxiI)34>JeM@xDiuY!e=K>7%-dlvN5Yd+HW zMCCfqqa**Q(UDL+ibh^Kk3+{g#*OAxzDW2Z%w#8FuhR|U{I+FOc!Jk9c6V2ObzgI?FOQ6dYb(4Rb#IvYsxLzFe-U=pVNtH@+a5s$1w{!- z2|+>yloW|UP*NBPLAtv{5JX@`R6shVVQ2)TyOj`Wq|;Hln}Hc7zQ?uJ-h1t}f5-8? z|0)W@6Zd_c*LA<_$6lGF?J4#-_iz*QgV3Snd$HX@kk3+NA|GtK1YQ_|k4~8;P)IS! zqH5mH>Nw(P?fQrzdS_@-h4{RFc0i0Jg1)>jkIws)?9IK`nU4vjOD~4NQLK1}>j_&l zYHcy&9xgHB31ttgTNUh{?1H_Y@D0Bh2zwY~FROHs?yG9A*V--FQjs5IWbGrqx!SKF zm7<-tox}Q*ds*-LdCBNY_Tv{+e2EWsSA?AoCOyEOk${gqV7qNkUtR?pQe>TiHo8|I ziu%88SUblo-D1jte%gdTm_qW%EE9AsP46_jk#p5kCGh!)GBw?>Nd<=Vw}oid$&WFz3w$rtq6|IZK^q zIEmt21KC*7u7P~~6`GT5bjMxj0t}(q$bgLiJL&^MX*c<;ubq2UGmHHGJ*RC)?N>uy=_!+k{3wT{I?Rxg4cXjeFsG#?|oj}^O%xqdBqCx-!i$>0FQ>7GjP~FsyYdx zOE35}T@uotudFWJyIUbqGZ|0Twr@@)p7rbz(~}(WA9L*)8((6UIIln=6(|pIyL7ZM z;0%L}-Cs4?!t{lFe*DFSKeR8&_GDbAs=csoV+Q{Ab?n!R;WKypFhkzGyTTJ@q_iyy z11U1wn9=>HZh#nIp4>1W(>Ap!luahyKbSd&?OiH7E7 zB|jWZn)C$acap^^rqRjUFpONRAQu($poQd;gqfPr&X*3{l62Q}1wX>^>)p?_KS48F zs;Qxp3Ugak&*wdqLTm0!*L-U``x1VVxy@surFwp)T0pZAA_q>?EuJ{i%r_`pfpJ8T z;P0~G7bQ3tqp~3okBO1yCYGCHHkx}cy$Z0;4+HVgMvCdXXxSLwMa89fpYqW_=gsJ^ z7pjZ$hd0FR9*KHP_8kov7+!Mc#9;jAhUVHi(#!&#+^8TADb-d_zUbRW`L+MN^cTNZxqq@C#b1S0$~JzVqOa zJUQ(<@mB41nN%$jo~V;_`<=8;@LnK?H)vtl-i<_)VC4jI3?y@+-uA9{+-^=-(y8)1 z7p(j`QvW*zWJKorLB7rq0V4b2c(cUCRK3bp-TNmh{yj~=&NQxd* zD-$%KZ{C0PNF%M&SO_{lR_BON7lqV7jhv~;P0&3O?|U;j_{tiB=OIF*GI24$YUPJ$2nbkaTN z@h`Yk-DVCXJ#p9AwOa}AVmJ2~Za_Mz!eTZnKpXrfv-~9d`Z~MgR2UcI!w2wvRy%h( zh^ZeL1YfPNvQ^it*z(K!SjN}Jbx&zJ;1$}GCYrY3rc&ZX%zf0qZIP2F8sV>(4@%hb|zzofIB?{^z)P!m%(xIdU822pBW zOt><-uGteZ18ZCYTUkGf$76Ohktjw3O4vNgwe^!#d`1aMsm9&h@*a`D#MSI$au71G zxjKEnj4ad5{@`kl%Yn=8zNBUbm~u(X&`K3Lb80?TE6^o^ z9px9c1R5JZxksvjGPs`9TbqF{sgs!Fw*+Fd;zZ@NkJH&mJTexkwnv(8q`Fy?Fe&b2 z61p#Me7JpCFo0kYhpgBPWaw~_*`zrLY&?c?KobrO%GaR_r!5FoORgMx%9ZP}(05l! zmKd4}d5ndb_CGnP8JQO+FO`!5VZ*lqexbQDl-Qo5lWoW7;ZbtwQGZB@LufxTGwx+s zTY!_)xTy!sFmNqcS4?x%^6JOOK5_o=_$vauxe}*uT=MwzH1A;hYQ3j%qtY3Hg1&e& zjK-r@51HM|6_kVSQ<8FAK$^j!&*qfhD!0wm*Zld?>VoNvQ-U7^5*a|lChuuHuzAl` z#_Ti8?1>ZG$e9*53h!g>evkhZbdn}7aAptKb}}4rGaenRX;ZKJJm$*19`-DATurV# zX{I+_iSmGvzWI{n*&z`#wN!#Uyypk#P7MNDdMWF3gm-QIRxW6He>%5%KW)BMNt_1i zDO1D5n;l0VxRn-iwYq)EWNASnr`&MW#9HRmxxK6OvCx^e_);TCk_y8k-2IvpkrFM| zF(gnQfM)pimBSf@nfYmhR1+A{gadaF{*cV$8$FO7o|hF2;`dN6j%EBIEe!p&zqP?IkY*fbj= zKlnz=;Lu+`Q*C{gDn#EHoVnNFXr)?)uOpvDDmBOnfbyr`P>C7#9uqgdraMlFn*9%l-dNhe`eJWOoA_c+I z-XiTBP-5 zuthVqV5(d`LVeB?VaGgtzZag+D%7Vt>e11CimgfSET8+mLK7S-%eh`gyez7QDb`19 z6-Co@#{}v%pZK)X`KG6}M-SW2*N@tcsRiQ)D7csX&8chFBk$VX-C+T;Rm*(rX=}z_ zp{{;E@_V)(#xD7#Z3<_uL1Z!V+Ps+ zq+5uKkI{HijlbpM@QC@z_}EUSK19}!oITr%<<(RBGtRW(Yr1z%vA>$-lKqB;D-=!- zrzkn_xZxhnMVmQ4^Nx7#9Z`_u|GRyZ(~xOPypbQd_I-13+1Z{o&o}~-PRUE37ycYd zc)pi%?*>E0wC~W0eQsiHaW0v5pov@O@{vWH9}I6xuZbriu{-|k?8XmyoqNh5sMrfW z-}<;l1YT^0eZ*X|{d8}}d1;|;1(&a{d}?;c489eAO(6Py6vIa*4@ueW#p!ur*hdfK zl1KLwU;nU%Dw24qO6bzv5#J7dZZt=aROFt8rA$raQ}}aZ63Usaw!QcFRZ!Hw=9{|4 zo_CQd98yd!oD%j8og2TcK5unrZ{S$tO_cLBz|}$9qG|LCixRIdy2QRN4~pOlDu@Dh z(8=gvQp`^K!&E~;A@n2E=;!b;k8Cv2G~J+K1k6;F^QhAGb0uTH+M6FYu@UsSVy401 zzD{hg=0>F!_gk-|i$DnhjS;-_6oh!r=D$;ZG`AoUx;(i(VkL$#-3HE%LD;uk=RD!t z3^9X$izk>e2%aW#U=VWzvub=K>u$2iNdVU5SU`&?egHFvf6GPsJ;P#IfTlPz~-^KTbLoJNkaMc0d!iFnJ z=x13H|C@&{!Eg0{fXE=by)7W#HA}(NAH)rkNVa%RnK1& zSD&xh60T!VxB*?#vzvLM??+J)sW%Sddde#^@xhH<01ja(YVU|^%m^2N;F!H?Aq})f6@ci9Onq-+P6jB}&?RHs* zui8oI>m7=lTbcJi5nwHBR^FZtj$dnktL^KpQs5F6MW(d_q1nhJtM2Lq$NOOgH;LIs zp?w&*=IqqHUv}McoUadCxwMD3)Z3Y+5OnTxFw9;%dm7s5ai3K)Na8GHq+AYkAp~2# ztMxhZtGX&Lj)&_Fo9Et;e>H5|U8$nE-D4}zaM$jop^}C|a6ug19X0+9KW?z<;DyqG zjZsg)96dYSrH#r{a-cZ`m#s)dI7cjsOYjs#7oo%?BfDvo^7K7Pt`|g0`x@^-;o;I@ zVT>8;Hx;&+yJy}YqTlx=@rGU9z@13GhD;wXtZD{eEklBQQ?-4;#WIv&Z>KHVf^TiA zx`n6tMrhlXx|A$>O47;RF5|8hmo9=gFeVdc)>~$uk?g!`nxwyQnKTAj8hhT_w$~NQ z&z@tFFU3V5oOdI386s#9?{5{*jcugAx$L~HQQrq757OLS)fx{K3o=qU{W6{mw`z3E zFEne;fagPS5bCA{5%ZR8Zue1f5ye+(A~$2E=-Y6Siueoj{tHlU0`lkZf&88W^a+s# zhZ=+iVNls9xsN6mClcQ`)hWDxa(N%eZvV0Zoh_T=I2-et4+j6OPuM5I=K|jiUBov+ zN!pQp;=IjL!vWdnRip?bzutT#@scBUs5*-{c=YG}~0iI!Z#`xg_Tt2#yLGolYEdBUC8%P! z8FvxAliz;wA+!fpE%@I6LbUl3f8ZX&R|-gJ7!L``Bonln%@(^yfs~siboJhbjFj|qh-)vtCWweTqySRk z$`7w}GxQGM5lu-(LaerBC|BJ{oX^*X11G?#Z5d4Ut1YlR$?#svUwoJ}eU70= z{$$u@Dn+naaU?KQ>LYAnsl+rq>z+@zxQsbfs!$E=29ytM6ae<@nA~<~sRirL^HD)w zOZmu-yRf}K`TT_&G^fKOf{^S5zs3~{>O9#U7dSU_A~CwWR@iE~NAAIxXn16il8g`RZy8$-wxa3H&q6%d}Zevo#x6{;ti)%Wl3kO?+9U8Mv zPfmcX)m+-7`Og+wfm#wY&bK_8)-iY$U_{5S{q z=4c>3HUEsh&J_~>T|Y8XLD%k#vrHcI+!YhqPxO@}vKRmMW$*v`vUEOQ^#+{{4J_Kc z-#1?{HQVb|g1^MjxBI_x#x*kD?{B*#H{P9Wom2IvqyNo=bh+d2K@Bj_7Tb#kJKiCp zc^5h?r?Ezlno)O%nARj#>woc5Gc(tR7HU)#|0Y+ZwV7rAAErcndnKo!1neYtY4q$j zwc$Ny76>3qw+YvJRF&Pg7QVGI#ycb2vR!pCh-Zq6MLn_ZCqOmSbfMR`NclB ze2ZCxf>4#NOfPNirUDNTOafJSR-Y~0zR-G%pwgxV{E&#Nj)+g%*&KhkoagmxemV7~ z9)fxji}-PpsJ9q{`>I-P_zOR9JlvM)#?$lmq>gw{K)CD{O8jMoUUc9Lv8hipOvI^h z+HIJYS-)HF5{Ez}-wj?Jckp)}a4~MQ-CeO85JXa;#3ZxkIl0CtBaDRgZ=y2+k7m@w)cJPC5*EKR=ib0~KNjJ3Jbv&LxH*B=0L~CW zTm*FWq%g;yz&2~N^A^gf_q_&yEERaC1jP1C@lIx<$_sx2^}Uns2x>{@E##x|ZPsVf zRnZb~F;2DU9XxIw$a+&et8A%SS!h02nVNfES^7E*#{{RXP6Fs0AhN8QjLlAQ%j1Hk zfqh5cgihA_UcLC3AJ%og6wpjasL@kTta`mrT z-%)O^F78F1j4R%p;xOH_2WR7Q>)*828(~$S(g=!@0y-8|DHzi0fq;A_Vbk|`yN)o~ zu9Lnl@CY|N`26LnV>)kV&o)o>G2$gpOVRz~6`K8PR__yilP(IT@r4zg)vGE(<&4K` zYW)6Ck0`4sD0b_X7Jh(to&KHGtds_uD|BO`$pX2Tm`j<*z^5^c8?njyD~VDE_gMD z22%M?y!Otj&4a_Bci(Ag!LX$ZYpGhjd*&U^QO?6F0m9e3;o^kNtd0nX#37y6g?e3- zVu4hrv*}{_EA-PItQx}@RIco;Xg{v>UbGDe%%kR1bfM>&*ZeOWnkKOc3AQN1RUOa4 z_Y0Gze|c>zw#W7MATx*u?4vUIxGtD_&kbbu*AQj+AB!IT*Wd42q$%-w+p)bF1>QuH^J1u6mTzY2#u#-h*jH~2|J zRb86>{B-~B)t+(S7P;xG@&;w}0BLU(A+m0A1-GJ1OD7sH{d`!rRkg&8xJ&nYg`SdS zoJdBM4`2?G^_B1c^sW(7TNcW1Oe5tw{pG|Z8^Qr@ll!~YQ34C z6)c!l9D)iC@~5_bosD`}Rh*||9(PVKY4xR(G_}=6X+{EVvP>MRQjty7@Yd_;FD?$H zEzQQngxnmFB9qRWYmHSGj;m7UYYwc1o;ql53%*7;V570X*nt>#lsJ zoN$bASHED*xD7*|in{=+n3TJrs2`DS9F+U=;aHx}b(F|gpIIGMaB4#+Dd_Faf!Z{~ zd}5epaI7OV5XWeIFIi@I3A;X>)Oop)r~nER?*oy98j8fi=x7(fN2^M3yz?j%u4Sy+ z7>_}DSP9F;C?nP}LKZF&u?^c||6!YrGq!houU)5NSB*A1my{@&imLg1)Z)+HqgWl-S60 zd`Xshrc}DPZ}ZK4QbxBrEVAx0TP3@4byI`rJr^PGpQo2Fwwrg4Vs4&#?YwW-VGJ1z zmP+T1g?{o%bq78x;5yhH5S7)63U$c@7$;;jd^os?y{r20ur*K;!hZR7Z@x}JTZD8t zYfI*v%kX8tK_fRB1E6Alu@W~8{49d>Y{Z>fq=@dOg0$8j=iCRqsBg6q|4ku)BmWy% z%`u;R$ZrY(#oI&78;B{wP3xzhKU!QoGr_X9JTg;df zRq^&rKqM1o(Y>KEd<9HHSHgW&OIWVOcW&GqTelhvo|!2K)4ojt;kLVT%7gsZ^@;^Q z-`5!*!(Z{+5nH4X zvmRq3-nLqH3{RJgcQ#{wfmAIUD6Jt%7H2CIVOoBrQnlB7jtsY9X`{@-ed~MDKFA}R zfmP4jnulFuGLZiPLakzH5T7z#uD<}J>AN{7lHH?R)r1;De(OrZi{cpDwA3NVcoyW!{@R$At zrq(=-=CC-NL^s>nHwdPsK$ZjXP?Kl^H-Rs#cq}j8);Mo7m4DZv@HBpSf$T!w*Zd4T z%U+(Qp0!EyMcNN*qUtBnTUV@1k*fMF5AcUm zkIIlW$Jb2fpxj<}t9-duk@6>dbYADr(i`_!)Do^OlFeiL_*(KieysGK zLnEAm#=>C+@NYkeTJ!I1k)IGcnA7CDR&t>B^fAiX+>AJku*(bd3BbeJ_WS%o1mhQK z#M^Ttq7-!UeN}1$XkNj>?f3ILSRv#;#F1O)?;#C}yiy)%Q9vFyUs|N-YCCKBlIyoE zFKjqPun9o#w^zkvX9HVB_|;iRn5>TuDQ`H==eX*+dPf+Gh?=J_N0g)|(AImxflgvv z6|lH%9cVMUC%2@XBxKEI&3dW!H2iUm`k z0;~c@^a!%hI|HlCoFUek3EDf~gp-WO;mcPZKe;^$HTiFTq2kyn#q%kjLZ&tW)yU(8 zaGbZ84{Wzqdyw&d$5m6|TM_)SW=PY}`}@C9Y~~Gok93RIWriEaMgBm}b0SWihs=bN z{xY!NbaA$f5VLvCCk}|OsUi43Ay4ypbNch@vNN<}U$J`g9d8;en2}1g_yfdD-wli&l z`kZ3_Jq7)_Mes5Y<*yp?gyWXd3>kNn&(Z|rhO7N`V?x!7bd$c;r>rxumQUB!7+P6n za*k|=k8L7w>AxHg!OEw>E8hd?=3n$C4?ZnVWZ5JAU0%fe6ROQ0Dml|r;%PX!!ty`^+Y1GcRw%?A^XJr6`Yg+d&SzII*3BauInJ z#f3#EMSd@L-h%y{qx+oUPv4`v2zDk-lg+P$A>eL%i)z%HsBW2#67C=P>K_!G?a}ub z@h_0+cZm-Q$$($zanWg^J&$s2!uLf)yPPD%vXvhZNA3#MxO_xZW4H=mez}-DRTB?h zmR0G^y`Ojh9bQ`QRZbEMEW;P|eLths(Z%Vw-QMZso(#L`?qEzGtZc7*YOr!?6YkAB zFCP-42ricjvgF9@$42*W*wtRaPQB^xWPRVCe_3o(JuP(Pa77%{`=#sSs4*$^6aNe@ z2>H54#$#IA53`<+_-~5vA%uVcu!z1YUiZnFWJ!YdG7VeQr`HAO_cfn3CV$M5B%Ni* zN+5^4j{G~2*$om{JscqG4XTjk$jy<5pj^n*CxhTRy?>v4EjdB*7$^GW2aIbmAAEZUWivwJU9L0kJ4So(f*WGGKK0QN zyAVK>3At_nwSodTMmZald2V|wwh8CoO>*|>2hl&mBb_(1ll9vf=dbPO?Ifeql^)S2 zPP@vc+|{n(Q)ftGpiDl_Q;)z!rV`#Ai++dFYaWOXPyy2$;CC5B3RKe8g;u>K7^unl z-eR%vSBRB$@ge@yT18IF5dj7)4}?4!z2d|Lz+u|Jh5e$XYLfu$_50<>fn%XJmdMyZ zzY!UxRb&Zz(QQ~J8sFJY4BJmW7tB=e%^DmGlt5v&vV;loBN(vH9L@fGc_?2Xy=qy} zJ)n1gkc|T9pu;S3o&$%{*bAt(qg9i{rNCJ1^;lFkJZoG%d%7NY?1Z)n*6YOVyVv9f zQIVCH8#E$$7a-L16hceFD~P2=t~J)+Jyz^{a>leVrKvEV_FJSPshb6JrvaI<_IYbPpe)~&WWp1dwhP+1oU^xDAHNj@o_)OAtRIL#hDHfT;Rz8BHZQ;f)%N7upFn)H< zF9?U5FYgRp=;tWJos+F`=Z?!%a7jq&O1iFz<6e+U%3XGA^C@hY1BW0r*NIoCpu7@V z*^A-ZrbPjPi}+nCT+seRX^)Nl1Qfzimr5AJyvC|?1=^~d0?>Upn)@sL>vcwC-j8ne zia~8IDkJbzeH@SdN-a9>(d)`< zw`6`raWAm)n)t561t5rlg{wI(#;$P%OvOGw3pywt3JLlH-WK&gLC33CPv)rU&p&{0 zY_?+07kv(E{oWoLuDw#Rnbeu@m5NoYDyLLd3E))k6-uz`WqwE-x`%i!YGyouLJ-njcX;^a;@%wB5#Arwx#v5Df7Hxqq_>C~W;rP0oSigVu_x*!c zNjF<1={pjqZcr5~IRs97kKo%Kws?$VidnghrKL6r56VqkoK}#h=Ra@C+=^h}3S(&> zXH#)hxDzz}LMcVWkO}&((BV;Yv`sNg0exq%$jH9r_{sGu-BYtn$nMNPK~y8oI6~qj zH=!*>Do-cQ4&3RgogI6HfUVe(dC#3XBXSkjF9)=Q6C%GSbeGBPm&OHdf?&iapkSVY zMAHI6(yleKHm6zu>zE8~cqUIeUBvA&rlEGI);_5Q+Z#gmaUW*@Hm{2+SOpkcTby-8 zx-1i*4SuprGLh2Ja0$lmP^~#$QPi7)@5}do4vh;2iD39Y+?rq4iUKFrj7;ttY!4~; z3@jvM?H5|2xC`5bo`Egs5@^PsZq`=15qmdc@WOx5xSG*@i3OW$d<6Ls6kDd;<(zsF z$m0hh&Qn4?RCUuVOA`|ZWxUsx#2$zI9WuPcdq~j*-|k!H6!(4T zHd%Ge^8l-C*sY&rnecx?9;E;Yg;kSqFZKOVakez+{Q_iz*RCkQqP^pDrKL>SJ4Fu)i+78dMYkid#lO)5Xp)_^xz;>jKOEhB6gZDf|<6Zds=5i?f{4{g+ozbC>_VAMqf6V~Gxp%n8DsZLt z(R1PV6OhW64$W-SBbO=z<9l1h!nb8=enj@-huKkEQm-E<6VaOEB^+EQ*3hoI&F+-@ z!sj$u#WO7K^%lWo$Ee=4F^vEeS%$zsm^S15j@C$-z`B%I?e&qc$ ztBiCa`zKZC`SC6v>mIJy<_8I7u?_0HVA?8i+xuX7kcV~Lv=Q3& z&ZSA`=I)#9(oXe;G~*BG>(uCRpxO7MrLivxI6w3BHHeNO9g*2k$hS5!cRczO-UV$M zv!4H9XyQxKIG2ps16{kDAZ~6XJx=?P;EVtT+=cW{U%Ru zCJH8K6)6oTyv>U)B!#TFZSpcGypCpbRvP4SIBCVcsv6t`)~m`X266!xSp?4A>t@t>`H=^C29gzh1Cw$?ip9m` zvyxOIy{s~e@VTnW&c1$V%pSirBk-@BFf&t|7_VVP-&vyG_0FsEh(ePYcoxm5x$r@| zhi9DFfCV)ma!L_2tOoFLpAVTOC zqMG0$SKu477ZVz}7v$Qwa)WV^te6m~H4M%Qg(cYiBn9O5bD5^|d}|-Zh`k($XxZT( zwwtfGW|`C|C_-)qf!6R>%|_2cl*5(yH$CYHK$<7F(_2!CWJ{>4V&j03UF(6@5{|;)7p32#~G6IF$;lI($ zSwYpN%ng%kK%<^RvnazqZe5>qD~Rw1QK9!AU;<~x4sKKY`w6+p1eFj3q8 z#ET3p#Icb z5e4Q{DZNz*debc_hbJAJ)7X04;fdET&^W{q*A2z+Md(H0U&0&2Z17I8yIv1oc71B^ ze8Yxg>^ctt8AES4#^<_;wir+m9|6 zhf6Zpca~iD@)SVu$H)0a09jvk%2)JdYKMT%Vi2M9)&O*7Dyt<$=_Y`TK)Y(vBYymM zv38CX@+3{{eAj>)nH=KjnLzpW(OH?KTy`3(`kWyK8}V>*MJD zxJp4+P9T!OZ{KHp%nH7*{9B~&R>lNQ*4GnbmfsUB9#ms%(|kxFe-AOWU*sYxHy&KD z{BZuErpfc9s5JVYG7_;kb=zxoYsh?Gh&=K1YfyAVCFk*YWWBk(-3FrxOZXaMh9|j? zh}lexhmsLRN>IIrz0O3bQ9)%y)dbC-=qcmqDrk5>BFPJmC!ua=qN-o_q^eER?_zKc&UA}&xA4PG_YE~MOe`#|q$0|=Q;TP{nj!Gaa#l{QP13F0F} z)rn@G{55)V{LL6bvU0vsHe02wGg(W~7XtPb-ooQ@h+uPo);~0IzVi@JNMv{~OWK~- zz5p4aF45O%_kEu8et!91UVyuWZnZ3?pS)54cS;;y{vdPx%eFu!tg2iw=@g_R8+;D9 zTtAjnspjF`j9he1S#P%aUTP_R)0Y}$(rpS)ChhOO3L zW;`Q4(LG(z5}(9oRJ`_@z4FM?zA9=rqAan9* z&)_2Vx27I9`#D8Pi@q!H(%2TIuhS`TtD}EZk6fiZ;F7PoWYRSgW_T!G?Q*bZMMDJn zI#+2%#EE39wTrV@5O9%29}H9*??pp7jPTa_CX-vpJnZ#V5Q{p`?5TKVv_4HgNRPYG zHg~@2Q2Ld2Vq~)K|Dv68>Ed&B2Z*6YpGIboFIyFMDsE{m@?!Z-mjD(3 zC}Pm!h3MTsf4|~nClZ&~D&PO#!a510&noYaScXWvGzd=&wWK&7Rb1$tH@F>+*e1kaRJ}t zPXa+PK{(JGybZB6j^F-u()dRhLm8?p@^7qhoTx11U8>w@9b4M(cx$?-@_!ge`hV-& ze};Zu3tB4!XO%t5c&pQ74C?XUIhap>BzpcQHR78g9?8quUs`=|6&kh+U~w32-@gH3t#6e6zoge#dA*Wd90scw7%-;eyX|_qxpxEU;ct z2jaT}{he&Ta})sHK$K_#fEw;bB(TYLLm?m>vHK#dnnHrh)hl@c8h~~i3_Smkg=k1B zLbs}AJ|}F)u^M!>dZ%@@`zJiT0N4Mv8sRj`Y?|XzvNP)@S^~T;8!xTYTEnFrW!;^_ z^f%5tnP-CCH8!FsNP0`)I+6WoB1{~4MulJeLiej-`4wXC6I@^yw^OnFQ8s~AFdM8* z7fr!{-Q*_(5k6=>9E8NN9pcgvO%E__1Y%>V3~JHmmkF@UfLOf|!V6!KZ}PmETIM4K zZbu!2Nv87NNesuayb56Gbm{-^2uv1MG+)phe!F{MH#+aQCCK-md8D;e{doe6aKO`% zl>vYq@dAdrTF|5bd)>?&N>)FMd4ab&vq;tRXOd&6<^ex=2`Z4Ynu7w5Zris+wxYJuz@?!(vfdUbXw9|J}#h?EE!_q^{nOCm50)d3Ms@`X810*Bk9-gGzZS`_P{xZHFM#wW&&B_ zFMw4{(K*E$qzO;v^Q0n(ZyR=uokAl;a;Na^=Rw>uz5Wd#CtWQ==VyQU3$qB~D3s~T zdHxEXc*F6TOD{UC)kehkr_gA?MIoyw1+%PC~^9T(KW zQ_E_6KRmcG?LEDcdqujNny+iHIgxPMw^mvaB!YhI7cOgcssm#gaA_P6_FO<)KG!&R zFo+s~UI2E2jnaHyZ?G!!Piz3@9u3^{pWy7%>%-i6mu<6BEWyj|g+Qk)dkXS>usYXb zu8usyt$6{UD82FcD*R-f`8*sK3;wk0iEqa_`Fh{fGO!Fyjaw2iJl?g8{uV)RIHmU*DvP z&w+p8HR1RpOQLs|Q_L$HA9l!XlXOmRT2YCg4`h{8B%6Me!qwJ764=NwjG;JGyUgs= z^)O~i+MyH=uv~TKMvv}n6aUDT*see&77)}X)#$|@otA)viGdFNIl=lI(%az2Skk^} znoeT2QBL|A1Xr7&Ck|gC(%hR5;O+j)*TjTB`=g-|rzu2jzD67%KI%McgoB&=7j4%)@@dJlN4c#v z#-QvJ7s zZJR#W(PI%E>NQq+FB&5^<}$`GDgGU5;0uwBr~jRTNefwiI0(@G!MmT(BoL2_6->Z} zZ0s>xmcSZK?LI99EV%-iW^>zzGC25JCWzMEGU6XBN(G{7y4j6O))68+Od8)pK%S`B zBvqTJef9u!su%Dk$79FI;h2b{U@e6;gepzo-ZYayl2Qr8E@9#62cqHALJGXNqlhf&oInLA7|JJ)N8aQ5Xy{&$?Oy3i+nNVqa~MDr#l^M@4l47 zK6({;e|ybraJk{PDd{#(Kd@`;MXJOQq<_obL8>a!gh3V(I&w*!Pg>Zci?fn~#&7-+ zJTMXoWOrXaoGE_0MC0At1AFsds_}P=szQ$bWgSxgk-fRWS+}ybTtW4rra|<5qaDeb z(!gQp!}~X%X*hj_5tP6Ai(Ih1S0)WqIST|DOn5#!Qf^<@aCJ zdlshiQ{9+onF$@Gqml!%{vtqx%53s@Wv~MNuM`F3H1R<&Nm9Th#a3Tg;-gXm$(Z2R z*?KD_=&K}&@qDy07Q_v7*dR($QxB28Q4`J|TlC2FP?Ji?KpYC2U6C*#h2+*3=Y?gojd*7btTqOq?-6Q z8gK|Cw{8?OUUS$&bA5T8DQiCuM5;GR&6o#74IN1|=R30D6&+jv-ob`CvvG;?;x%9< z${n>kearVpN4hn0Jj*tlinyV5l!vO_x_?6ve`PB!n@mo5-ZJUjwml#s8-yjU04L(1 zRWzFtW^$0Ij9!iFZ_j$1DgG!2r+o3z%I{-D8zFXp#4Qm8pPcMn|Af-so0hSbu=A5! z>Tv}_J_-V6cMl;+M(>IJ{}D$=*6&_C>wIM9)y{6Wz}|e)biDE+2Es9Ya<)(dD(!AS z?^~_L^yGS2LvSI~wj5i>%ml*ft|#G#36j9AEYvx`<$N^(1S|BTrjI4F9)9e8{T$d> z0Hewg5FDny=bfURK3x%%ZDQ}*W2t|222=!@?Cm*Nx1#s$DUZcU9OUHU3dzsJM zp)P4PG+~0pUSGTkvWDtc?MyIHzN5L{T2~X+y=<5(D6JD8g z6zBZ{ROnivH!(04c>xb?@;yDYJr^c}6^F3WSknjAyBaSWk;XS$fOi%h;wmqCgM`fxhz=7hcgZx9|w$_>= zoj#ccEwLR{_o(Ps>rkx%ta;q`nTu7PWnKM$2)k7+b(cG`A4E})_gf5in)`KLOup;n zJ~fR6OFyUVZ7KpmcFB|(DP`3CnCN(?tR$u&!jEv8ct10g_6h$@^CW$6Pz-%6XfJvi zjo6c<0v3nQ>dE^0yy}dJQsVd?trl(GRuN>x%mH1W)p+pC_jMjuQJxYDnvrYozB(x+E{qbUL;|6b8_89&K@s!7Q;dJ zpV2tdclr_-K#ALTMH9Ca3DxRB^2b6$C3N`RhxxBQ(h89>H{GLosaZF2=#Yu9)F>*o zCZh`lfubQN8DA&5C59Y?#F9kcdg!e*W#o3|biKP)!0v}4yk+fQYQ0u3>V4xoWQu%#Ej1Zo{r#la%;a-oC-}+3x zuqeJbW^wU}eY$ex|B{kT5l%+H7>dd=$-775GgN=(ACCTznwo#fp^?1T#lS3rEQ!-Z z`I>dMI$y=j!np{c*g&ckVA95-z&;0lae!_Xx|HO#~?chHF&hKelSQzj*YWs1Vc1+{3M zms)Y1^W_@$;`g-`b@K6Fpg`gaLv8FA3 zII=I5r=D7%cI`0oRy0m|kHe4FAL=7?5K~t_-Nkk<%8~vFAr8Cx$|*<0Q*#)(Www@l zwXh};9h(hpt;Vw&MZlOCQ}3Kzz2}|VwZEVl8>x(yztPgSr~Eb>x+KA>awOzsYqcc7 zZ}-v|%l-;~yhOJ3pn%(Pdi#}NorhArUG!9u_EG&Qjw*w5!fk1i9@2vm-Xw#+)*s9cy+Y9Jo83{6(VYb^wNf~GBIdTH%`$x z`Qp7LDwZQ@LV=z5t$CzJY)g&|%^?rs1QyhA3p0j|4=F+L&+q%-InTIbm|v(-8BQ*( zJ2eY15%(;JNE1s3=H{*72_HTm2dp^mtsZWxE%!^61We$D7s%8W*TQuL8nO)&e1_K% zWl`RUsy>-%?BJH6HhS>v9wE15>CIfvWHflM^RMLTmRlCLj>kf9_VM8}t1h^#@$ue= zd@wI1!KTmg^MNAt?5G2*iQ~eoiPw~k0oznq$PnukLnZ$0C1&uby4MK%pjc+-AGmhZ z+22%@A)Vl+7ZCI6e)~#gKlgUj$K^WD=d;%q<>r!&i6LQv4K0qowk85%-nKEpO;WvI z|NShz`D)B+ZSn8N?Y;%Ha^gRa;ot-nzu12sdJ!+F%6C`#d+L=vB!`aU*&K4NHYa(5 z?&=M+!9PuLa}-RiHb`d0XdF!SXbtBi=e1i~N(^>KH!d(Hi`~2D;KRISzF)ONcc9xm zzbn=0l6;6uZq;=}HP0>-5>3!A?c^~gWxm{)c*AcU2w$TVScAZ6CblNsbwk|Y*e|&) zl*@V4*zTc~8^;QQiN7JRqw_+DF|;2iNE3c`3n3(0=!SW@PyxYWTtP8P}>Kgvo$@^RAZp$m`>Gzx1P!=Q>#mYb11BNS`D0)+#h$RYKQ@i*%6Z|jf{hey@(yFo7nFyACUq>m+A?Y=6q~bjas(98Y@%$p}vMkb^Iss zKYsLry$m3p^*vMB?{_^L$Ew^f7)%#v*zJ{#utobm`!r!LVVn?Y$ye#KUh+cVqCjKa z4iVp1Yq+k>fa`ek28mAMX)tQ9ipTv#p}yn{YG~JL zXR(XzM@7#A#Fks;4&@#v~B(c{xZG=ucxRa7d_Fc9Oi+HnSqPgn>~T?$Vjf!O`9L@(%VS8T7qJ&%hWCbSN588nb|k5z`c zdHbyuzL2RLT|deKng5OyE<=X#vaA~Fj4s_o^`TtpZf1$_7P zl0=S)xLyB)+0EMnVb?}YR!13yc{}%Lfc#_={-UM)4fJsq{mb3D$8SeWxO^2{C1jiv zYCROED*UVvr(_+6$csM7|NMejb+$Q9W1bkkpn%fL)%qH*oJ**sN8ED$kwr&#twudU z?dswyZ+>Y6cRS&_1s~hi1EVhk1m~rwB{hX}9ig{{z~V9vA>?#}#dW6TB}oT${Wx6{ z`n=r_T9gSr&Eo$f?JdKiT-*KO0YpRu6p)Y@k(QDcNeO9CP^25Ak?v4Iq&o!$l#mVy z$x*tyQ|XSOVd8(W)_V4S_Oti<>E)Y;ha>kr=XJ&}&P#d_8tPj{!%a5*9MjNQC|_4eM`}V{_WqAa%y4`oJI?8#^t%Jlo6UAPYCb&GhUaa$C zQKy3BWrWoYVNE-wa4NGKK_N1881xM-=F|fcMY>VGgGQTj)*JQ2^#;1;qs1FB&{_lC z1WK{nBC^bkwT2hbRz!vRN|hB4_B0&$`ivoO8>wgCTE}zkY9qC;$J$s0_Eq!ICRxK@o^kf%uZV_ zlE1Z&O0wz`wYo_mWixDj_wr75Z>BQaPp$ble0cF`I_GPpQ7Ya3jTs{Ft(%!KcSBjc zZ*NfYixms47&o4$2UiUfAur< zgOssCdNKp0*bIxy5+&9jSMFPYYQOYLzwSU$?Dv6q75{g*)M>9%V^ywfBE7=wOTrtn zrS*EVT6VLn-_et7fI=SY7BLPUL~hMs{Vey(GhNYCKWEKq&5d+w`ab`NwTP@|x)8*1 zMf09W;t$)h6neIsg=lQxS&0I*g)F2zCi#c4yNQfpOQsfxV+sZT*!3s66Ra0n5vl{O7Sk(@ma#~P0x+D}oZNJKn< z#-g8Ze^~MOCHf{Gv!;Q0iJ*mtlz$j2Nk1a;o7-|Kn!X1$Y#YZDQ-iAv)vWjS06T`l z&VFs10IYsqTdsik_7QyJ)cq3b8H2C*3pU@IVTBOIWT{YOe?Gw7DwNL^y1yx^`ITO-RdU<*~hbq&Sh(?M|i^_5Kl`7^dSCH6-kbd(sY~n zny&v%#&g{ZZpqH!rkLfp8dP{sBATLN<2zF#qMQq6t9B1sKY-foZe>E1Pjt}=o44YF zJWGbcg5)^Jo<$ax&-@xoZqAWHb;x-$~JOU2B(LJeCtpcuJb z`DvjD2|B}-KfathI6(E;?!b5+y-lnj&3ekTF(BmS;~RlsX>_5;yi^%t6pkY0R)<*kar><}g`#I-Lz~qyVO6fKTPmt#}J3Lx{8c+cRj?o-0qZS z58A;Cq77ayF!Mgg5s(k<`QS~3Q3>Df*t=|gG%l|Rx$SntT9##3i*r>=af6TP^JboE>I+5#5AeTP;hKG zCW$9jVa28mYi^6g4f+nLF!F}uW@MCLN5^a9tm7@k9<-D^JD1S_W1i_$-Lv9s9M1Gv zI3r4-F-EkE1&;AhJwJS3ux5o&FnF;ZXA$8pfuW1#%6;^6SN7%p$ zioo>XSkIzm>EXYVG$Tp^c9A#y@t`o#9f4jFU}j}Q)n8(c-cRRfv2)$;feR>_DD;Kn$Ag(-Uu)t2)PavkV!W2*WSp=(`q%{qO8hKNUZp zR=a;@*r@_@jv>xRnu+l4;7eIY@h&VWA&KFccnub5(S|-!<4{O6-pM}3)$vy;jDNLZ zT3!69II_t!pnSOA2JwvH0)ZFF_Y@xyrBAR<#Be4El+ka^Rj4IyCX2cRjyJN5eT$Wnf z<@N~C2+fY^oz)t%9sE}VBP%$NTcN$MO}*M62GJLJCl2#FeNWNF-FTK>``!^z^D{^L z#4hk)bX`EU1plQZC3oV*LiL4i?B1EV4K)O3_6^ zl#A-3gca+4OLJLkS^U=;!6c!(j#lYm8;0Sa({w7CZ{HL7XqI4glaH;mp25A})@L~b zB$kgKI`JIf>O2)?uG$kI|J zbo|+@Iz|Ce!y&PEmZrF+u$cN};QJn9PgN?F%7=wZ+*q!aQ#!uY>*^u>4a(g6o-mIV zWn&xaKDAFKucP|vR;eM$@`xR3(%7T;48Db#2l{x4xDc|W^1`+%(+r%%KA%&wlWT6m z0p`6N1>Xj%sUzO_F%@0T{(SWDUi2o++ZRkI@>=d9$IJPS3qS++hZ@qTD&aYp%o}GACcws@ZR)%|@_swTce}w4wTa?)e{r%{co%78RVl5X&WL^6sUiqaD)pXmzx z!YN_as=S@=HMci}L$?Iik;S)s;$4RYiOw|@oKoIavjD@W<&%@zfw|5YTUFohyN9fe zb^Di*2i}nnQFX>oC8wHve!D|YBoOL8QVF8p-i$xfZsrf>88CLQxaajVEZc)?AR-Y_ z(;Xa7-`Fs~bt-}Qf{CHf?-5tIwPlBVzgSV`>c2RQh1hQbhccgUeU>7xDwL%0M?kS% zCWTsz1VrXd9$PnZRL0qTX0=h|HA6ar_0&ayId^bLB_PGGDCCg&~=i z4_Jm?9H$i9EJvpC=XHNFGTKV5jO^0BS#0{$NrFrLLfC1?kW|H;>yrP8sd7PtCAYkn zJs8KmtxUF!PL=jFsz)q07M!(el0+#all(2tApsH)c+#>Iu>ue3~7Q<1tccVN1k{^aL1 zAL*d0N|#VBDj2^y-T2JmtdnFwx=D`{MWg_EuYxm+ao&9kU1~x|2)GzQ>L+i=3!L@R znIEY-CodcM-+ZClw{F7)%>+fwwk$psWU}s=r0SsFZ9j`E5v_66`5_Z?}=f+CoyhRf&2s3=;Sr9K0&uFimstzgeeRDnS~)-iF)t zivN~0JJhtJyBIu)hF6kla3;+AQ;y{5n)73c$#_bEM>fKXi2zPzDC@{~eRx%-OR$)7 zYN(9Y=ueb2Y;{ifUOj3ticv!^eJ_=%8Ff}VHwwO;BGGr|G|?d2qo?x>V^Qny43ld@ z?{9ss^?PaQW0vK6{ug*=sH_>ho&%G7%=tJhM5Z>CZ^))}u#v0r1Gn2)j#RhK&LI>| z7T-N>x6e=>h6*iGLsD~;!TP>W4MQDyUx_m6Qd;Q z4P9fOyO{}OAhT=KTqmjCNy2lP=nk#mG8?EzpUXjVfsUXz1so zE{!{oAE|up_WFwEp3Bu6nWpHUjtfhrUpx};G06TQhTTG$mF&79f>q5tJA!{*9?cA= zh5Ry{5A}?^T&&!R7;EP)nb1^pW)VPb(B(Ewm3w`*;?^rIiCmmX=r6e%;N_ z4|>Z-&knB5Q1Wh3)wqhz<9=Q!n>=AbXX-0AVPH$gg5f%6q7$@p0X|4Q!_3b z`=03s>$<7lQkX4&0>(j82b#ap``g~RY$^pH&+dkeOgTtK!*`vPYLp$}$UCGVyfNQQ z#{@UVH<~b>xcq&+4%;(3%G$q%kAk6@fxY8t2ck8iwQb~8XyiQi8BWLNJvdHR=wXY> z;)Q$)-xivMp$3|j)UB|CL)8@!!ys2#TgN^U_x-&nakL@$0UuDZad zV>C9^pSvX$C7^mr6CZa!Gn6bSzxNIrQJ?@5H$F70rN-A4Zx`z zjivTq*U-zZoYJVwS(nnbbEkkA+@*%$$G*i9ytzag&>rtZ4dgEd_^-V)$1*)p{;Ij| zzKv>TjgB`&+7jPr0EuP%*FY-?0P4bpN)AF8MsY{p$tuf}2$xb5)Oy_%->HRu6}td&2iFy7aE5HroC= z@=qoM3W%;S9~3U+1`PViz*~5PMgi5$zHlb9F(vGUx~p|N`J=@tH7uFBT#K461XUpy2H;PU@kvhmJ#VHO7>d4~7>Y%X}l&GP5#kl{R= z<#8%>hk^af`9ni0ig;0J49{ylIQ#kC-{%J^F&LqApX0Un!!-oa4wXLBj>u_BpRdP% z7PAhxB~CEsZL<`T)02}v5o!KD$vd>9J(L8`jvv6Ma~LMZUs)P5A<;{V?Q>bMUKDTQ zF^rocTXcoK@d(?{oAVkxa|NTqVu-4}f4qaes7nt!p@mZjEZp?{v2M8(+zq%1LxD9Y z)Iyssw?6&PeODH?Qv}@f&84i0|k56=rJAM@fH~AmySt8=`j=`}qe(++zdG9$9 zWq%TZCVIgIF$N=0S>WPt+CZGgw(rUI2Fz?KX z%5F`wZKW9Qs5YIV>Nd~KM*t~9AVSO&bEHwJuwf_yK>y^`8@g(u_(w=#DBQwyu*q+& zFt2Y3#XdN|9i@!PC>5)zmH+Yfs9|i^c#{6v?vLq9caF${XV}Sm@#~|?_Z-Z6OpgN3m{KBOd_^`daG}P45ns)=n zCr-raCgey8#_#=p`YWFzYvf&+@VISWQW1qm&J^ibx6{&F=)`9jCCdVq^ho4Y*XJ{wtcpUCEZTT+tjcULEW=Q(=x);m?M?`ibS3%MIb+%3OI0~FaNr$Dc zk``iFDo)iL9rvHuG?=cCJGR(w-wyXu6jD(Qzh`9en|PG+rgS_@kD@bkcgw@4LjV)A z5JR$y+iM+NIIjAqyyXY|dG_T!6gDIPOLl4YKxblDz}AidMV{zoKgI3z3I--pt0d~+ zRHnZv1X2RO6L$@NW%Xk|Zj+H`?2Yvo=tR+=+yCO8p7+D~h6Q0!RF6nh{((>W!CQ3P)AOEC6P3qp#8at4e=UGOw#%k$BNaF z!!Pa($?|KEZ(`le3-EbLcSyioWGCnAjUaIh)KFe9+9-)Nn6ReDBl{=`lrpztttuP* z&^Fpa3HPGuREIyz)}DEjU`3%U{`w@QQ%TwMlO_{;{pfY4A!pKVkMiEqME9GVX-SD% zXCoaN?o!TNhA^*ny5*(3^@}(P;EJ;=y{#C2?>5}_lL47z`47__qLJO0?YyUlIPPV6 z)D3E!D%GPqwqEPIqt=i5VtzVg*h`}h-MAzwT)>kE!W@v zewUXVeQorNo)GXUMwF*Y&}6n>Fn>9K@zRjk;mg`vpALi51RnB!>$pIzfuT7~_U8=> z*3*bySU0~MfR=C}U}JBcYwD?kQgkjbO!oNEw*}jUsZ9s@Ed43+d-!U=Ih?)sERPVS znl&aJHeASO@y$B}CK8)gZ0AxmMVBu2>vBMdXF%aQOP!&95Xnt9kr#TAQPj*Ob1|mM z(k!P$iK{B0F+LW*jNEk(-mCj4_G&;wut?^1)7Cv^$^(gp8_sF`n1abMQ+)?NYzTmR zzw&j|8EXH6ej6faIGbhAFxWBK{9N_Ge^WYa_mnbt1I$0oq7-L+8b1$#5rXmA35C$B zwaNCE^2fFVPPZ+C40gkGAo61Luk>n0M9auG>SE#;2PU)c=x7K3{D2vr>)#g>0$))D z-TQvvviE)9`9!3dGjVjW2?8;?#`N!8%196B`Fi~Bh)X;#+j<0%vH#qkUf}NYg9;K| zfE}>w97bKJUs|d-&VuQH+ypg^wEvH zP_?PK@@$v{xzOHFC{B!SUI&2M8yf|;n80I$&P?ggdAG*SFppEm*zAxdaUf&83|pRl zJ3|h9l+GM<2N^62!(jyAa)C}-k-3k-T41FS0SNy7DwpE56m$6@2&_X%Z8%4B!}FNH zyg{ou{Tut))IuKyP=sFtW2@cy;CouruclBho6PQ7eDn>Qe>C5CX1XLt;2re8X`wg$ zi*eh@)5T;~sng&2+(O#@GUY>ax>-O2JGo~Sb-gC0VM{s@r)|$8Lz{V9{0m59)Xefi zY6obPKpm13+@mCT#_%NNLg9hor2^tZqSlOm-RuqY90@ZexRNA1n7rysApW!PqlU%X z#xv+nJHA;CoKzx+j-w>|2H@WU{A`qJ*%DU%)R#J!%&+QH#D=iM@0xF?FyB85(%UV( zi<^x*G8;B;`WITK*zjhGJ01zp_8lp|gSSL}58cHEvh7f+56%bQr<;I{wZ#pjZa4bi zO|%f2E%zsy_PGC((fQ<=17N%?aCYc)@?E)BRWk(qrT#^HIC^sZAGE@etSZ!`t+th-cf2#!c#FUdgIHdYZYp`-J>HtEOSD4nQ89U zY=aDO9ijq<&tN*kl%L;3A6c9z$E}^8#&;vm;*~@Pnxu!FxBP_N<+4o&k4Edau6T=H zls0aCI%uUUzXTYpw|xot;)pTj<|E8%@7Q&Q*YP?k_;0&9$*BS|E{Nwllvx@7L}EHT@Xl%HxgTfOIlkw0FEZr}Gx>cv4vqm4M_K2qK^7C|R&l?v)oZ z$j1|%&r7Th{9e~TE&xESQG}|+3&n-decIQiH6IFvujWK)JcuOw%~s~fw~aO8g2q2& z2`T?Y&~aIMH6hF%yf}qRU?+ySajB}XOfe1nDlEms8`6zx&`m{&XpzDm(RiqWEOL&1 zrs$ut`u@Kt$h3Fn@VKM#%czN^*F+RT+x?=4^JN2GSzy*XpOYhDxHR|8XCmHAIh(K2 zA`6@gj<{4GRzR7s;dOibvd`nUNt>=`w@m$E4m)fl%-jgj&3M234?7l@kQDq9Nbay8 zV!s`^3>|vAULeWbM6zq+;_1@gnS#(-TY#3c^gj=jMA#UuMDgzEu4ibM)QmGqi?Mr~ zUyqzUc#=#131xrC5=$Ewe7x#TH?AlG)~%IQCDFTM!-nP@M#jKE2u5IB>KXY8mN*sTVE$Lr6MA|5dc4brf z*_X8GVpv7UFna$g8y0nMg{8>lC>=|&d7yZS*{XU4{-1IUGpSgs1&(7<0Lhq`ON3}` zyfSdamUUo5&kbjM&!Zj0^x{D!+&tZ&=vJB?(H4{dL^szT$&|0TBh8au~xRU zQE#@P!?R>(H9RB7@c!IHZvd^ya{a{Pg&CuMj=@E-Lcgwi&|E;ZNhl42t8Q2#Y}7@S zyVYp8uZazW6(I(~mZb^);(S!XY11gjXHHKi)SYGCsL43if)eVI#DHv}Ru20}HdbYp zbCh2AsO1dmIn)~^`|Dt6b-&TMRn2`_9mi8^Z(ShC+rS4V;zUxP9uTWxIUB-&sJI ztG3@Ym+=DjclaiA%Rv6FTWFyz#D#Qh+QrPg0Z^<7T#lRQQ)vl5mm}xpsE1sB!rh>~ zrulM5p<;9!mb#dNR-zhPhgRhv=ySa>dz^wZU4x9C6;*^fj#%Ez=XIb2fhM0H9cds$ z5j*VKGx3O}8ZOfi=kijPu-#fNgy;L_T zx_1^^F56imWWYQ-*IyJ>QEv4$n(R>GyYgx62Y6i{W)hzA@iqkV4?_gu0l7L%?cRou z0}kZV=K_F+02LNM{ew2Y9^EJ+)ar(^6}%a$2St1TG74n79DjEV19x?5fSf%0%}yNe z+-C!bpLA$A7f?<(&4dF&po{JLb%h$e6|XJQFe_VHoE{nbbfSV)&jXx6*G|I>W#>Sv zNLEyRUQXOL$wpJ9UkxC^6k#_3cJupm0IOY#EWEV{6(noG&bb^3(^W7T+hc6Rg;c$! zFrIn$dtl8p@8_P_s@EZ@sUkO^DQ74VKtp$^cQ!xel124xP7&qrgY}phiPFw(iWz3R zI=>`l)&iGnVTJ08-wVbLQB%p@6cb%(A8XkU+S9V@d?C z-_lYcWa&L#2KG;DPnK2X#MeiRaElFaa;eLTG^gK*c%}ML7)`ZyHf5Uny%yAskOXwA zr&o$wE?{Wm&g;}bE-JQJR87Nzpd|@o7ZJY=o|Pq2PDL%8;*!P!cs|8G-e}4Ypl!z& z*1I0XyN*F;+5z*fBHcJAAs=v_#hyeD4{@<&s25K{YDJ(4&)aX zJtJ}Pkr?`(Wva^|*+`T2CX3mKv(jY>#d#aPS!2$byOMXL87{;)IMZ#XmA3Gem)mtG z2@=$e_P@x)ZnOO-*+~cVRBgN3-Gue&fa2es&@>mEn&w^~KNSe!NbcSfVa{b-rS7ok zgWZEYN7|C3%A1|^G{7y!U>lGIqu4-{En<7moKCx{mT?1ir%J>SpVH6DI{! z4ENTeHFdI4Xv)8+E=s<~NyO`cS`@h714AG(Op56_szYo5jt9}}qbe@C!5>kWKT_v1D#lgpT;7)Lee=k#s}*!AK%lbi=tbTbmQ5}!FQgj3s(kIEBfRdxSd)mRy=)96WWSz>zB7)OulcOL+cX-zgb6DYii-s&D8HcPIWSc zS?_@afKAwS5}-dI2&rr@cM|~{r=B8RIWAj78;R)9bRUYOW=-u{PIiaW$aIxAxeHH<-4c*eVmJXsr`Zm1FT*nqGs*1x{LPcYWBEEE04fgiKkTuxW#U z@g*YXqACgA`{C{#)3oh;obKx~CcXC+l{UOoD`1TBUbwX#_%9oojI9Q+=yxZrKn<<> z5-;M_?O~a9RSG}N5C!g~ZCGfo;~ErKcHa23fqtT4U)O;TS#3$irSkiQXu6JILh(o` zYitd79%Q(}qYvM-voM~UmB-0&vSy;Ex3WYm z6ODpa737h2QbveTAmr!ypHhX3!Le zG-Vu$tj};jKPMB!0}_U>?@|<}Bcv@n%6Gk-MfLxUa!Mo%vKE!~~xM zalrl&m!kg=bKqH>t4gOHqW!T@7$>#lm5X{$Xxg4bCV%KSx8{9WTyPaKkQq82(&aed zqOyX-<}x)C!(cl@1iqjSXIP)lhlDT@;)S*!$5Y+$+oO=Li(l~O5IYmcdp4zcVmjOH z11=TLHmySf(c6&K*Qx32yZc?EE~l{xi*LN&W2)}&Fz43FrC#SCfat85oDZX$5*;~$4jExsC3kF}NdTGgf|wc2*rEuY6tL^&44xIFMB>px*mo zpQjx^3>P6k8!eq~?ehk%T+24BZ8wuVpajdw!^wh=hQ0+7&A%jb$|}ZnJQaSa4z@Pn~HaT;|Fg7}ve*tt2=>ObIEJax7g_TK7_V zFp|Ntb=YQA_2uP`rU{q)*VC^#&_9tGGNA=8-G-h}99~9I{dzKI_@=w>(TBQ;HvW<3 zhL;?BHb3`7R`r^=&JNF;Bc&}YgO?K%{CyrM(e91!lXWi7RfAO-?8-NlWbUAUsiM`8A@`}AD zsQB_Ze~j>4hG~8Bg~i<33olp4qNx%Jj|9KDvip?fLA>9R4*kh-AhE9;mv+zYO84Do z6I@Z3>^y&3So&@1!U6-+AkW{Tgd`gU8mKAp_JHyv|6=48R3RhaU9rvZ6Y_i14=rg4 z!b8M>ibUm59G!YxEmdG)rNy^5vpEsCc;+H!+fE5sS`h{`(> zLd|jJ7*@1o_73a~AB|M`=vF^6sm2 z*dk0jiVRo2JSV$7jIw74A1CmU4}F(Av;s{RP6Smh3>)Yx!Cus2zY!NOf9BM_zBxmj zTrF_OFm#suv~FPp=p7*tnh%~$AlNR^b(52$VGF*KwN5tcEY2x>D&vl7HlDmsyCzW~ zY`sl)SlYO>=aYu_rnXYF55m#d0ic1jHm^PPUy#?uPoLT&Yc#+2{-Sn@x7WG-L!dFt z6)r+0=HWDR_><{g%ndgYjpK;;jA2m%u>ss%;c!o)dfG1hwg3tR#}?AUIVB+Sy`=MH zi`p5*hcW?J8DE6hD*YzVu9!XGIhgHEQATB*2`Kr;TP;Kvr8+1ooZJL@D}eemm$c+B zJkpxvxy~l-znLV>p0I=0)1gB~s*{mn zI1BxHf_a*e0(m2o%Of-=B@2~H#WDlk$n#Iz2TMi zz^@>Ii)P0bcAWg~;3UhnGM1WprD)(d%3{k?^C^ zytEw@+sG(!)8-dfG^?$%?dG@2FX>QQ0H@xV0#6?jRjTgo`b#wLa#lzC4ig{w<0@S? za$K?BA^jHbETd^~s+;n9eOmA$BJ>}Aa#qkW^^^=XuI$1CWG?2`|_b*l0H-6F<0s&7P-l?_r zYn=&J;w{2kA81WXJPf6Mu_S?TBWiuk^AE~pt$0J(v=iyRn+W3UqwD#35)OotUYdbt z0IO$k8UH?zvcmYWz0-8^ngId?3`P*h6LKLc2PI!kN19y{XyOM}x3c_VVU*09@HXsVv3`Ix-MS2?l`=!~FZCFGFGy5E>m*nR_>CFphX+4lrhGc| z_-!SX<6k9<{KT$>Yg&AoD|omDn}7yl$rJ>ZjEv$)^6n)6qcw=Qdkzu~P&A@uYc4@y zuKFU=d*=1)AJIWPT}<>a=Vn*A*6na6i1mc3;)4CNCqwqnx8j0n5Jw^|=epHN{JTY{ zn4!%>x;;iQHKsW~oeOu~*2lj>eU1}}bZ4%HB>ro<_A0w_p->>J|C^rgC2m|tKk0h12BS33jH-JOQj;gz2eu2CZ(mHSw@Kec|*_sxq z%<%^R*jmC2bNmWBng!l-SE_(Os~cW0FY3ptpt)~+45{dbivRI-$`|I#din3RGV3i) zvrc$ZNw{S6KR%I|OPRY}1a%v17nGU6_R z0*AjlA6>AQ-G4;bw<{#BkdgOnTur{y`m`cfVgU!jn)ueQatfK7vf#{rWk8$&lSta} zEM&rlJ*PG<741T-v9PVx*jE{~DvtWgS(sC+2EROa2M=}wy(yUe4Vm$E)u1pDG2v^! zk;n$BtI2~G%p|Tw)68>E=1wI_vsJ$QNGu_o6Oz+|$5l$>gfd0fo+yNV$Te^3Sc|-3 zk(hlZ1e)N;&-il1D=93D_3@k7BfFog7Df^7l*IQXbYtmJVZV-W6kfSdZ+6)z^y5ib*mWk6J?I|fbB>7=M z29%&OrO*ZB&vf~*K)Xx*Jv#{GFO|U?)qU#c{jLhtZPv(#bBd&gdB!nv6%V#W8SOg} zeE~U!II$9nM!l z+EVGdez1z;9+x_@N}*sDJegP>9gLs%iRrCj*DD~rD<>b=d!kVOemrA}(|Wgj zs8C$5k3;l@A8aLdEO0bSB)9E}+lqgh&L+8tss&V0is4AiFud3&VyEhOWYy$%^U$GS zhWwe``vrf!*&iYxHuGUcQY(X!hfbiG-NaJ0b$$3Gl^1tZysJ{ z;1y%IGaS?7FLhxeNjI#-y&u9xkhZ?DpxN~CWctF&ndj}(P0wo1C~hJ>htj)lG`&6; z`w>A~&)i>7QF>d6+sG--8;>YOyhUq|wo2k7`fx*c-9GMp{_35^TJrd{-O9H&!iIqW zp#Cqrrp~H(=herT{PXd~o3;Nxotjfn9pId->BB3WnoJ`G&DZY%`|~=RgTCKV)Oiv9 z=jEEy^ifC(Ez}G_)$63+rS^7S%W^|D+!8RSrd#LB;!S|amU|N+fe`@`NnC$d-H{fF z8|VoiBd0mBzG@r_qTxOb6Fy74p6SU-k(3h_LkvPCcv-H=O&AzN8E8%7tZQa^h^01n zjaUE3TzMg_=~U&Oa_*6R7S=3g#i9j)pJ#sh+2Gvtl`v?#XIf7p>dEOnR&Lk3_e@Sr;tCUkAq zkHJ_wyp3-i)z6ysSkq@!D^B#5>W=2Udat7Cs%yYVI0h5Zv=iX|MRdhIuBL>L{foLk zQA9|+BbfIOw&}WAtR&atVmx77%zC@gFKxQ+;uw@9+P|0!Tl zACR@i0ig1Tul+?9l~)$GXBz2svIyr68-1mTvZ~6sW5kY}QmX%{J{Xa6>1sjKmQE=! zc-cywt@O#Orvj+U5M_$b`9V6+ChoB1KEf{L_x_@zZBLVWh5BZHTP>~KGWMP#jP?0% z!|H34bBB}Yf4eHl|8`Zj8wc4*p83E%PZ~mUd~<8q|6NaUFt)qIMX2tJs9MWDQ6HWO zx9U*74EV>R+V}XEKKQP69&_&$G{eN{KKm#%`Mq2BpRv&+?WT{Q2=(tJP}GZ|*x^;J ziftZLvqy*_cy$+UK@=Bm0zn5l7?uZBg?Woga{T&RP(YR|OmfyY60c;UAqU`fu>lSx zmH5I78FFQ%9xEE`&l8WWKfw9QDkT_6zFu!-xit}rRDQe)s!q8V_1uE_D&Bj#*ml#) zFK*lsD%8cA@enCn{kW~;S3s$&;1~GbyquIgkPej9pp6}D_Qb`UM~#a1uWZ$( z))ggKNuxq!Q~ZTBZ5@jyNot*$LCHKsMQE3f{!cnuNA-~K86bIj;r~G>D_Z=27)DQ6NhkIYqUVVQdbjKLo&hM0uT#^@ zwY|1a{E4QmLO9*GqrLt;;hT^U_K)SR5nvkgz&Q4}K%!UGR+=8~7$ENqm+MTw3o)OH zN{)wpVX>}J&$hB2=$~Y&9`NfZ7D)$6!pqjr?F+1UzMWxUqD)@HhI`)h5O>*2YwbiY z=57imB~pq|)~5?waGkZ0vL+5TmaJF3mOsn|Px@Pc1uV7|k6C^G+<-l_L`@VnR} zK|!lP&2jqu-|#E*`T!xY^GTmVAk(#B>XQGbEF!kZI>T#{%k2YiiF3aH(Z_?`HfYVC zro^QelhqPVGq;3#0&;NzG-(DEp8(mLJpA$6(|9T^t(iC0a0qtsV2|$$0>~{0 ziQTMy5fy8U{-f8y>WeG;=pndRO6*VtEO#zd;dI@dGFr=nfbrA-v? zLc+?`(LqQ$v3tL7<=`?hhW#W*1|pn3^5v-b#)6}On+WK2z{q0;DEQlOryszxxJp&| zZyw5IhPe0zh)8Rvd#Phn%{vJ#>8{cvt|W400_5q)N4{~Kc>s441FPDS3K1lr2iGetC;*V7%Qt9MwtmF@~;Nvc-kkE`5Y z5Ar+qh_885hkK_NvRd4e2C)MsVVA7@|C9~1ONW`7J8gdY7v20jGObyahu6PAa~@wL zaMf^u2oiZLLd#yGzPab)E)8^XetR!CLd)@AHL=WJgD|ou0vE6QKEBe#qd%;W{k4-B z)o|J(x1DVF{Vjte)3Nchvxn8<>%gj~?)L3Bp)KLD37QA^8OaToq!3Ow;oHK#_7CwCsdj;s;~ ztQZ)%dB3sTXS9`A*E`AA76R4c^W)~@`HRWGKNjZ^QFCj4uI7ue=*cZ0>33?Zept+@ z{I>%XCZ3hR1$Ba(MQRLtfco~If{0IF91^_<0C)lgoEs~NDFcsV%WmtZCX2TW|HifV zod69^M{dM$D0b#XbH>-**O~#jF`Eu#52Cg^Xp2JBD2YT_N@g~E{J&0D$*{8{#E+|E zI*!Mu_fJdRo9gGw1QWe1*AooZ-#mEXcNzl*?_z`ZRn^px!L#*7Ku!WN6E4J4X5s9| z!v#}r9Br5aqMY$NI?LOlc3$VhBCl*IFm>SjmtD6?9j<4GpMp)|!6&PrWe#Vw^U>C< zQj)X!#V_{zPBraYZgi(|P31tmA3kRP`rO*}M8XAM&Tn;PThTTfI`^YQ)Wz5?;=RWof>7q6T zl`9@BZ8(w#a`t&HBaFqYnG{~-teKXxn8_Yx>CREozeNYy@NLJJ_a1L}#za0H;cR%@ z{Ox#bQtiEA zJ^wG)sV5M199%Y83JinI`vkx-2w1yc9yeRHHs%DTqVM>g<8%-b|Is=>)NKUH6pY%*+% z%9OI?81isJ} zU=yR1*g1J;dibvaxgFP)x7FY8#l{#D&lm0-^mRb^Z=YWC!{`Ai2Th>_9^@a*Mc_Z0 z3#?CGl<8tIcDK$kXANtZ`Pf3Qyq=P(xy>3Ubm~CgcN7M;jGO{?X|VhhGk^6>x04b?chKf%kfFK) zb6KuaozO7+&8Vkh{;Z|szSZ=XQ>>|!s14`73A&F-dTVo8i%^6AatX)XF>dnvb$~EGvOOT3XjVZxvRD(eMB{IN%R7p!=nixr zf2B??6Uc_+0*);Gl3b2J57;j2c_9+(%RB`wLvRBP-f3On+(tQX*Fp@UrhrA8SmWv_ zX6K-dY5?IF!~b3FfxB?@Fkqzq(#U{a^SuJ zm#Dv5a;F_vycr?G`Fl)JoS9SU+!b6(Kdf&csbKHQ?d|WZsX0Pa|URPBN{pvUZIQD`>-Q{Pw-uB{teQ zSibNcKdowr6V0Z0r0n!C>89>PCtaaRcxh-qB}2*FyDyHJ>o^}sl1|+H%J7-U;-lLL z>-!))ZY%O9wsAnBYIgLa%#+v%q7NjoJ{=8We z!Da)rHtv)T4q!&BxDZjVt3q`d`@E1;zvV(J(zcADB1@4Nt92qsDzNpuz%4_-j~odL z$h9BQwvl8|%;PnhQ%U8{R>b2#mJed%{26DHM!D`^iYSRF(BuVzlk~q#%6)e+vqKs` z@0V0(t?(o~ndi%DWdUN4JL0_bAyzl7(sgF=u7Q!323G0QC>in<5yT&f*mr+Yc7aqMV8I_~Zxut86ZuXMi1@Va8KontAF!tu@!h_TI>oH7>Jze`8O0-ku?Ng! z?Lc}*C|N^*VZ^R+;WTVIkb zwtw6Xr`2;dWoc4fJX>WJI-ORdTXSw=bnEs_`+U|CQcAlN__+1D>FlSC#!nBgQDRAv zDac#SZ0}Y&H%V9s=(xSHV0vdKzk0eJH8(WHx7Tpkw70Q#n_^(hC0yHkUS|MUa?rnU zHkuFXBcC<7OZ?F;mZLlIE}^uSzJ0k#W52*-`kNZhNB%{`W7#0nR)*V=Ln_^u)6?5S zPm168E$6qjPc%TAiilAo5lInDE+I3yls4Wjiv$2F^!w~OkRAgo7W>eOZ)@lK%rJe- z)$cVSyzm((XXFB(G<)|5o^DJ579bS7hNONb%h{yP-^_PH$}N5o66 z;>Z@)5iEawmZbJeJsl8B`a&|y<55JS2H3Ch*^!Yk3(LdGFk(LP9BOcP7;Cqwoq$85g9` zN&_KuKUya07%#n)CsOnCT9;ue`>ktJqN-=-F#l-kH)!#AlSMGU`KgQFs{ zl6NPo5@wW-e>b&^3yI6YgW)XpXSS(3iTT*X9RW;Zk?sI0%&3G|18+QEW{GVCFS6h_ z7Q$#vtgQl@4SkA7ZJM^yo$uHp)UGv+Z;kOh6mt;fxu^MC#ox!)#bNA6#Pd*_eS?gy z2h~K15M`?$PRXnf?A(!_PVH}(WZX|jPqJ7+pgYY|u5|RnYZRFyZlSFcs#Xo$ag2q@ zcfBTip6sQ8zBTv~vaekf+CG+{i=s*4V0|jG>NyhL`4f64!JYIbEDJ0H)-WPjTb9bJ z5Y`&_R+w^%!DIIZ8guLe>f+fzg^u!*QvMGNrwM|JJba+Plm}{g3S74Ne@3%zL41Xv ztqh>GzTdC9*nf;Blx_Nu^i!pb(#5W*k32erJUJDvf2;D!pxX1($p;?*WE+)vYqQQP z)#zVU-as6aM0FByFduAnNe&%ziRPS+@pBP3!Qh0TFQrFvaoipZT&@a^c9hR2pNxMH zDf^jGp5~j9DNjS(Qnbhz#`$m_i(9?2DjSiC`3;L}RV5^D(dW+MP)xXMz5BcKV{ZeW zj*h(!_P>^csnQJE;1-rzlC8}jZ0E?ZEDay{b)4$j{NRaHt&_qLCN#k`uEi(xwN%A4 zdqhuifaTX%*s<_w-yK|*DJVkd8zi*wn-x7Q=O%HB^w#93W-O}wFKoR6lZ;c%Ue$ZWB^N-;#5NY`oap=CvHUc1 z3ZvZ!ubxUl(U{>BbQhx@qB?1O3RblpCJ);1oGF&C;-9WsrCf{Je0{Hn9C*n356h?3 zCa>T>`G4RowLts-L^;PNU*wr!S!K1^4s@-Hav-fklxKmyGaPi~}~PV9ck| zy43|0Cj%4ku=MJf-r3b)hsIOCpxk08gr>qQJ3o)^RvteWUeT-^D-wx(9HU?u_a-!| z+YP61+332%yI(use*G@+>{8>U{Pwxt#>e`#lNZ+g!9E2;FXNi-`Q)@Tk0fw`Gd8jf zT6LH2(|s;khc-fcbj`&y7m8byNz(JDd!53!uShH^bnNFT>0-u(IQ)HN#=k&%l-iBtd6H1A4bWW8e>`~Zh@YV7fvc^nDdSXxma{k`?tJ*fQej<^Feu(Nw zcXzUuUzzUpQEN4~IS)El6Y^uVwWb?aOlE*L?xynXTDUh|So&1qZ>ryZ^|-77Sn+RM zcGq7Ljg!gfL8`0FU>Q_?HGP723)y_|_3l;jh7;z-4?QuuFZIhfu;B4LR3w>%{ez`_&V6KU=cV*vvBwIWE1Lp6v=Z zq)dBxWqSFTPUlsbHM+zFKv(Z9mN&`&ESTQ7rbBbdH$CbainRh(?VQWTLP#B{Ix$R4 zUqnVUOUcTqKItx27dUiriyO+HWIF$P7d?w1$he4{LrD3`tX!|(zV<*4{iQGWi#IjR zv`DNhR-=v*i!QcJD%}MZ%I>odLp;qN2$VuFmn-$iQt};*8x-|^k|rsB_qKm8QdHxp zn=G?yqA1Hx{kRK^cuKlgzQ-M8&Q%nESq{H${oZMcSzv4c&pps$j$cjosl1v}&>V7l zd6D|Zw$D3joYPh2NlW>kagCtdhMm>+d?Ke@B52NoAF_6-tt`VuFBx3=TT=h5wKf6?dydv$#b!q!MU!uLjh!aOinK65LJr1(PP8!#t}Pz0 zy9n=qty#7BV$aE*1)yid%a3$Lm}AQIVGifvU3&bo zFF;*mlR8VKs+~o)7yX=n{J7_I)z2vO`k3QqA+Q*MFse758h9VkT)cPQb7B#Ba_8#z z9P8f_NnqoAgnT2(C2$bCzHxnqlcOprDTD2b4UL2lG&5BpK=x?D2IcJ?zB@LoFtRDe zVen(v>PX1U4x;_s2+0)`iqI|N5O}y#@@%U={>1&ccVOi&Gi&AA6f~v6@uR}8zs`fG zCBEeT^4;Xp5$a~8ha6>IwLDK)D3R)6HF-j1vpdu*iRy5o{n!j5K%$X!^n)bV2T$9@ z2GT$8*Gmxw#jxa~b{Z@6++Oa#{U+ZM_^y20vjgr0Z+LGwKb-a5RH?n&nak3w>y9A4 zlQpvfBhUsDp~@u}0`78*Oi~$!#}V5$-`8ud8V%9_vcfaPszyizFE7=?Iw9c<773%>9Q5dw2M?<>ih zVhbZEs9PEM_!)y~*fE}gNb91JVF4ohO|Z|33?cbi`RC!lmXcA z%0>@tiT9r66^~4uf;nSgMN^MPB&d|6tfr2LKDI)wy4aad7$K`o$i=&`08&IjO6!cx zDmouS(0>uhU4qw`gI(PKwp6W|*3TO^XBRT|?-dO$;ueZo^T^RiY&GvIG3Js}IF7>S zvv9JX;o+>nRa%M&h~2f2hgon@ksfkW;Oi1amTREM#`-sd04BKstlCxpbgT~stQE`X z#Om%IdQH{)S z$Ai-x@#u#e^=$h)l4KMVR(Dea&-dDfQwwy`aPsHGSbDp+h?!4hgov|5yo~tvpX5)p z;ytt3m)mcXeOBQg^36Stq|L+se)oK}o6d&swrIUJQMbBHpyZs*8egzKczud|qXQmT zs)j6<@S`)&J`hm@7op;tTp-3V3JYwPmxS?Zl%4*tD{<-16Tg?me|jHFMNHEHM|yfr zgPuf^UW*K*p3NV}?TMfct8qhIK!!jJJG!Wq8Jk!(J!pidYF~V|<(1-_mS;8fT3}^v>_HStgPW>LAZ?c zzXvXH1i#S1{67YmI8*iWr+<$Q-49*s*mr*le znNc&BrzM8sraoOzOi6J@`X@$wMq}--CCy=ny=@hSJ{x=|Oz}hWy)o^IVG34?=2z?W zKr9`Gnl^swa2Uq0ZI-RX(WU}-auwW|JIblWoK?zLLU*gsQEA3l$hFk)5*sc5t#SVK z6$1VSB~6WRY5D~dL9CKcOT&3yn76z~Kg?@kYiF!SH$X7x9{A#nLlHrlP_0YP zES(mIFw;dN#Seq{A)XGCQrzj+k-W{DyA3xagoM9x7$tqmZInc5DBieJwMW3=v~sXE z_`}nh>On$#%BSt^>eVy@TrY!>FMw4c=yks|J$lzH4WZrS2DhlWiu=G--T3w}D2UyN zqOK}&Bv2umjOYm{k`z1Pe_A|v0Rh^UFxp^RqdP>Ojusl5D>9GwS-Bpi^27ilh*&G* z(|L)ZwIoTdq51E0w^seM^)6FE8bD;Q#)I)AF5_oT*#_^x+!AY}z=g1yW6(GY~_ScHZ>m-;rJ3AN)nctev5be}hx zXG5F&AuVoHu&pYdmtK7}{IJ>Cm0S1nBtpT9$y>Ji^;FbRZd~9jJmB*wrOTIGh5~cJ zb?A>c=xlA}9DXW5fS(_)v9%$2S0}$eJxx6LMhibfqL-KHO~m@^A+aCgTXYxXz^Rme zA$CbQb}PBS*3|o(s7D1um#|b>t$Xo;-S>d|jp*@xoRGGY12I|0_n>u^+QELfShLOt z^%sG_&bfV)LqFK*%QC+Ekhd_K{b#4mW+6J*7m2ET9T&UAzhBhrk7%VfcKAvoJqjGe zK_RhGb^%>?ks48&LH%j)B&HtiGO z#+}v5@O$qaZ%dGaOke5>3NK-^fx`I0x0*siQ%pk6PNHj{YASHx?I<;Rx`t@ zqckE-R%;SIF2!Bb1Ng_g4=_u{aOR8|A`a;#Obdq8yWC{Y;x2v~vQ@2xD!B8SrAHIb zsb;=+8z2`rYzGjr-oCV4GqbYZ5fLj8o|%sX{*(r;g15kYZhp~%HbiUr&^ED&Dv)$d(qZ=_SEl#01*s*Lw&wGB)A zvps_+4`f$V-{ER{duni@F7%s&dw=HwSpeiKSDs@MB6+Z(?E|m>HXld`aukhk(w5Cd zn9CUNj(1$!IKN@P7;LUY5=pQ?Q53qOerG?y_qF~K>LDZE(7ge$MoIo7{00z3&W~lk z7rjU4p6vDlwQDSDRm09PKr)JiPGA-#@q&I0!k8O-UNkB3JTY62LVs>UN-dlGlYU(l zUr1ppHHfSe~EZfI)#NYpm-^3z^qapm@O zGDqI1nmZS3u#+RUYFyKq)igz6Pb997IQ#Kl&l0`#W$Hqm6 zHcLm};KF-*woe-bir2)Cq$)K$A^|n9gNk2-sxY67)hV1DhDrenB4)S~y)1?HtKa1| z8^)gZ(|wvz_635m|Jsuud0O%x8{VgQ>3O{7D}KC!KbE~Pua1#7JWreBy>ucPld#iO ztizIn{@C6EG{2YBF9n6ai_{h8b%CC|r*OQj4ipVEcT@3vU(ST)hS+iHAbUI%xn02^ z(29}$%J=EhK4(D$k1)8-r+liOm%0JKCUQ_aR=NEGYUl-gim7@II@!)b7NmEFO?Ml6lfhq+kq=6{AY09-W(7EKq&{Msf z8D-iGNasEef1{;2W0-6tOf``|URDB0>B}-}nu9H?vX!((E8`vmCV&-c7#gg!v;T>5 zQLa5WRRFzyqmhkxX5}~na2JR5gk(J(PA}x95g2H&d4DS;mkg*v6u%Uqx&^BDQsHw6FYO~KadTWQ%Tu_i3GD}8GdA63M%{9&q zj|DdS(GwFBhYu&||4QZ@nRk6GG;JcEjz+JsC%y2_F1**d!n$zb>PabA_ z*`)C|kFq~bx2Y(`sltRNi*{-+7Tg$t3>dMbfuwm424}ahB5VabO(Z)SI(&hs3Y6UE zw~mT&-HtpR_NJLdVD7!)p2^P41&^d@?iPss;()M8Xb0cH$b2xzPum8!FM$jif<|84{t>spkCGqDN{!6g zJ5pl@zUK-SGxe9ph(c1JsCPU0$@9hP3J_JThfcAK5q+r&_?FQOFApkMXI*r?sJm?| zxE14 zrHAE|?|@#l{o_DFeb&1R;=|U4_R7#k-_GPW+#Xz|Q8InWx^Shvo!@`-hhVR%8X6}d z6vIZC_A6XZbX*{IwkI3a;2df$$_EG^=p)K>z0Js;n|#L&PVLpE6(2TS6QSVl@nw00 zgs1ee(061XJ}>T@iLJ`gVF)ONc@Kf2jaEF7QxkbLE5V-z?L^eE}f3K=s~A z%xNz@BenNjEXM7rW=i$654qt^ozYuMOG^g~Uz}^Gf{8)!WpUMITp(|SMi94aV(=Z86VE!I4vMzGwMG*EQp=V?SSUPDRos_80S z!F<)jGZ|4FeG^9h`kRGTaR-H91Baq?(o#g-Deao&$CO3}B`QEQy5 zz#0W?E{jGKLq7>qm>jbl*d|+WsR4nYm0j?6W~kriox4Y^S74fPT%{n)O@Mc~@xiWx-T}c_Epg#cYM^ z)7(EO%IpXNQ9&FD+V88Znh!cn&+Rc>KOW?rM`*6n05||(#!5B_#4i9)l#@Jbne|F8 zxvbrl7K8;G_tV~_bALk|iz8!il&L8*)Q2PLLG(MNcbNoA4GOhmXE{yaJWpi{wmno< z5I_Zfl6GL;^SR1#yZ)`{G5!^m{hu?@GIO}Q515J5zkmN;mgSyw%;Dq&y^edL@@%*d z<7}di$~jlf?JT4HlI!c`WbfMR3II!h2h(!e46rTlA(xL!1d;W_()qG!p|id41Or0r%^rK4d-2$?>T5!cu_ObslvTIMMht2n0X!}su>~#pO@0qa$~5Fyw0PiJ`mPM= zg21F3fMsW~y_w*+y9WH|9~fbqxak6;m2`1>U@|(JRL;M1<>18)eLZVY_pue!^8@1p zQgL(o+DS=~8B$|ZDFk1qn8@?5TtwoQrS+e6f~7#OvzZ)aFJj~{U{rLnpQy7cMa}CUb7xHh)wM~yk4cZ7*iZNewnIdcpU?%iks(h zjaH$jwY7%T(F4c5MG&+SqS~=KRE&Tv*xY?UaGLWvd=sabcd2>csvx$?-%M2ulLc zbHnp*Y6Tyjf5>4A;-a9Q4 zFvp(c6y2pwr^GT0tob=JRXahPB}d91j-P;-#1F z03sm>q)eUS2D$RQt}q-C;`n1)N(p*0KI*Z!ZrK=&)FT5`=6UP&RZbC&J<8GhEG=$S zF((|Rn!xF*kY@adfqvZ=^{2>s`fJ(BO8Vbm+HI(pzJ$AMSW1~gvz&l)7_2ab3JXaN zhK39h1AKtNR8^WHQl=OTxT+wfZD<}ap$4**`nG~wji$#oGYFoPGe0yS7ZWG~Y!u*S zI*gn7K~`k^QOf?iooxmskZuy}w~^X)f@*c*zogKB(!}X$$?}(S<(m$RB?)6iGTS92 zmfOF}yOY$Prol#sDzx@GHMK94$SB@>j+7V`*NoYW`~s7XOa!{E5r9w|m=uY_hQjB} zC#?=z$MBl5t?Bw69=N|b=YJb>(||EILFo-wYYPDfM#`C|wi^Bpb4C1NFd_xaMp4E} zed#bVTs}XoH*fJe6pDae3YcC6NyA1oG&yj{$xbkiZA!Mzm?zhWkL2 z17HqXUPI4Nr&Mw5S}cRLen*Xq$oNdl^isyppTOazn^Ur#|3oF`?f~bDZc&8 zmWDo)^ix7oNsYjtd3? z6RFQCZHq=81iGoK{_LqfKbq{u%#Q+0GU>lvFp%$SHu#ZNs4ZXCjj%eZ8>nLfmrLO3 z_jg>nJP1W4cdJU(72^Y5l`U&y>8YZ`GAFhS48l@+lRqhVz)=3HM2F?urq)zm=a1=P zmvdVt9`@A4SXHmTVPxDU69Qxe>81!xeEw$RjMXB`p zDVZSt{}_2ma{^KGPzf3ME0&q?Ux2FxWZ(Dzuc`NqHeUdg3kqs@ZyR7{RN2=vfq1w| z!(l#Hv^H=UV*3l3C@M8D0e1Tpx5@CwHk_)0jOtZ?0HC()2+rx94n~Q~{yzgVxp6^5 zGT$@#e_M{vu=&T|qO$L;i_E0>S+r05JCOeTu|_4SPa8{z&i)K1q|_BLYj975WvUkrtC!ob5%q*afFHAYn*b?HUB(E!hEGUo{)C23=KV>IHHTAO-dh zAl1EV1T~-Wd4d=+U^}(R%zO-PeJ$3W=I(whY*yAY`)tzKU8ii)z7~ijkd;!gnt>Ap z%hB~A{%pZu`T7G1zX0T9PJG;Ha52=R22{{zlhE^E$1;-0AL)*w#8p z=q(jVK8_r$f@pl&4XtXnQ?&$?C0qvkhwvknncrfqHJiKDBilUU(>~0~iiw*dNMMh` z`|GkS#j+nZo&xviCG|g34xL_Kh+tuZQ(4wJnLr>QNuZnVX^!4L~YvZ7#;=XbEsJF4yk3CMk@$o*JNymk|C2DotdP7NN0@*cmI5Q_Z<^_ zXm;2oaZx~+l&QG(L*Q0=_|r)M{7;;e4AJpOzlSomnHOyzzEjgt12OJw&xkyB_RBuK z;YC5N=b@mu=S!+L$z^hzW_5G--z=Rn-;4!3sgc`+`bsq5*^;=e?oA!Ss2AVrZnQ~A zSXGXd0$Q!@zSWdxFMb-ck}#XI*{WTu0?2Mh2eIEsHIb>F+MmY|&sg=!fv#KymB2*j zBMRt2w}ifBo@6{~fk!GViqZ~C0C)`OXt>xSeZFo9AC%>5x=o=KfdrmdDs&O2d;vOT z!_rnPv0D6ayaso3SK7lM%hW=u)|=_t7f|^dD4yye-JK!tHt2=IK7Hzli4kkCLjArO zY=zr)9-8z#Q&TEu&P^l6i0&ph)MdXBEJQW8wgBp<(f9<+FoEBZMPAv)3xjkIe5tub_Jsa6nf6 zb&+rEzYK^5d%!_p3J;_KET)T(9^p(kd;ZbP${h;-s{arBg1J>XGyYyUQ(8abDs~%# oL*p*IQ#yfs_+MkWdi9!Ua`)(`-KsR8Ab~*YD%#J=m0o}R58G>?6aWAK diff --git a/docs/assets/img/1563698714557.fa1eeb1c.png b/docs/assets/img/1563698714557.fa1eeb1c.png deleted file mode 100644 index cd358a166aedd985795a17ba8f21551a20cd21c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26417 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 b<7vlCdPb+eeX>3blR;DzHSc2(kKg Kuboard 监听了 Kubernetes 集群的事件变化,您无需刷新页面,即可在工作负载编辑器的容器组界面区域看到该容器相关的最新事件。")]),t._v(" "),r("p",[t._v("通过 Kubernetes 事件所指示出来的问题,通常是集群本身配置的问题,或者是创建工作负载时的参数填写问题,解决这样的问题需要的是 Kubernetes 集群相关的知识和背景,"),r("strong",[t._v("通常运维人员可以独立解决此类问题")]),t._v("。")]),t._v(" "),r("p",[r("img",{attrs:{src:a(319),alt:"image-20190722224029397"}})]),t._v(" "),r("h3",{attrs:{id:"日志:-容器运行时产生的错误"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#日志:-容器运行时产生的错误","aria-hidden":"true"}},[t._v("#")]),t._v(" 日志: 容器运行时产生的错误")]),t._v(" "),r("p",[t._v("如下图所示,假设您已进入工作负载查看界面:")]),t._v(" "),r("p",[r("img",{attrs:{src:a(320),alt:"image-20190722225347491"}})]),t._v(" "),r("ul",[r("li",[t._v("点击其中的 "),r("em",[r("strong",[t._v("日志")])]),t._v(" 按钮")])]),t._v(" "),r("p",[t._v("可查看该容器的运行时日志,如下图所示:")]),t._v(" "),r("p",[r("img",{attrs:{src:a(321),alt:"image-20190722225454029"}})]),t._v(" "),r("p",[r("strong",[t._v("容器运行时问题定位及解决")])]),t._v(" "),r("p",[t._v("日志所指示出来的错误,可能有两类原因:")]),t._v(" "),r("ul",[r("li",[t._v("将其容器部署到 Kubernetes 时,参数配置填写错误")]),t._v(" "),r("li",[t._v("容器内应用程序自身的 BUG")])]),t._v(" "),r("p",[t._v("无论是上述何种原因,运维人员如果请开发人员介入,一起排查这里问题,效果会好很多。")]),t._v(" "),r("h3",{attrs:{id:"终端:-通过交互式命令,在容器内诊断问题"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#终端:-通过交互式命令,在容器内诊断问题","aria-hidden":"true"}},[t._v("#")]),t._v(" 终端: 通过交互式命令,在容器内诊断问题")]),t._v(" "),r("ul",[r("li",[r("p",[t._v("点击 "),r("em",[r("strong",[t._v("终端")])]),t._v(" 按钮")]),t._v(" "),r("p",[t._v("可进入该容器的交互式命令界面")])])]),t._v(" "),r("p",[r("img",{attrs:{src:a(322),alt:"image-20190722230511430"}})]),t._v(" "),r("p",[r("strong",[t._v("适用场景")])]),t._v(" "),r("p",[t._v("在交互式终端里,"),r("strong",[t._v("运维人员")]),t._v("可以:")]),t._v(" "),r("ul",[r("li",[t._v("通过 ping / curl 等命令,测试网络连通性,测试 Kubernetes 的服务 DNS 解析是否正确")]),t._v(" "),r("li",[t._v("通过 export 命令检查该容器的环境变量的设置是否正确")])]),t._v(" "),r("p",[r("strong",[t._v("开发人员")]),t._v(" 可以:")]),t._v(" "),r("ul",[r("li",[t._v("通过 ls / cat / vi 等命令,查看该容器是否包含了最新的代码变更")]),t._v(" "),r("li",[t._v("通过 vi 等命令,临时对容器中的配置文件进行修改,并在验证这种修改有效之后,才将其正式更新到代码库")])])])},[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[10],{315:function(t,e,a){t.exports=a.p+"assets/img/image-20190722223454676.b545b43f.png"},316:function(t,e,a){t.exports=a.p+"assets/img/image-20190722223551308.ed106a2a.png"},317:function(t,e,a){t.exports=a.p+"assets/img/image-20190722223605920.3e762b29.png"},318:function(t,e,a){t.exports=a.p+"assets/img/image-20190722231246540.ebf13194.png"},319:function(t,e,a){t.exports=a.p+"assets/img/image-20190722224029397.abc44209.png"},320:function(t,e,a){t.exports=a.p+"assets/img/image-20190722225347491.984fabae.png"},321:function(t,e,a){t.exports=a.p+"assets/img/image-20190722225454029.73400267.png"},322:function(t,e,a){t.exports=a.p+"assets/img/image-20190722230511430.ed459354.png"},372:function(t,e,a){"use strict";a.r(e);var r=a(0),s=Object(r.a)({},function(){var t=this,e=t.$createElement,r=t._self._c||e;return r("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[r("h1",{attrs:{id:"工作负载"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#工作负载","aria-hidden":"true"}},[t._v("#")]),t._v(" 工作负载")]),t._v(" "),r("h2",{attrs:{id:"创建-查看-编辑工作负载"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#创建-查看-编辑工作负载","aria-hidden":"true"}},[t._v("#")]),t._v(" 创建/查看/编辑工作负载")]),t._v(" "),r("p",[t._v("请参考 "),r("a",{attrs:{href:"/guide/example/busybox"}},[t._v("创建 busybox")])]),t._v(" "),r("h2",{attrs:{id:"伸缩"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#伸缩","aria-hidden":"true"}},[t._v("#")]),t._v(" 伸缩")]),t._v(" "),r("p",[t._v("伸缩操作,通过调整工作负载的 replicas 大小,来控制该工作负载运行容器组的数量。")]),t._v(" "),r("ul",[r("li",[t._v("假设您已进入工作负载查看界面,如下图所示:")])]),t._v(" "),r("p",[r("img",{attrs:{src:a(315),alt:"image-20190722223454676"}})]),t._v(" "),r("ul",[r("li",[r("p",[t._v("点击 "),r("em",[r("strong",[t._v("伸缩")])]),t._v(" 按钮")]),t._v(" "),r("p",[t._v("填写表单")]),t._v(" "),r("p",[t._v("副本数: 目标容器组数量")])])]),t._v(" "),r("p",[r("img",{attrs:{src:a(316),alt:"image-20190722223551308"}})]),t._v(" "),r("ul",[r("li",[r("p",[t._v("点击 "),r("em",[r("strong",[t._v("确定")])]),t._v(" 按钮")]),t._v(" "),r("p",[t._v("等待,知道伸缩操作执行完毕。")])])]),t._v(" "),r("p",[r("img",{attrs:{src:a(317),alt:"image-20190722223605920"}})]),t._v(" "),r("h2",{attrs:{id:"删除容器组"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#删除容器组","aria-hidden":"true"}},[t._v("#")]),t._v(" 删除容器组")]),t._v(" "),r("ul",[r("li",[r("p",[t._v("点击 "),r("em",[r("strong",[t._v("删除容器组")])]),t._v(" 按钮")]),t._v(" "),r("p",[t._v("可删除该容器组。")]),t._v(" "),r("ul",[r("li",[r("p",[t._v("容器组被删除之后,Kubernetes Workload Controller 将要重新创建一个容器组,用于替代被删除的容器组;被删除容器组原有的状态将丢失,新容器组重新从 镜像中加载启动;")])]),t._v(" "),r("li",[r("p",[t._v("Kuboard 的工作负载编辑器,默认将容器组的 imagePullPolicy 设置为 Alwarys,因此,每次在容器组启动的时候,Kubenetes 都会尝试从镜像仓库中抓取最新镜像;")])])])])]),t._v(" "),r("p",[r("img",{attrs:{src:a(318),alt:"image-20190722231246540"}})]),t._v(" "),r("h2",{attrs:{id:"诊断问题"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#诊断问题","aria-hidden":"true"}},[t._v("#")]),t._v(" 诊断问题")]),t._v(" "),r("p",[t._v("在诊断工作负载的问题时,Kuboard主要提供三种手段:")]),t._v(" "),r("h3",{attrs:{id:"事件:-kubernetes-部署相关问题"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#事件:-kubernetes-部署相关问题","aria-hidden":"true"}},[t._v("#")]),t._v(" 事件: Kubernetes 部署相关问题")]),t._v(" "),r("p",[t._v("如下图所示,图中提示")]),t._v(" "),r("blockquote",[r("p",[t._v("错误内容:Error: ErrImagePull 该容器组抓取镜像失败")]),t._v(" "),r("p",[t._v("失败原因:pull access denied for busy-box, repository does not exist or may require 'docker login'")])]),t._v(" "),r("p",[t._v("对于这样的错误,需要技术人员检查:")]),t._v(" "),r("ul",[r("li",[t._v("容器所在节点与镜像仓库之间的网络连通性")]),t._v(" "),r("li",[t._v("容器镜像拼写是否正确")]),t._v(" "),r("li",[t._v("如果为私有仓库,是否在工作负载编辑器中正确配置了 docker 仓库用户名密码")])]),t._v(" "),r("p",[t._v("!> Kuboard 监听了 Kubernetes 集群的事件变化,您无需刷新页面,即可在工作负载编辑器的容器组界面区域看到该容器相关的最新事件。")]),t._v(" "),r("p",[t._v("通过 Kubernetes 事件所指示出来的问题,通常是集群本身配置的问题,或者是创建工作负载时的参数填写问题,解决这样的问题需要的是 Kubernetes 集群相关的知识和背景,"),r("strong",[t._v("通常运维人员可以独立解决此类问题")]),t._v("。")]),t._v(" "),r("p",[r("img",{attrs:{src:a(319),alt:"image-20190722224029397"}})]),t._v(" "),r("h3",{attrs:{id:"日志:-容器运行时产生的错误"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#日志:-容器运行时产生的错误","aria-hidden":"true"}},[t._v("#")]),t._v(" 日志: 容器运行时产生的错误")]),t._v(" "),r("p",[t._v("如下图所示,假设您已进入工作负载查看界面:")]),t._v(" "),r("p",[r("img",{attrs:{src:a(320),alt:"image-20190722225347491"}})]),t._v(" "),r("ul",[r("li",[t._v("点击其中的 "),r("em",[r("strong",[t._v("日志")])]),t._v(" 按钮")])]),t._v(" "),r("p",[t._v("可查看该容器的运行时日志,如下图所示:")]),t._v(" "),r("p",[r("img",{attrs:{src:a(321),alt:"image-20190722225454029"}})]),t._v(" "),r("p",[r("strong",[t._v("容器运行时问题定位及解决")])]),t._v(" "),r("p",[t._v("日志所指示出来的错误,可能有两类原因:")]),t._v(" "),r("ul",[r("li",[t._v("将其容器部署到 Kubernetes 时,参数配置填写错误")]),t._v(" "),r("li",[t._v("容器内应用程序自身的 BUG")])]),t._v(" "),r("p",[t._v("无论是上述何种原因,运维人员如果请开发人员介入,一起排查这里问题,效果会好很多。")]),t._v(" "),r("h3",{attrs:{id:"终端:-通过交互式命令,在容器内诊断问题"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#终端:-通过交互式命令,在容器内诊断问题","aria-hidden":"true"}},[t._v("#")]),t._v(" 终端: 通过交互式命令,在容器内诊断问题")]),t._v(" "),r("ul",[r("li",[r("p",[t._v("点击 "),r("em",[r("strong",[t._v("终端")])]),t._v(" 按钮")]),t._v(" "),r("p",[t._v("可进入该容器的交互式命令界面")])])]),t._v(" "),r("p",[r("img",{attrs:{src:a(322),alt:"image-20190722230511430"}})]),t._v(" "),r("p",[r("strong",[t._v("适用场景")])]),t._v(" "),r("p",[t._v("在交互式终端里,"),r("strong",[t._v("运维人员")]),t._v("可以:")]),t._v(" "),r("ul",[r("li",[t._v("通过 ping / curl 等命令,测试网络连通性,测试 Kubernetes 的服务 DNS 解析是否正确")]),t._v(" "),r("li",[t._v("通过 export 命令检查该容器的环境变量的设置是否正确")])]),t._v(" "),r("p",[r("strong",[t._v("开发人员")]),t._v(" 可以:")]),t._v(" "),r("ul",[r("li",[t._v("通过 ls / cat / vi 等命令,查看该容器是否包含了最新的代码变更")]),t._v(" "),r("li",[t._v("通过 vi 等命令,临时对容器中的配置文件进行修改,并在验证这种修改有效之后,才将其正式更新到代码库")])])])},[],!1,null,null,null);e.default=s.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/11.2c820498.js b/docs/assets/js/11.ff32352c.js similarity index 91% rename from docs/assets/js/11.2c820498.js rename to docs/assets/js/11.ff32352c.js index d937289..198aad4 100644 --- a/docs/assets/js/11.2c820498.js +++ b/docs/assets/js/11.ff32352c.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[11],{141:function(t,e,i){},143:function(t,e,i){},208:function(t,e,i){t.exports=i.p+"assets/img/kuboard_qq.45e78dbf.png"},209:function(t,e,i){t.exports=i.p+"assets/img/image-20190723104717575.f44900d3.png"},210:function(t,e,i){"use strict";var s=i(141);i.n(s).a},212:function(t,e,i){"use strict";var s=i(143);i.n(s).a},352:function(t,e,i){"use strict";var s=i(161),a=i(208),n=i.n(a),r=i(209),o=i.n(r),l={name:"Sidebar",props:["items"],components:{SidebarLinks:s.default},data:function(){return{kuboard_qq_img:n.a,demo_img:o.a}}},c=(i(210),i(0)),v=Object(c.a)(l,function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("aside",{staticClass:"sidebar"},[t._t("top"),t._v(" "),i("SidebarLinks",{attrs:{depth:0,items:t.items}}),t._v(" "),t._t("bottom"),t._v(" "),i("div",{staticStyle:{"text-align":"center","margin-top":"5vh"}},[i("strong",[t._v("在线体验")]),t._v(" "),i("div",[i("a",{attrs:{target:"_blank",href:"http://demo.eip.work/#/login?isReadOnly=true&token="+t.$site.themeConfig.kuboardToken}},[i("p",[i("img",{staticStyle:{width:"226px",height:"127px"},attrs:{src:t.demo_img}})])])]),t._v(" "),t._m(0),t._v(" "),i("strong",[t._v("在线提问")]),t._v(" "),i("p",[i("img",{attrs:{src:t.kuboard_qq_img}})])])],2)},[function(){var t=this.$createElement,e=this._self._c||t;return e("p",[e("strong",[e("a",{attrs:{href:"https://github.com/shaohq/kuboard-issues/issues",target:"_blank"}},[this._v("提交 BUG")])])])}],!1,null,null,null);e.a=v.exports},354:function(t,e,i){"use strict";i.r(e);i(38);var s={components:{ParentLayout:i(351).a},methods:{activeLinkStyle:function(t){return 0===this.$page.path.indexOf(t)?"border-bottom: 2px solid #0b85ff;":""}}},a=(i(212),i(0)),n=Object(a.a)(s,function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("ParentLayout",[i("div",{attrs:{slot:"sidebar-top"},slot:"sidebar-top"},[i("div",{staticStyle:{"text-align":"center","margin-top":"20px"}},[i("div",{staticClass:"side-nav-item",style:t.activeLinkStyle("/overview/")+"margin-left: 0;"},[i("a",{staticClass:"nav-link",attrs:{href:"/overview/"}},[t._v("简介")])]),t._v(" "),i("div",{staticClass:"side-nav-item",style:t.activeLinkStyle("/install/")},[i("a",{staticClass:"nav-link router-link-exact-active router-link-active",attrs:{href:"/install/install-dashboard"}},[t._v("安装")])]),t._v(" "),i("div",{staticClass:"side-nav-item",style:t.activeLinkStyle("/guide/")},[i("a",{staticClass:"nav-link",attrs:{href:"/guide/"}},[t._v("使用")])]),t._v(" "),i("div",{staticClass:"side-nav-item",style:t.activeLinkStyle("/micro-service/")},[i("a",{staticClass:"nav-link",attrs:{href:"/micro-service/spring-cloud/"}},[t._v("微服务")])])])]),t._v(" "),i("div",{staticClass:"bottom-description",attrs:{slot:"page-bottom"},slot:"page-bottom"},[t._v("Copyright © 2019-present Huanqing Shao")])])},[],!1,null,"61e379b0",null);e.default=n.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[11],{141:function(t,e,i){},143:function(t,e,i){},208:function(t,e,i){t.exports=i.p+"assets/img/kuboard_qq.45e78dbf.png"},209:function(t,e,i){t.exports=i.p+"assets/img/image-20190723104717575.f44900d3.png"},210:function(t,e,i){"use strict";var s=i(141);i.n(s).a},212:function(t,e,i){"use strict";var s=i(143);i.n(s).a},347:function(t,e,i){"use strict";var s=i(161),a=i(208),n=i.n(a),r=i(209),o=i.n(r),l={name:"Sidebar",props:["items"],components:{SidebarLinks:s.default},data:function(){return{kuboard_qq_img:n.a,demo_img:o.a}}},c=(i(210),i(0)),v=Object(c.a)(l,function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("aside",{staticClass:"sidebar"},[t._t("top"),t._v(" "),i("SidebarLinks",{attrs:{depth:0,items:t.items}}),t._v(" "),t._t("bottom"),t._v(" "),i("div",{staticStyle:{"text-align":"center","margin-top":"5vh"}},[i("strong",[t._v("在线体验")]),t._v(" "),i("div",[i("a",{attrs:{target:"_blank",href:"http://demo.eip.work/#/login?isReadOnly=true&token="+t.$site.themeConfig.kuboardToken}},[i("p",[i("img",{staticStyle:{width:"226px",height:"127px"},attrs:{src:t.demo_img}})])])]),t._v(" "),t._m(0),t._v(" "),i("strong",[t._v("在线提问")]),t._v(" "),i("p",[i("img",{attrs:{src:t.kuboard_qq_img}})])])],2)},[function(){var t=this.$createElement,e=this._self._c||t;return e("p",[e("strong",[e("a",{attrs:{href:"https://github.com/shaohq/kuboard-issues/issues",target:"_blank"}},[this._v("提交 BUG")])])])}],!1,null,null,null);e.a=v.exports},350:function(t,e,i){"use strict";i.r(e);i(38);var s={components:{ParentLayout:i(346).a},methods:{activeLinkStyle:function(t){return 0===this.$page.path.indexOf(t)?"border-bottom: 2px solid #0b85ff;":""}}},a=(i(212),i(0)),n=Object(a.a)(s,function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("ParentLayout",[i("div",{attrs:{slot:"sidebar-top"},slot:"sidebar-top"},[i("div",{staticStyle:{"text-align":"center","margin-top":"20px"}},[i("div",{staticClass:"side-nav-item",style:t.activeLinkStyle("/overview/")+"margin-left: 0;"},[i("a",{staticClass:"nav-link",attrs:{href:"/overview/"}},[t._v("简介")])]),t._v(" "),i("div",{staticClass:"side-nav-item",style:t.activeLinkStyle("/install/")},[i("a",{staticClass:"nav-link router-link-exact-active router-link-active",attrs:{href:"/install/install-dashboard"}},[t._v("安装")])]),t._v(" "),i("div",{staticClass:"side-nav-item",style:t.activeLinkStyle("/guide/")},[i("a",{staticClass:"nav-link",attrs:{href:"/guide/"}},[t._v("使用")])]),t._v(" "),i("div",{staticClass:"side-nav-item",style:t.activeLinkStyle("/micro-service/")},[i("a",{staticClass:"nav-link",attrs:{href:"/micro-service/spring-cloud/"}},[t._v("微服务")])])])]),t._v(" "),i("div",{staticClass:"bottom-description",attrs:{slot:"page-bottom"},slot:"page-bottom"},[t._v("Copyright © 2019-present Huanqing Shao")])])},[],!1,null,"61e379b0",null);e.default=n.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/12.34ad378a.js b/docs/assets/js/12.c2300662.js similarity index 98% rename from docs/assets/js/12.34ad378a.js rename to docs/assets/js/12.c2300662.js index c80e961..5af79ea 100644 --- a/docs/assets/js/12.34ad378a.js +++ b/docs/assets/js/12.c2300662.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[12],{216:function(t,a,e){t.exports=e.p+"assets/img/image-20190723105606081.bc471512.png"},217:function(t,a,e){t.exports=e.p+"assets/img/image-20190723105644937.968b1660.png"},218:function(t,a,e){t.exports=e.p+"assets/img/image-20190723105722999.5b6c9bae.png"},219:function(t,a,e){t.exports=e.p+"assets/img/image-20190723105748435.1cb3ad0d.png"},220:function(t,a,e){t.exports=e.p+"assets/img/image-20190723105809872.61add376.png"},221:function(t,a,e){t.exports=e.p+"assets/img/image-20190723105830318.43414c56.png"},392:function(t,a,e){"use strict";e.r(a);var s=e(0),r=Object(s.a)({},function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"名称空间管理"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#名称空间管理","aria-hidden":"true"}},[t._v("#")]),t._v(" 名称空间管理")]),t._v(" "),s("h2",{attrs:{id:"创建名称空间"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#创建名称空间","aria-hidden":"true"}},[t._v("#")]),t._v(" 创建名称空间")]),t._v(" "),s("h3",{attrs:{id:"前提"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#前提","aria-hidden":"true"}},[t._v("#")]),t._v(" 前提")]),t._v(" "),s("p",[t._v("必须具备如下条件:")]),t._v(" "),s("ul",[s("li",[t._v("Kubernetes 集群")]),t._v(" "),s("li",[t._v("已在集群中安装 Kuboard")]),t._v(" "),s("li",[t._v("已进入 Kuboard 操作界面 "),s("a",{attrs:{href:"/install/install-dashboard"}},[t._v("安装并进入 Kuboard")])])]),t._v(" "),s("p",[t._v("假设您已经进入了 Kuboard 界面,如下图所示:")]),t._v(" "),s("p",[s("img",{attrs:{src:e(216),alt:"image-20190723105606081"}})]),t._v(" "),s("h3",{attrs:{id:"准备"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#准备","aria-hidden":"true"}},[t._v("#")]),t._v(" 准备")]),t._v(" "),s("ul",[s("li",[t._v("点击 "),s("em",[s("strong",[t._v("创建")])]),t._v(" 按钮,创建名称空间")])]),t._v(" "),s("p",[t._v("并填写:")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("字段名称")]),t._v(" "),s("th",[t._v("填写内容")]),t._v(" "),s("th",[t._v("说明")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[t._v("名称")]),t._v(" "),s("td",[t._v("example")]),t._v(" "),s("td",[t._v("Kubernetes 的 namespace 名称")])])])]),t._v(" "),s("p",[s("img",{attrs:{src:e(217),alt:"image-20190723105644937"}})]),t._v(" "),s("ul",[s("li",[t._v("点击 "),s("em",[s("strong",[t._v("保存")])])])]),t._v(" "),s("p",[s("img",{attrs:{src:e(218),alt:"image-20190723105722999"}})]),t._v(" "),s("ul",[s("li",[t._v("点击 "),s("em",[s("strong",[t._v("应用")])])])]),t._v(" "),s("p",[s("img",{attrs:{src:e(219),alt:"image-20190723105748435"}})]),t._v(" "),s("ul",[s("li",[s("p",[t._v("点击 "),s("em",[s("strong",[t._v("完成")])])]),t._v(" "),s("p",[t._v("此时可在名称空间列表中查看到刚刚创建好的名称空间 "),s("em",[t._v("example")])])])]),t._v(" "),s("p",[s("img",{attrs:{src:e(220),alt:"image-20190723105809872"}})]),t._v(" "),s("ul",[s("li",[s("p",[t._v("点击 "),s("em",[t._v("example")]),t._v(" 名称空间")]),t._v(" "),s("p",[t._v("点击 "),s("em",[t._v("example")]),t._v(" 名称空间后,可进入该名称空间的页面。刚刚初始化的名称空间的界面布局如下图所示:")])])]),t._v(" "),s("p",[s("img",{attrs:{src:e(221),alt:"image-20190723105830318"}})])])},[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[12],{216:function(t,a,e){t.exports=e.p+"assets/img/image-20190723105606081.bc471512.png"},217:function(t,a,e){t.exports=e.p+"assets/img/image-20190723105644937.968b1660.png"},218:function(t,a,e){t.exports=e.p+"assets/img/image-20190723105722999.5b6c9bae.png"},219:function(t,a,e){t.exports=e.p+"assets/img/image-20190723105748435.1cb3ad0d.png"},220:function(t,a,e){t.exports=e.p+"assets/img/image-20190723105809872.61add376.png"},221:function(t,a,e){t.exports=e.p+"assets/img/image-20190723105830318.43414c56.png"},388:function(t,a,e){"use strict";e.r(a);var s=e(0),r=Object(s.a)({},function(){var t=this,a=t.$createElement,s=t._self._c||a;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"名称空间管理"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#名称空间管理","aria-hidden":"true"}},[t._v("#")]),t._v(" 名称空间管理")]),t._v(" "),s("h2",{attrs:{id:"创建名称空间"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#创建名称空间","aria-hidden":"true"}},[t._v("#")]),t._v(" 创建名称空间")]),t._v(" "),s("h3",{attrs:{id:"前提"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#前提","aria-hidden":"true"}},[t._v("#")]),t._v(" 前提")]),t._v(" "),s("p",[t._v("必须具备如下条件:")]),t._v(" "),s("ul",[s("li",[t._v("Kubernetes 集群")]),t._v(" "),s("li",[t._v("已在集群中安装 Kuboard")]),t._v(" "),s("li",[t._v("已进入 Kuboard 操作界面 "),s("a",{attrs:{href:"/install/install-dashboard"}},[t._v("安装并进入 Kuboard")])])]),t._v(" "),s("p",[t._v("假设您已经进入了 Kuboard 界面,如下图所示:")]),t._v(" "),s("p",[s("img",{attrs:{src:e(216),alt:"image-20190723105606081"}})]),t._v(" "),s("h3",{attrs:{id:"准备"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#准备","aria-hidden":"true"}},[t._v("#")]),t._v(" 准备")]),t._v(" "),s("ul",[s("li",[t._v("点击 "),s("em",[s("strong",[t._v("创建")])]),t._v(" 按钮,创建名称空间")])]),t._v(" "),s("p",[t._v("并填写:")]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("字段名称")]),t._v(" "),s("th",[t._v("填写内容")]),t._v(" "),s("th",[t._v("说明")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[t._v("名称")]),t._v(" "),s("td",[t._v("example")]),t._v(" "),s("td",[t._v("Kubernetes 的 namespace 名称")])])])]),t._v(" "),s("p",[s("img",{attrs:{src:e(217),alt:"image-20190723105644937"}})]),t._v(" "),s("ul",[s("li",[t._v("点击 "),s("em",[s("strong",[t._v("保存")])])])]),t._v(" "),s("p",[s("img",{attrs:{src:e(218),alt:"image-20190723105722999"}})]),t._v(" "),s("ul",[s("li",[t._v("点击 "),s("em",[s("strong",[t._v("应用")])])])]),t._v(" "),s("p",[s("img",{attrs:{src:e(219),alt:"image-20190723105748435"}})]),t._v(" "),s("ul",[s("li",[s("p",[t._v("点击 "),s("em",[s("strong",[t._v("完成")])])]),t._v(" "),s("p",[t._v("此时可在名称空间列表中查看到刚刚创建好的名称空间 "),s("em",[t._v("example")])])])]),t._v(" "),s("p",[s("img",{attrs:{src:e(220),alt:"image-20190723105809872"}})]),t._v(" "),s("ul",[s("li",[s("p",[t._v("点击 "),s("em",[t._v("example")]),t._v(" 名称空间")]),t._v(" "),s("p",[t._v("点击 "),s("em",[t._v("example")]),t._v(" 名称空间后,可进入该名称空间的页面。刚刚初始化的名称空间的界面布局如下图所示:")])])]),t._v(" "),s("p",[s("img",{attrs:{src:e(221),alt:"image-20190723105830318"}})])])},[],!1,null,null,null);a.default=r.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/13.f80da918.js b/docs/assets/js/13.d081ddb3.js similarity index 99% rename from docs/assets/js/13.f80da918.js rename to docs/assets/js/13.d081ddb3.js index 651a3aa..19db5ac 100644 --- a/docs/assets/js/13.f80da918.js +++ b/docs/assets/js/13.d081ddb3.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[13],{305:function(a,t,s){a.exports=s.p+"assets/img/image-20190721085144545.25f25dda.png"},306:function(a,t,s){a.exports=s.p+"assets/img/image-20190721090118542.46c31055.png"},307:function(a,t,s){a.exports=s.p+"assets/img/image-20190721090753742.28d009f3.png"},308:function(a,t,s){a.exports=s.p+"assets/img/image-20190721090840925.a5231632.png"},309:function(a,t,s){a.exports=s.p+"assets/img/image-20190721090935511.80fb3864.png"},310:function(a,t,s){a.exports=s.p+"assets/img/image-20190721091005130.330e9f1d.png"},374:function(a,t,s){"use strict";s.r(t);var e=s(0),r=Object(e.a)({},function(){var a=this,t=a.$createElement,e=a._self._c||t;return e("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[e("h1",{attrs:{id:"多环境"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#多环境","aria-hidden":"true"}},[a._v("#")]),a._v(" 多环境")]),a._v(" "),e("p",[a._v("在实际开发项目的过程中,我们必然会碰到如下场景:")]),a._v(" "),e("ol",[e("li",[a._v("创建一个开发环境,并在其中完成应用部署")]),a._v(" "),e("li",[a._v("创建一个测试环境,再次完成应用部署")]),a._v(" "),e("li",[a._v("创建一个准上线环境,再次完成应用部署")]),a._v(" "),e("li",[a._v("创建一个生产环境,再次完成应用部署")])]),a._v(" "),e("p",[a._v("当我们的微服务系统较为复杂时,一个环境中可能需要部署许多(几十个甚至更多)的微服务部署单元,这个时候,重复在多套环境中执行部署任务就会变得容易出错。")]),a._v(" "),e("p",[a._v("Kuboard 针对这种场景,提供了导出配置、导入配置的功能,以便运维人员可以轻易的复制多套部署环境。")]),a._v(" "),e("h2",{attrs:{id:"导出配置"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#导出配置","aria-hidden":"true"}},[a._v("#")]),a._v(" 导出配置")]),a._v(" "),e("h3",{attrs:{id:"前提"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#前提","aria-hidden":"true"}},[a._v("#")]),a._v(" 前提")]),a._v(" "),e("p",[a._v("必须满足如下条件:")]),a._v(" "),e("ul",[e("li",[a._v("您已经通过 kuboard 的 "),e("a",{attrs:{href:"/guide/namespace/workload"}},[a._v("创建工作负载")]),a._v(" 功能完成了微服务的部署。")])]),a._v(" "),e("blockquote",[e("p",[a._v("部署微服务过程中,您还可能用到 kuboard 的配置编辑功能、Secrets 编辑功能 等。")])]),a._v(" "),e("p",[a._v("假设您已完成微服务部署,并已进入 namespace 界面,如下图所示:")]),a._v(" "),e("p",[e("img",{attrs:{src:s(305),alt:"image-20190721085144545"}})]),a._v(" "),e("h3",{attrs:{id:"操作步骤"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#操作步骤","aria-hidden":"true"}},[a._v("#")]),a._v(" 操作步骤")]),a._v(" "),e("ul",[e("li",[a._v("点击 "),e("em",[e("strong",[a._v("导出工作负载")])]),a._v(" "),e("ul",[e("li",[a._v("选择要导出的分层")]),a._v(" "),e("li",[a._v("点击 "),e("em",[e("strong",[a._v("刷新")])])]),a._v(" "),e("li",[a._v("选择要导出的工作负载")])])])]),a._v(" "),e("p",[e("img",{attrs:{src:s(306),alt:"image-20190721090118542"}})]),a._v(" "),e("ul",[e("li",[e("p",[a._v("点击 "),e("em",[e("strong",[a._v("下一步")])])]),a._v(" "),e("p",[a._v("选择要导出的配置(configMap)信息")])])]),a._v(" "),e("p",[e("img",{attrs:{src:s(307),alt:"image-20190721090753742"}})]),a._v(" "),e("ul",[e("li",[e("p",[a._v("点击 "),e("em",[e("strong",[a._v("下一步")])])]),a._v(" "),e("p",[a._v("选择要导出的 Secrets")])])]),a._v(" "),e("p",[e("img",{attrs:{src:s(308),alt:"image-20190721090840925"}})]),a._v(" "),e("ul",[e("li",[a._v("点击 "),e("em",[e("strong",[a._v("下一步")])])])]),a._v(" "),e("p",[e("img",{attrs:{src:s(309),alt:"image-20190721090935511"}})]),a._v(" "),e("ul",[e("li",[a._v("点击 "),e("em",[e("strong",[a._v("确定")])])])]),a._v(" "),e("p",[e("img",{attrs:{src:s(310),alt:"image-20190721091005130"}})]),a._v(" "),e("ul",[e("li",[e("p",[a._v("查看已导出文件")]),a._v(" "),e("p",[a._v("导出文件的命名格式为 kuboard_namespace_date_time.yaml,例如:")]),a._v(" "),e("p",[a._v("kuboard_example_2019_07_21_09_09_47.yaml")]),a._v(" "),e("p",[a._v("导出文件的内容如下所示:")]),a._v(" "),e("div",{staticClass:"language-yaml extra-class"},[e("pre",{pre:!0,attrs:{class:"language-yaml"}},[e("code",[e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("---")]),a._v("\n"),e("span",{pre:!0,attrs:{class:"token key atrule"}},[a._v("apiVersion")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v(" apps/v1\n"),e("span",{pre:!0,attrs:{class:"token key atrule"}},[a._v("kind")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v(" StatefulSet\n"),e("span",{pre:!0,attrs:{class:"token key atrule"}},[a._v("metadata")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v("\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[a._v("namespace")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v(" example\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[a._v("name")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v(" cloud"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("-")]),a._v("eureka\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[a._v("annotations")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v("\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[a._v("k8s.eip.work/workload")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v(" cloud"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("-")]),a._v("eureka\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[a._v("k8s.eip.work/displayName")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v(" 服务注册\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[a._v("k8s.eip.work/service")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v(" ClusterIP\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[a._v("k8s.eip.work/ingress")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[a._v("'true'")]),a._v("\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[a._v("labels")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v("\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[a._v("k8s.eip.work/layer")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v(" cloud\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[a._v("k8s.eip.work/name")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v(" cloud"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("-")]),a._v("eureka\n"),e("span",{pre:!0,attrs:{class:"token key atrule"}},[a._v("spec")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v("\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[a._v("selector")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v("\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[a._v("matchLabels")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v("\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[a._v("k8s.eip.work/layer")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v(" cloud\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[a._v("k8s.eip.work/name")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v(" cloud"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("-")]),a._v("eureka\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[a._v("template")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v("\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[a._v("metadata")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("...")]),a._v("\n")])])])])]),a._v(" "),e("blockquote",[e("p",[a._v("该文件可以通过 kubectl apply -f 命令直接执行,但是建议使用 kuboard 进行导入,以便在导入时在线编辑在特定于新环境的配置信息。")])]),a._v(" "),e("h2",{attrs:{id:"导入配置"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#导入配置","aria-hidden":"true"}},[a._v("#")]),a._v(" 导入配置")]),a._v(" "),e("h3",{attrs:{id:"前提-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#前提-2","aria-hidden":"true"}},[a._v("#")]),a._v(" 前提")]),a._v(" "),e("p",[a._v("您已经通过 kuboard 导出了配置文件,或者从别处获取到 kuboard 导出的配置文件")]),a._v(" "),e("h3",{attrs:{id:"操作步骤-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#操作步骤-2","aria-hidden":"true"}},[a._v("#")]),a._v(" 操作步骤")]),a._v(" "),e("p",[a._v("请参考 "),e("a",{attrs:{href:"/guide/example/import"}},[a._v("导入 example 微服务")])])])},[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[13],{305:function(a,t,s){a.exports=s.p+"assets/img/image-20190721085144545.25f25dda.png"},306:function(a,t,s){a.exports=s.p+"assets/img/image-20190721090118542.46c31055.png"},307:function(a,t,s){a.exports=s.p+"assets/img/image-20190721090753742.28d009f3.png"},308:function(a,t,s){a.exports=s.p+"assets/img/image-20190721090840925.a5231632.png"},309:function(a,t,s){a.exports=s.p+"assets/img/image-20190721090935511.80fb3864.png"},310:function(a,t,s){a.exports=s.p+"assets/img/image-20190721091005130.330e9f1d.png"},368:function(a,t,s){"use strict";s.r(t);var e=s(0),r=Object(e.a)({},function(){var a=this,t=a.$createElement,e=a._self._c||t;return e("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[e("h1",{attrs:{id:"多环境"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#多环境","aria-hidden":"true"}},[a._v("#")]),a._v(" 多环境")]),a._v(" "),e("p",[a._v("在实际开发项目的过程中,我们必然会碰到如下场景:")]),a._v(" "),e("ol",[e("li",[a._v("创建一个开发环境,并在其中完成应用部署")]),a._v(" "),e("li",[a._v("创建一个测试环境,再次完成应用部署")]),a._v(" "),e("li",[a._v("创建一个准上线环境,再次完成应用部署")]),a._v(" "),e("li",[a._v("创建一个生产环境,再次完成应用部署")])]),a._v(" "),e("p",[a._v("当我们的微服务系统较为复杂时,一个环境中可能需要部署许多(几十个甚至更多)的微服务部署单元,这个时候,重复在多套环境中执行部署任务就会变得容易出错。")]),a._v(" "),e("p",[a._v("Kuboard 针对这种场景,提供了导出配置、导入配置的功能,以便运维人员可以轻易的复制多套部署环境。")]),a._v(" "),e("h2",{attrs:{id:"导出配置"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#导出配置","aria-hidden":"true"}},[a._v("#")]),a._v(" 导出配置")]),a._v(" "),e("h3",{attrs:{id:"前提"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#前提","aria-hidden":"true"}},[a._v("#")]),a._v(" 前提")]),a._v(" "),e("p",[a._v("必须满足如下条件:")]),a._v(" "),e("ul",[e("li",[a._v("您已经通过 kuboard 的 "),e("a",{attrs:{href:"/guide/namespace/workload"}},[a._v("创建工作负载")]),a._v(" 功能完成了微服务的部署。")])]),a._v(" "),e("blockquote",[e("p",[a._v("部署微服务过程中,您还可能用到 kuboard 的配置编辑功能、Secrets 编辑功能 等。")])]),a._v(" "),e("p",[a._v("假设您已完成微服务部署,并已进入 namespace 界面,如下图所示:")]),a._v(" "),e("p",[e("img",{attrs:{src:s(305),alt:"image-20190721085144545"}})]),a._v(" "),e("h3",{attrs:{id:"操作步骤"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#操作步骤","aria-hidden":"true"}},[a._v("#")]),a._v(" 操作步骤")]),a._v(" "),e("ul",[e("li",[a._v("点击 "),e("em",[e("strong",[a._v("导出工作负载")])]),a._v(" "),e("ul",[e("li",[a._v("选择要导出的分层")]),a._v(" "),e("li",[a._v("点击 "),e("em",[e("strong",[a._v("刷新")])])]),a._v(" "),e("li",[a._v("选择要导出的工作负载")])])])]),a._v(" "),e("p",[e("img",{attrs:{src:s(306),alt:"image-20190721090118542"}})]),a._v(" "),e("ul",[e("li",[e("p",[a._v("点击 "),e("em",[e("strong",[a._v("下一步")])])]),a._v(" "),e("p",[a._v("选择要导出的配置(configMap)信息")])])]),a._v(" "),e("p",[e("img",{attrs:{src:s(307),alt:"image-20190721090753742"}})]),a._v(" "),e("ul",[e("li",[e("p",[a._v("点击 "),e("em",[e("strong",[a._v("下一步")])])]),a._v(" "),e("p",[a._v("选择要导出的 Secrets")])])]),a._v(" "),e("p",[e("img",{attrs:{src:s(308),alt:"image-20190721090840925"}})]),a._v(" "),e("ul",[e("li",[a._v("点击 "),e("em",[e("strong",[a._v("下一步")])])])]),a._v(" "),e("p",[e("img",{attrs:{src:s(309),alt:"image-20190721090935511"}})]),a._v(" "),e("ul",[e("li",[a._v("点击 "),e("em",[e("strong",[a._v("确定")])])])]),a._v(" "),e("p",[e("img",{attrs:{src:s(310),alt:"image-20190721091005130"}})]),a._v(" "),e("ul",[e("li",[e("p",[a._v("查看已导出文件")]),a._v(" "),e("p",[a._v("导出文件的命名格式为 kuboard_namespace_date_time.yaml,例如:")]),a._v(" "),e("p",[a._v("kuboard_example_2019_07_21_09_09_47.yaml")]),a._v(" "),e("p",[a._v("导出文件的内容如下所示:")]),a._v(" "),e("div",{staticClass:"language-yaml extra-class"},[e("pre",{pre:!0,attrs:{class:"language-yaml"}},[e("code",[e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("---")]),a._v("\n"),e("span",{pre:!0,attrs:{class:"token key atrule"}},[a._v("apiVersion")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v(" apps/v1\n"),e("span",{pre:!0,attrs:{class:"token key atrule"}},[a._v("kind")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v(" StatefulSet\n"),e("span",{pre:!0,attrs:{class:"token key atrule"}},[a._v("metadata")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v("\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[a._v("namespace")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v(" example\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[a._v("name")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v(" cloud"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("-")]),a._v("eureka\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[a._v("annotations")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v("\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[a._v("k8s.eip.work/workload")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v(" cloud"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("-")]),a._v("eureka\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[a._v("k8s.eip.work/displayName")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v(" 服务注册\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[a._v("k8s.eip.work/service")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v(" ClusterIP\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[a._v("k8s.eip.work/ingress")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[a._v("'true'")]),a._v("\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[a._v("labels")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v("\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[a._v("k8s.eip.work/layer")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v(" cloud\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[a._v("k8s.eip.work/name")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v(" cloud"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("-")]),a._v("eureka\n"),e("span",{pre:!0,attrs:{class:"token key atrule"}},[a._v("spec")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v("\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[a._v("selector")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v("\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[a._v("matchLabels")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v("\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[a._v("k8s.eip.work/layer")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v(" cloud\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[a._v("k8s.eip.work/name")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v(" cloud"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("-")]),a._v("eureka\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[a._v("template")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v("\n "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[a._v("metadata")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v("\n "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("...")]),a._v("\n")])])])])]),a._v(" "),e("blockquote",[e("p",[a._v("该文件可以通过 kubectl apply -f 命令直接执行,但是建议使用 kuboard 进行导入,以便在导入时在线编辑在特定于新环境的配置信息。")])]),a._v(" "),e("h2",{attrs:{id:"导入配置"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#导入配置","aria-hidden":"true"}},[a._v("#")]),a._v(" 导入配置")]),a._v(" "),e("h3",{attrs:{id:"前提-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#前提-2","aria-hidden":"true"}},[a._v("#")]),a._v(" 前提")]),a._v(" "),e("p",[a._v("您已经通过 kuboard 导出了配置文件,或者从别处获取到 kuboard 导出的配置文件")]),a._v(" "),e("h3",{attrs:{id:"操作步骤-2"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#操作步骤-2","aria-hidden":"true"}},[a._v("#")]),a._v(" 操作步骤")]),a._v(" "),e("p",[a._v("请参考 "),e("a",{attrs:{href:"/guide/example/import"}},[a._v("导入 example 微服务")])])])},[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/14.0c1161b9.js b/docs/assets/js/14.a39ad74c.js similarity index 98% rename from docs/assets/js/14.0c1161b9.js rename to docs/assets/js/14.a39ad74c.js index be7de1b..0a63a5d 100644 --- a/docs/assets/js/14.0c1161b9.js +++ b/docs/assets/js/14.a39ad74c.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[14],{111:function(t,a,_){t.exports=_.p+"assets/img/image-20190721110355464.25f25dda.png"},297:function(t,a,_){t.exports=_.p+"assets/img/image-20190721112353077.b907aa89.png"},298:function(t,a,_){t.exports=_.p+"assets/img/image-20190721112624128.7aa6b8f1.png"},299:function(t,a,_){t.exports=_.p+"assets/img/image-20190721113050608.97e0f110.png"},300:function(t,a,_){t.exports=_.p+"assets/img/image-20190721113155991.f3ecd62f.png"},361:function(t,a,_){"use strict";_.r(a);var v=_(0),e=Object(v.a)({},function(){var t=this,a=t.$createElement,v=t._self._c||a;return v("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[v("h1",{attrs:{id:"配置"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#配置","aria-hidden":"true"}},[t._v("#")]),t._v(" 配置")]),t._v(" "),v("p",[t._v("配置: Kubernetes ConfigMap")]),t._v(" "),v("h1",{attrs:{id:"查看配置列表"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#查看配置列表","aria-hidden":"true"}},[t._v("#")]),t._v(" 查看配置列表")]),t._v(" "),v("p",[t._v("假设您已进入名称空间界面,如下图所示:")]),t._v(" "),v("p",[v("img",{attrs:{src:_(111),alt:"image-20190721110355464"}})]),t._v(" "),v("p",[t._v("配置列表位于图中左侧中部,点击 "),v("em",[v("strong",[t._v("放大")])]),t._v(" 按钮,可以将列表显示到更大的区域,如下图所示:")]),t._v(" "),v("blockquote",[v("p",[t._v("点击 "),v("strong",[t._v("配置")]),t._v(" 可以刷新该列表")])]),t._v(" "),v("p",[v("img",{attrs:{src:_(297),alt:"image-20190721112353077"}})]),t._v(" "),v("h1",{attrs:{id:"创建配置"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#创建配置","aria-hidden":"true"}},[t._v("#")]),t._v(" 创建配置")]),t._v(" "),v("ul",[v("li",[v("p",[t._v("点击 "),v("em",[v("strong",[t._v("配置 / 创建")])])]),t._v(" "),v("p",[t._v("填写表单如下所示:")])])]),t._v(" "),v("table",[v("thead",[v("tr",[v("th",[t._v("字段名称")]),t._v(" "),v("th",[t._v("填写内容")]),t._v(" "),v("th",[t._v("说明")])])]),t._v(" "),v("tbody",[v("tr",[v("td",[t._v("名称")]),t._v(" "),v("td",[t._v("my-config-map")]),t._v(" "),v("td")]),t._v(" "),v("tr",[v("td",[t._v("配置标签 - 名称")]),t._v(" "),v("td",[t._v("my-config-map")]),t._v(" "),v("td")]),t._v(" "),v("tr",[v("td",[t._v("配置标签 - 内容")]),t._v(" "),v("td",[t._v("configmap")]),t._v(" "),v("td")]),t._v(" "),v("tr",[v("td",[t._v("配置数据 - 名称")]),t._v(" "),v("td",[t._v("EUREKA_URL")]),t._v(" "),v("td")]),t._v(" "),v("tr",[v("td",[t._v("配置数据 - 内容")]),t._v(" "),v("td",[t._v("http://cloud-eureka:9200/eureka")]),t._v(" "),v("td")])])]),t._v(" "),v("p",[v("img",{attrs:{src:_(298),alt:"image-20190721112624128"}})]),t._v(" "),v("ul",[v("li",[v("p",[t._v("点击 "),v("em",[v("strong",[t._v("保存")])])]),t._v(" "),v("p",[t._v("配置信息创建成功")])])]),t._v(" "),v("p",[v("img",{attrs:{src:_(299),alt:"image-20190721113050608"}})]),t._v(" "),v("h1",{attrs:{id:"查看-编辑-删除-配置"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#查看-编辑-删除-配置","aria-hidden":"true"}},[t._v("#")]),t._v(" 查看/编辑/删除 配置")]),t._v(" "),v("ul",[v("li",[t._v("点击列表中的 "),v("em",[v("strong",[t._v("my-config-map")])])])]),t._v(" "),v("p",[v("img",{attrs:{src:_(300),alt:"image-20190721113155991"}})]),t._v(" "),v("p",[t._v("编辑、删除操作可直接按照提示完成")])])},[],!1,null,null,null);a.default=e.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[14],{111:function(t,a,_){t.exports=_.p+"assets/img/image-20190721110355464.25f25dda.png"},297:function(t,a,_){t.exports=_.p+"assets/img/image-20190721112353077.b907aa89.png"},298:function(t,a,_){t.exports=_.p+"assets/img/image-20190721112624128.7aa6b8f1.png"},299:function(t,a,_){t.exports=_.p+"assets/img/image-20190721113050608.97e0f110.png"},300:function(t,a,_){t.exports=_.p+"assets/img/image-20190721113155991.f3ecd62f.png"},355:function(t,a,_){"use strict";_.r(a);var v=_(0),e=Object(v.a)({},function(){var t=this,a=t.$createElement,v=t._self._c||a;return v("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[v("h1",{attrs:{id:"配置"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#配置","aria-hidden":"true"}},[t._v("#")]),t._v(" 配置")]),t._v(" "),v("p",[t._v("配置: Kubernetes ConfigMap")]),t._v(" "),v("h1",{attrs:{id:"查看配置列表"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#查看配置列表","aria-hidden":"true"}},[t._v("#")]),t._v(" 查看配置列表")]),t._v(" "),v("p",[t._v("假设您已进入名称空间界面,如下图所示:")]),t._v(" "),v("p",[v("img",{attrs:{src:_(111),alt:"image-20190721110355464"}})]),t._v(" "),v("p",[t._v("配置列表位于图中左侧中部,点击 "),v("em",[v("strong",[t._v("放大")])]),t._v(" 按钮,可以将列表显示到更大的区域,如下图所示:")]),t._v(" "),v("blockquote",[v("p",[t._v("点击 "),v("strong",[t._v("配置")]),t._v(" 可以刷新该列表")])]),t._v(" "),v("p",[v("img",{attrs:{src:_(297),alt:"image-20190721112353077"}})]),t._v(" "),v("h1",{attrs:{id:"创建配置"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#创建配置","aria-hidden":"true"}},[t._v("#")]),t._v(" 创建配置")]),t._v(" "),v("ul",[v("li",[v("p",[t._v("点击 "),v("em",[v("strong",[t._v("配置 / 创建")])])]),t._v(" "),v("p",[t._v("填写表单如下所示:")])])]),t._v(" "),v("table",[v("thead",[v("tr",[v("th",[t._v("字段名称")]),t._v(" "),v("th",[t._v("填写内容")]),t._v(" "),v("th",[t._v("说明")])])]),t._v(" "),v("tbody",[v("tr",[v("td",[t._v("名称")]),t._v(" "),v("td",[t._v("my-config-map")]),t._v(" "),v("td")]),t._v(" "),v("tr",[v("td",[t._v("配置标签 - 名称")]),t._v(" "),v("td",[t._v("my-config-map")]),t._v(" "),v("td")]),t._v(" "),v("tr",[v("td",[t._v("配置标签 - 内容")]),t._v(" "),v("td",[t._v("configmap")]),t._v(" "),v("td")]),t._v(" "),v("tr",[v("td",[t._v("配置数据 - 名称")]),t._v(" "),v("td",[t._v("EUREKA_URL")]),t._v(" "),v("td")]),t._v(" "),v("tr",[v("td",[t._v("配置数据 - 内容")]),t._v(" "),v("td",[t._v("http://cloud-eureka:9200/eureka")]),t._v(" "),v("td")])])]),t._v(" "),v("p",[v("img",{attrs:{src:_(298),alt:"image-20190721112624128"}})]),t._v(" "),v("ul",[v("li",[v("p",[t._v("点击 "),v("em",[v("strong",[t._v("保存")])])]),t._v(" "),v("p",[t._v("配置信息创建成功")])])]),t._v(" "),v("p",[v("img",{attrs:{src:_(299),alt:"image-20190721113050608"}})]),t._v(" "),v("h1",{attrs:{id:"查看-编辑-删除-配置"}},[v("a",{staticClass:"header-anchor",attrs:{href:"#查看-编辑-删除-配置","aria-hidden":"true"}},[t._v("#")]),t._v(" 查看/编辑/删除 配置")]),t._v(" "),v("ul",[v("li",[t._v("点击列表中的 "),v("em",[v("strong",[t._v("my-config-map")])])])]),t._v(" "),v("p",[v("img",{attrs:{src:_(300),alt:"image-20190721113155991"}})]),t._v(" "),v("p",[t._v("编辑、删除操作可直接按照提示完成")])])},[],!1,null,null,null);a.default=e.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/15.bd6e3f06.js b/docs/assets/js/15.6b271638.js similarity index 98% rename from docs/assets/js/15.bd6e3f06.js rename to docs/assets/js/15.6b271638.js index 773d4d3..5d7e211 100644 --- a/docs/assets/js/15.bd6e3f06.js +++ b/docs/assets/js/15.6b271638.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[15],{111:function(t,a,v){t.exports=v.p+"assets/img/image-20190721110355464.25f25dda.png"},301:function(t,a,v){t.exports=v.p+"assets/img/image-20190721113708689.f9b42a11.png"},302:function(t,a,v){t.exports=v.p+"assets/img/image-20190721113810235.59d55672.png"},303:function(t,a,v){t.exports=v.p+"assets/img/image-20190721114112644.526de44c.png"},304:function(t,a,v){t.exports=v.p+"assets/img/image-20190721114211751.e1a07115.png"},369:function(t,a,v){"use strict";v.r(a);var _=v(0),e=Object(_.a)({},function(){var t=this,a=t.$createElement,_=t._self._c||a;return _("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[_("h1",{attrs:{id:"存储卷声明"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#存储卷声明","aria-hidden":"true"}},[t._v("#")]),t._v(" 存储卷声明")]),t._v(" "),_("p",[t._v("存储卷声明: Kubernetes Persistent Volume Claim")]),t._v(" "),_("h1",{attrs:{id:"查看存储卷声明列表"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#查看存储卷声明列表","aria-hidden":"true"}},[t._v("#")]),t._v(" 查看存储卷声明列表")]),t._v(" "),_("p",[t._v("假设您已进入名称空间界面,如下图所示:")]),t._v(" "),_("p",[_("img",{attrs:{src:v(111),alt:"image-20190721110355464"}})]),t._v(" "),_("p",[t._v("存储卷声明列表位于图中左下角,点击 "),_("em",[_("strong",[t._v("放大")])]),t._v(" 按钮,可以将列表显示到更大的区域,如下图所示:")]),t._v(" "),_("blockquote",[_("p",[t._v("点击 "),_("strong",[t._v("存储卷声明")]),t._v(" 可以刷新该列表")])]),t._v(" "),_("p",[_("img",{attrs:{src:v(301),alt:"image-20190721113708689"}})]),t._v(" "),_("h1",{attrs:{id:"创建存储卷声明"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#创建存储卷声明","aria-hidden":"true"}},[t._v("#")]),t._v(" 创建存储卷声明")]),t._v(" "),_("ul",[_("li",[_("p",[t._v("点击 "),_("em",[_("strong",[t._v("存储卷声明 / 创建")])])]),t._v(" "),_("p",[t._v("填写表单如下:")])])]),t._v(" "),_("table",[_("thead",[_("tr",[_("th",[t._v("字段名称")]),t._v(" "),_("th",[t._v("填写内容")]),t._v(" "),_("th",[t._v("说明")])])]),t._v(" "),_("tbody",[_("tr",[_("td",[t._v("存储卷声明")]),t._v(" "),_("td",[t._v("my-pvc")]),t._v(" "),_("td")]),t._v(" "),_("tr",[_("td",[t._v("存储类")]),t._v(" "),_("td",[t._v("cluster-storage")]),t._v(" "),_("td",[t._v("如果不存在,则需要提前 "),_("a",{attrs:{href:"./guide/cluster/storage?id=%E5%88%9B%E5%BB%BA%E5%AD%98%E5%82%A8%E7%B1%BB"}},[t._v("创建存储类")])])]),t._v(" "),_("tr",[_("td",[t._v("分配模式")]),t._v(" "),_("td",[t._v("动态分配")]),t._v(" "),_("td")]),t._v(" "),_("tr",[_("td",[t._v("读写模式")]),t._v(" "),_("td",[t._v("可被多节点读写")]),t._v(" "),_("td")]),t._v(" "),_("tr",[_("td",[t._v("总量")]),t._v(" "),_("td",[t._v("2Gi")]),t._v(" "),_("td")])])]),t._v(" "),_("p",[_("img",{attrs:{src:v(302),alt:"image-20190721113810235"}})]),t._v(" "),_("ul",[_("li",[_("p",[t._v("点击 "),_("em",[_("strong",[t._v("保存")])])]),t._v(" "),_("p",[t._v("存储卷声明创建成功")])])]),t._v(" "),_("p",[_("img",{attrs:{src:v(303),alt:"image-20190721114112644"}})]),t._v(" "),_("h1",{attrs:{id:"查看-编辑-删除-存储卷声明"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#查看-编辑-删除-存储卷声明","aria-hidden":"true"}},[t._v("#")]),t._v(" 查看/编辑/删除 存储卷声明")]),t._v(" "),_("ul",[_("li",[t._v("点击 "),_("em",[_("strong",[t._v("my-pvc")])])])]),t._v(" "),_("p",[_("img",{attrs:{src:v(304),alt:"image-20190721114211751"}})]),t._v(" "),_("p",[t._v("编辑、删除操作可直接按照提示完成")])])},[],!1,null,null,null);a.default=e.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[15],{111:function(t,a,v){t.exports=v.p+"assets/img/image-20190721110355464.25f25dda.png"},301:function(t,a,v){t.exports=v.p+"assets/img/image-20190721113708689.f9b42a11.png"},302:function(t,a,v){t.exports=v.p+"assets/img/image-20190721113810235.59d55672.png"},303:function(t,a,v){t.exports=v.p+"assets/img/image-20190721114112644.526de44c.png"},304:function(t,a,v){t.exports=v.p+"assets/img/image-20190721114211751.e1a07115.png"},364:function(t,a,v){"use strict";v.r(a);var _=v(0),e=Object(_.a)({},function(){var t=this,a=t.$createElement,_=t._self._c||a;return _("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[_("h1",{attrs:{id:"存储卷声明"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#存储卷声明","aria-hidden":"true"}},[t._v("#")]),t._v(" 存储卷声明")]),t._v(" "),_("p",[t._v("存储卷声明: Kubernetes Persistent Volume Claim")]),t._v(" "),_("h1",{attrs:{id:"查看存储卷声明列表"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#查看存储卷声明列表","aria-hidden":"true"}},[t._v("#")]),t._v(" 查看存储卷声明列表")]),t._v(" "),_("p",[t._v("假设您已进入名称空间界面,如下图所示:")]),t._v(" "),_("p",[_("img",{attrs:{src:v(111),alt:"image-20190721110355464"}})]),t._v(" "),_("p",[t._v("存储卷声明列表位于图中左下角,点击 "),_("em",[_("strong",[t._v("放大")])]),t._v(" 按钮,可以将列表显示到更大的区域,如下图所示:")]),t._v(" "),_("blockquote",[_("p",[t._v("点击 "),_("strong",[t._v("存储卷声明")]),t._v(" 可以刷新该列表")])]),t._v(" "),_("p",[_("img",{attrs:{src:v(301),alt:"image-20190721113708689"}})]),t._v(" "),_("h1",{attrs:{id:"创建存储卷声明"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#创建存储卷声明","aria-hidden":"true"}},[t._v("#")]),t._v(" 创建存储卷声明")]),t._v(" "),_("ul",[_("li",[_("p",[t._v("点击 "),_("em",[_("strong",[t._v("存储卷声明 / 创建")])])]),t._v(" "),_("p",[t._v("填写表单如下:")])])]),t._v(" "),_("table",[_("thead",[_("tr",[_("th",[t._v("字段名称")]),t._v(" "),_("th",[t._v("填写内容")]),t._v(" "),_("th",[t._v("说明")])])]),t._v(" "),_("tbody",[_("tr",[_("td",[t._v("存储卷声明")]),t._v(" "),_("td",[t._v("my-pvc")]),t._v(" "),_("td")]),t._v(" "),_("tr",[_("td",[t._v("存储类")]),t._v(" "),_("td",[t._v("cluster-storage")]),t._v(" "),_("td",[t._v("如果不存在,则需要提前 "),_("a",{attrs:{href:"./guide/cluster/storage?id=%E5%88%9B%E5%BB%BA%E5%AD%98%E5%82%A8%E7%B1%BB"}},[t._v("创建存储类")])])]),t._v(" "),_("tr",[_("td",[t._v("分配模式")]),t._v(" "),_("td",[t._v("动态分配")]),t._v(" "),_("td")]),t._v(" "),_("tr",[_("td",[t._v("读写模式")]),t._v(" "),_("td",[t._v("可被多节点读写")]),t._v(" "),_("td")]),t._v(" "),_("tr",[_("td",[t._v("总量")]),t._v(" "),_("td",[t._v("2Gi")]),t._v(" "),_("td")])])]),t._v(" "),_("p",[_("img",{attrs:{src:v(302),alt:"image-20190721113810235"}})]),t._v(" "),_("ul",[_("li",[_("p",[t._v("点击 "),_("em",[_("strong",[t._v("保存")])])]),t._v(" "),_("p",[t._v("存储卷声明创建成功")])])]),t._v(" "),_("p",[_("img",{attrs:{src:v(303),alt:"image-20190721114112644"}})]),t._v(" "),_("h1",{attrs:{id:"查看-编辑-删除-存储卷声明"}},[_("a",{staticClass:"header-anchor",attrs:{href:"#查看-编辑-删除-存储卷声明","aria-hidden":"true"}},[t._v("#")]),t._v(" 查看/编辑/删除 存储卷声明")]),t._v(" "),_("ul",[_("li",[t._v("点击 "),_("em",[_("strong",[t._v("my-pvc")])])])]),t._v(" "),_("p",[_("img",{attrs:{src:v(304),alt:"image-20190721114211751"}})]),t._v(" "),_("p",[t._v("编辑、删除操作可直接按照提示完成")])])},[],!1,null,null,null);a.default=e.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/16.a9d0c8b0.js b/docs/assets/js/16.f74fb0ee.js similarity index 98% rename from docs/assets/js/16.a9d0c8b0.js rename to docs/assets/js/16.f74fb0ee.js index cb7ce5a..e07141a 100644 --- a/docs/assets/js/16.a9d0c8b0.js +++ b/docs/assets/js/16.f74fb0ee.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[16],{111:function(t,e,r){t.exports=r.p+"assets/img/image-20190721110355464.25f25dda.png"},311:function(t,e,r){t.exports=r.p+"assets/img/image-20190721110543437.8cbe188d.png"},312:function(t,e,r){t.exports=r.p+"assets/img/image-20190721111011798.b9cc73b4.png"},313:function(t,e,r){t.exports=r.p+"assets/img/image-20190721111540512.b0a58451.png"},314:function(t,e,r){t.exports=r.p+"assets/img/image-20190721111642221.f9c06dc3.png"},377:function(t,e,r){"use strict";r.r(e);var s=r(0),v=Object(s.a)({},function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"secrets"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#secrets","aria-hidden":"true"}},[t._v("#")]),t._v(" Secrets")]),t._v(" "),s("h1",{attrs:{id:"查看-secrets-列表"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#查看-secrets-列表","aria-hidden":"true"}},[t._v("#")]),t._v(" 查看 Secrets 列表")]),t._v(" "),s("p",[t._v("假设您已进入名称空间界面,如下图所示:")]),t._v(" "),s("p",[s("img",{attrs:{src:r(111),alt:"image-20190721110355464"}})]),t._v(" "),s("p",[t._v("Secrets 列表位于图中左上角,点击 "),s("em",[s("strong",[t._v("放大")])]),t._v(" 按钮,可以将列表显示到更大的区域,如下图所示:")]),t._v(" "),s("blockquote",[s("p",[t._v("点击 "),s("strong",[t._v("Secrets")]),t._v(" 可以刷新该列表")])]),t._v(" "),s("p",[s("img",{attrs:{src:r(311),alt:"image-20190721110543437"}})]),t._v(" "),s("h1",{attrs:{id:"创建-secrets"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#创建-secrets","aria-hidden":"true"}},[t._v("#")]),t._v(" 创建 Secrets")]),t._v(" "),s("ul",[s("li",[s("p",[t._v("点击 "),s("em",[s("strong",[t._v("Secrets / 创建")])])]),t._v(" "),s("p",[t._v("填写表单如下:")])])]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("字段名称")]),t._v(" "),s("th",[t._v("填写内容")]),t._v(" "),s("th",[t._v("说明")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[t._v("名称")]),t._v(" "),s("td",[t._v("my-docker-repository")]),t._v(" "),s("td",[t._v("Secrets的名称")])]),t._v(" "),s("tr",[s("td",[t._v("类型")]),t._v(" "),s("td",[t._v("docker仓库密码")]),t._v(" "),s("td")]),t._v(" "),s("tr",[s("td",[t._v("docker server")]),t._v(" "),s("td",[t._v("https://my-docker-repository.com")]),t._v(" "),s("td",[t._v("请填写 docker 仓库的全路径")])]),t._v(" "),s("tr",[s("td",[t._v("docker username")]),t._v(" "),s("td",[t._v("my-docker-user")]),t._v(" "),s("td")]),t._v(" "),s("tr",[s("td",[t._v("docker password")]),t._v(" "),s("td",[t._v("mypassword")]),t._v(" "),s("td")])])]),t._v(" "),s("p",[s("img",{attrs:{src:r(312),alt:"image-20190721111011798"}})]),t._v(" "),s("blockquote",[s("p",[t._v("当前 Kuboard 支持如下类型 Secrets 的创建:")]),t._v(" "),s("ul",[s("li",[t._v("docker仓库密码")]),t._v(" "),s("li",[t._v("当您的镜像存储在私有仓库时,您在创建工作负载时可能需要配置 imagePullSecrets 用来访问镜像仓库")]),t._v(" "),s("li",[t._v("Opaque")]),t._v(" "),s("li",[t._v("密码")]),t._v(" "),s("li",[t._v("TLS")]),t._v(" "),s("li",[t._v("当您为 Ingress 启用 HTTPS 时,您需要将域名的的 TLS 证书存入 Secrets")])])]),t._v(" "),s("ul",[s("li",[s("p",[t._v("点击保存")]),t._v(" "),s("p",[t._v("Secrets 创建成功,如下图所示:")])])]),t._v(" "),s("p",[s("img",{attrs:{src:r(313),alt:"image-20190721111540512"}})]),t._v(" "),s("h1",{attrs:{id:"查看-编辑-删除-secrets"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#查看-编辑-删除-secrets","aria-hidden":"true"}},[t._v("#")]),t._v(" 查看/编辑/删除 Secrets")]),t._v(" "),s("ul",[s("li",[t._v("点击 my-docker-repository")])]),t._v(" "),s("p",[s("img",{attrs:{src:r(314),alt:"image-20190721111642221"}})]),t._v(" "),s("p",[t._v("编辑、删除操作可直接按照提示完成")])])},[],!1,null,null,null);e.default=v.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[16],{111:function(t,e,r){t.exports=r.p+"assets/img/image-20190721110355464.25f25dda.png"},311:function(t,e,r){t.exports=r.p+"assets/img/image-20190721110543437.8cbe188d.png"},312:function(t,e,r){t.exports=r.p+"assets/img/image-20190721111011798.b9cc73b4.png"},313:function(t,e,r){t.exports=r.p+"assets/img/image-20190721111540512.b0a58451.png"},314:function(t,e,r){t.exports=r.p+"assets/img/image-20190721111642221.f9c06dc3.png"},390:function(t,e,r){"use strict";r.r(e);var s=r(0),v=Object(s.a)({},function(){var t=this,e=t.$createElement,s=t._self._c||e;return s("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[s("h1",{attrs:{id:"secrets"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#secrets","aria-hidden":"true"}},[t._v("#")]),t._v(" Secrets")]),t._v(" "),s("h1",{attrs:{id:"查看-secrets-列表"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#查看-secrets-列表","aria-hidden":"true"}},[t._v("#")]),t._v(" 查看 Secrets 列表")]),t._v(" "),s("p",[t._v("假设您已进入名称空间界面,如下图所示:")]),t._v(" "),s("p",[s("img",{attrs:{src:r(111),alt:"image-20190721110355464"}})]),t._v(" "),s("p",[t._v("Secrets 列表位于图中左上角,点击 "),s("em",[s("strong",[t._v("放大")])]),t._v(" 按钮,可以将列表显示到更大的区域,如下图所示:")]),t._v(" "),s("blockquote",[s("p",[t._v("点击 "),s("strong",[t._v("Secrets")]),t._v(" 可以刷新该列表")])]),t._v(" "),s("p",[s("img",{attrs:{src:r(311),alt:"image-20190721110543437"}})]),t._v(" "),s("h1",{attrs:{id:"创建-secrets"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#创建-secrets","aria-hidden":"true"}},[t._v("#")]),t._v(" 创建 Secrets")]),t._v(" "),s("ul",[s("li",[s("p",[t._v("点击 "),s("em",[s("strong",[t._v("Secrets / 创建")])])]),t._v(" "),s("p",[t._v("填写表单如下:")])])]),t._v(" "),s("table",[s("thead",[s("tr",[s("th",[t._v("字段名称")]),t._v(" "),s("th",[t._v("填写内容")]),t._v(" "),s("th",[t._v("说明")])])]),t._v(" "),s("tbody",[s("tr",[s("td",[t._v("名称")]),t._v(" "),s("td",[t._v("my-docker-repository")]),t._v(" "),s("td",[t._v("Secrets的名称")])]),t._v(" "),s("tr",[s("td",[t._v("类型")]),t._v(" "),s("td",[t._v("docker仓库密码")]),t._v(" "),s("td")]),t._v(" "),s("tr",[s("td",[t._v("docker server")]),t._v(" "),s("td",[t._v("https://my-docker-repository.com")]),t._v(" "),s("td",[t._v("请填写 docker 仓库的全路径")])]),t._v(" "),s("tr",[s("td",[t._v("docker username")]),t._v(" "),s("td",[t._v("my-docker-user")]),t._v(" "),s("td")]),t._v(" "),s("tr",[s("td",[t._v("docker password")]),t._v(" "),s("td",[t._v("mypassword")]),t._v(" "),s("td")])])]),t._v(" "),s("p",[s("img",{attrs:{src:r(312),alt:"image-20190721111011798"}})]),t._v(" "),s("blockquote",[s("p",[t._v("当前 Kuboard 支持如下类型 Secrets 的创建:")]),t._v(" "),s("ul",[s("li",[t._v("docker仓库密码")]),t._v(" "),s("li",[t._v("当您的镜像存储在私有仓库时,您在创建工作负载时可能需要配置 imagePullSecrets 用来访问镜像仓库")]),t._v(" "),s("li",[t._v("Opaque")]),t._v(" "),s("li",[t._v("密码")]),t._v(" "),s("li",[t._v("TLS")]),t._v(" "),s("li",[t._v("当您为 Ingress 启用 HTTPS 时,您需要将域名的的 TLS 证书存入 Secrets")])])]),t._v(" "),s("ul",[s("li",[s("p",[t._v("点击保存")]),t._v(" "),s("p",[t._v("Secrets 创建成功,如下图所示:")])])]),t._v(" "),s("p",[s("img",{attrs:{src:r(313),alt:"image-20190721111540512"}})]),t._v(" "),s("h1",{attrs:{id:"查看-编辑-删除-secrets"}},[s("a",{staticClass:"header-anchor",attrs:{href:"#查看-编辑-删除-secrets","aria-hidden":"true"}},[t._v("#")]),t._v(" 查看/编辑/删除 Secrets")]),t._v(" "),s("ul",[s("li",[t._v("点击 my-docker-repository")])]),t._v(" "),s("p",[s("img",{attrs:{src:r(314),alt:"image-20190721111642221"}})]),t._v(" "),s("p",[t._v("编辑、删除操作可直接按照提示完成")])])},[],!1,null,null,null);e.default=v.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/17.6c24b518.js b/docs/assets/js/17.ee7f38be.js similarity index 98% rename from docs/assets/js/17.6c24b518.js rename to docs/assets/js/17.ee7f38be.js index e5e4f67..0a2f82e 100644 --- a/docs/assets/js/17.6c24b518.js +++ b/docs/assets/js/17.ee7f38be.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[17],{112:function(s,t,e){s.exports=e.p+"assets/img/image-20190715085036593.55559549.png"},113:function(s,t,e){s.exports=e.p+"assets/img/image2019-07-15_09.01.21.0e0d34f2.png"},346:function(s,t,e){s.exports=e.p+"assets/img/image-20190726214032585.f5bc62e4.png"},347:function(s,t,e){s.exports=e.p+"assets/img/image-20190715101542756.5934c00e.png"},348:function(s,t,e){s.exports=e.p+"assets/img/image-20190715193838012.eca23618.png"},368:function(s,t,e){"use strict";e.r(t);var a=e(0),r=Object(a.a)({},function(){var s=this,t=s.$createElement,a=s._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[a("h1",{attrs:{id:"安装-kubernetes-单master节点"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#安装-kubernetes-单master节点","aria-hidden":"true"}},[s._v("#")]),s._v(" 安装 Kubernetes 单Master节点")]),s._v(" "),a("p",[s._v("对于 Kubernetes 初学者,推荐在阿里云采购如下配置:")]),s._v(" "),a("ul",[a("li",[s._v("3台 2核4G 的ECS(突发性能实例 t5 ecs.t5-c1m2.large或同等配置,单台约 0.4元/小时,停机时不收费)")]),s._v(" "),a("li",[s._v("Cent OS 7.6")])]),s._v(" "),a("p",[a("a",{attrs:{href:"https://promotion.aliyun.com/ntms/yunparter/invite.html?userCode=obezo3pg",target:"_blank",rel:"noopener noreferrer"}},[s._v("领取阿里云最高2000元红包"),a("OutboundLink")],1)]),s._v(" "),a("p",[s._v("Kuboard 的 Live Demo 环境使用的是如下拓扑结构,本文档描述了如何在完成该 demo 环境的搭建。")]),s._v(" "),a("p",[s._v("完成安装后,对应的软件版本为:")]),s._v(" "),a("ul",[a("li",[s._v("Kubernetes v1.15.0")]),s._v(" "),a("li",[s._v("Docker 18.09.7")])]),s._v(" "),a("p",[a("img",{attrs:{src:e(346),alt:"image-20190726214032585"}})]),s._v(" "),a("h2",{attrs:{id:"制作标准机镜像"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#制作标准机镜像","aria-hidden":"true"}},[s._v("#")]),s._v(" 制作标准机镜像")]),s._v(" "),a("p",[s._v("通过使用标准机镜像,可以")]),s._v(" "),a("ul",[a("li",[a("strong",[s._v("避免重复执行对测试机安装必要软件的过程")])]),s._v(" "),a("li",[a("strong",[s._v("以一种相对标准化的过程管理测试机的维护")])])]),s._v(" "),a("p",[s._v("标准机镜像中预装了如下内容:")]),s._v(" "),a("ul",[a("li",[s._v("docker")]),s._v(" "),a("li",[s._v("nfs-utils")]),s._v(" "),a("li",[s._v("kubernetes images")])]),s._v(" "),a("div",{staticClass:"tip custom-block"},[a("ul",[a("li",[s._v("您也可以不制作标准机镜像,而是在三台机器上都执行 "),a("em",[a("strong",[s._v("制作标准机镜像")])]),s._v(" 中的所有操作步骤")])])]),s._v(" "),a("p",[a("strong",[s._v("标准机镜像的制作过程描述如下:")])]),s._v(" "),a("h3",{attrs:{id:"安装docker"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#安装docker","aria-hidden":"true"}},[s._v("#")]),s._v(" 安装docker")]),s._v(" "),a("p",[a("strong",[s._v("卸载旧版本")])]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 在 master 节点和 worker 节点都要执行")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" yum remove docker "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n\tdocker-client "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n\tdocker-client-latest "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n\tdocker-common "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n\tdocker-latest "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n\tdocker-latest-logrotate "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n\tdocker-logrotate "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n\tdocker-selinux "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n\tdocker-engine-selinux "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n\tdocker-engine\n")])])]),a("p",[a("strong",[s._v("下载依赖包及安装包")])]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 在 master 节点和 worker 节点都要执行")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("wget")]),s._v(" https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("wget")]),s._v(" https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-cli-18.09.7-3.el7.x86_64.rpm\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("wget")]),s._v(" https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-18.09.7-3.el7.x86_64.rpm\n")])])]),a("p",[a("strong",[s._v("安装")])]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 在 master 节点和 worker 节点都要执行")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" yum "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("install")]),s._v(" -y containerd.io-1.2.6-3.3.el7.x86_64.rpm\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" yum "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("install")]),s._v(" -y docker-ce-cli-18.09.7-3.el7.x86_64.rpm\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" yum "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("install")]),s._v(" -y docker-ce-18.09.7-3.el7.x86_64.rpm\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" systemctl "),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("enable")]),s._v(" docker\n")])])]),a("p",[a("strong",[s._v("启动 docker 服务")])]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 在 master 节点和 worker 节点都要执行")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" systemctl start docker\n")])])]),a("p",[a("strong",[s._v("检查 docker 版本")])]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 在 master 节点和 worker 节点都要执行")]),s._v("\ndocker version\n")])])]),a("blockquote",[a("p",[a("strong",[s._v("参考文档")])]),s._v(" "),a("p",[s._v("https://docs.docker.com/install/linux/docker-ce/centos/")]),s._v(" "),a("p",[s._v("https://docs.docker.com/install/linux/linux-postinstall/")])]),s._v(" "),a("h3",{attrs:{id:"安装-nfs-utils"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#安装-nfs-utils","aria-hidden":"true"}},[s._v("#")]),s._v(" 安装 nfs-utils")]),s._v(" "),a("p",[a("strong",[s._v("执行安装命令")])]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 在 master 节点和 worker 节点都要执行")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" yum "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("install")]),s._v(" -y nfs-utils\n")])])]),a("p",[s._v("必须先安装 nfs-utils 才能挂载 nfs 网络存储")]),s._v(" "),a("h3",{attrs:{id:"k8s基本配置"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#k8s基本配置","aria-hidden":"true"}},[s._v("#")]),s._v(" K8S基本配置")]),s._v(" "),a("p",[a("strong",[s._v("配置K8S的yum源")])]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 在 master 节点和 worker 节点都要执行")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("cat")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<<")]),s._v("EOF "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v(" /etc/yum.repos.d/kubernetes.repo\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("kubernetes"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("name")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("Kubernetes\n"),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("baseurl")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64\n"),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("enabled")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("gpgcheck")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("0")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("repo_gpgcheck")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("0")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("gpgkey")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg\n http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg\nEOF\n")])])]),a("p",[a("strong",[s._v("关闭 防火墙、SeLinux、swap")])]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 在 master 节点和 worker 节点都要执行")]),s._v("\nsystemctl stop firewalld\nsystemctl disable firewalld\n\nsetenforce "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("0")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("sed")]),s._v(" -i "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"s/SELINUX=enforcing/SELINUX=disabled/g"')]),s._v(" /etc/selinux/config\n\nswapoff -a\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("yes")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("|")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("cp")]),s._v(" /etc/fstab /etc/fstab_bak\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("cat")]),s._v(" /etc/fstab_bak "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("|")]),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("grep")]),s._v(" -v swap "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v(" /etc/fstab\n")])])]),a("p",[a("strong",[s._v("修改 /etc/sysctl.conf")])]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 在 master 节点和 worker 节点都要执行")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("vim")]),s._v(" /etc/sysctl.conf\n")])])]),a("p",[s._v("向其中添加")]),s._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[s._v("net.ipv4.ip_forward = 1\nnet.bridge.bridge-nf-call-ip6tables = 1\nnet.bridge.bridge-nf-call-iptables = 1\n")])])]),a("p",[s._v("如下图所示")]),s._v(" "),a("p",[a("img",{attrs:{src:e(112),alt:"image-20190715085036593",title:":size=600x445"}})]),s._v(" "),a("p",[s._v("执行命令以应用")]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 在 master 节点和 worker 节点都要执行")]),s._v("\nsysctl -p\n")])])]),a("p",[a("strong",[s._v("安装kubelet、kubeadm、kubectl")])]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 在 master 节点和 worker 节点都要执行")]),s._v("\nyum "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("install")]),s._v(" -y kubelet-1.15.0 kubeadm-1.15.0 kubectl-1.15.0\n")])])]),a("p",[a("strong",[s._v("修改docker Cgroup Driver为systemd")])]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 在 master 节点和 worker 节点都要执行")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("vim")]),s._v(" /usr/lib/systemd/system/docker.service\n")])])]),a("p",[s._v("向其中添加")]),s._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[s._v("--exec-opt native.cgroupdriver=systemd\n")])])]),a("p",[s._v("如下图所示")]),s._v(" "),a("p",[a("img",{attrs:{src:e(113),alt:"屏幕快照 2019-07-15 09.01.21",title:":size=1000x326"}})]),s._v(" "),a("p",[s._v("重启 docker")]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 在 master 节点和 worker 节点都要执行")]),s._v("\nsystemctl daemon-reload\nsystemctl restart docker\n")])])]),a("p",[a("strong",[s._v("启动kubelet")])]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 在 master 节点和 worker 节点都要执行")]),s._v("\nsystemctl "),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("enable")]),s._v(" kubelet "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("&&")]),s._v(" systemctl start kubelet\n")])])]),a("p",[a("strong",[s._v("加载 kubernetes 镜像")])]),s._v(" "),a("p",[s._v("由于k8s服务相关镜像在国外镜像源,国内无法访问")]),s._v(" "),a("p",[s._v("执行以下命令添加docker k8s国内镜像源")]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 在 master 节点和 worker 节点都要执行")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("curl")]),s._v(" -sSL https://get.daocloud.io/daotools/set_mirror.sh "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("|")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("sh")]),s._v(" -s http://f1361db2.m.daocloud.io\n\nsystemctl restart docker\n")])])]),a("p",[a("strong",[s._v("拉取k8s相关镜像")])]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 在 master 节点和 worker 节点都要执行")]),s._v("\ndocker pull mirrorgooglecontainers/kube-apiserver:v1.15.0\ndocker pull mirrorgooglecontainers/kube-controller-manager:v1.15.0\ndocker pull mirrorgooglecontainers/kube-scheduler:v1.15.0\ndocker pull mirrorgooglecontainers/kube-proxy:v1.15.0\ndocker pull mirrorgooglecontainers/pause:3.1\ndocker pull mirrorgooglecontainers/etcd:3.3.10\ndocker pull coredns/coredns:1.3.1\n")])])]),a("p",[a("strong",[s._v("更改镜像名为k8s官网镜像")])]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 在 master 节点和 worker 节点都要执行")]),s._v("\ndocker tag d235b23c3570 k8s.gcr.io/kube-proxy:v1.15.0\ndocker tag 201c7a840312 k8s.gcr.io/kube-apiserver:v1.15.0\ndocker tag 2d3813851e87 k8s.gcr.io/kube-scheduler:v1.15.0\ndocker tag 8328bb49b652 k8s.gcr.io/kube-controller-manager:v1.15.0\ndocker tag da86e6ba6ca1 k8s.gcr.io/pause:3.1\ndocker tag eb516548c180 k8s.gcr.io/coredns:1.3.1\ndocker tag 2c4adeb21b4f k8s.gcr.io/etcd:3.3.10\n")])])]),a("p",[a("strong",[s._v("制作镜像")])]),s._v(" "),a("p",[s._v("请参考阿里云基于ECS "),a("a",{attrs:{href:"https://help.aliyun.com/document_detail/35109.html?spm=5176.2020520101.0.0.75fc4df5mtdFmV",target:"_blank",rel:"noopener noreferrer"}},[s._v("制作虚拟机镜像"),a("OutboundLink")],1),s._v(" 的文档")]),s._v(" "),a("h2",{attrs:{id:"初始化-master-节点"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#初始化-master-节点","aria-hidden":"true"}},[s._v("#")]),s._v(" 初始化 master 节点")]),s._v(" "),a("div",{staticClass:"tip custom-block"},[a("p",[s._v("以 root 身份在 demo-master-a-1 机器上执行")])]),s._v(" "),a("p",[a("strong",[s._v("配置 apiserver.demo 的域名")])]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 只在 master 节点执行")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("echo")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"x.x.x.x apiserver.demo"')]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">>")]),s._v(" /etc/hosts\n")])])]),a("div",{staticClass:"warning custom-block"},[a("p",[s._v("请替换其中的 x.x.x.x 为您的 demo-master-a-1 的实际 ip 地址")])]),s._v(" "),a("p",[a("strong",[s._v("创建 ./kubeadm-config.yaml")])]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 只在 master 节点执行")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("vim")]),s._v(" ./kubeadm-config.yaml\n")])])]),a("div",{staticClass:"language-yaml extra-class"},[a("pre",{pre:!0,attrs:{class:"language-yaml"}},[a("code",[a("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("apiVersion")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" kubeadm.k8s.io/v1beta1\n"),a("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("kind")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" ClusterConfiguration\n"),a("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("kubernetesVersion")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" v1.15.0\n"),a("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("controlPlaneEndpoint")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"apiserver.demo:6443"')]),s._v("\n\n")])])]),a("p",[a("strong",[s._v("初始化 apiserver")])]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 只在 master 节点执行")]),s._v("\nkubeadm init --config"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("kubeadm-config.yaml --upload-certs\n")])])]),a("p",[s._v("执行结果如下图所示:")]),s._v(" "),a("p",[a("img",{attrs:{src:e(347),alt:"image-20190715101542756",title:":size=800x388"}})]),s._v(" "),a("p",[a("strong",[s._v("初始化 root 用户的 kubectl 配置")])]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 只在 master 节点执行")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("rm")]),s._v(" -rf /root/.kube/\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("mkdir")]),s._v(" /root/.kube/\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("cp")]),s._v(" -i /etc/kubernetes/admin.conf /root/.kube/config\n")])])]),a("p",[a("strong",[s._v("安装 calico")])]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 只在 master 节点执行")]),s._v("\nkubectl apply -f https://docs.projectcalico.org/v3.6/getting-started/kubernetes/installation/hosted/kubernetes-datastore/calico-networking/1.7/calico.yaml\n")])])]),a("blockquote",[a("p",[s._v("安装calico, 请参考https://docs.projectcalico.org/v3.6/getting-started/kubernetes/")])]),s._v(" "),a("p",[a("strong",[s._v("等待calico安装就绪:")])]),s._v(" "),a("p",[s._v("执行如下命令,等待 3-10 分钟,直到所有的容器组处于 Running 状态")]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 只在 master 节点执行")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("watch")]),s._v(" kubectl get pod -n kube-system\n")])])]),a("p",[a("strong",[s._v("检查 master 初始化结果")])]),s._v(" "),a("p",[s._v("在 master 节点 demo-master-a-1 上执行")]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 只在 master 节点执行")]),s._v("\nkubectl get nodes\n")])])]),a("h2",{attrs:{id:"初始化-worker节点"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#初始化-worker节点","aria-hidden":"true"}},[s._v("#")]),s._v(" 初始化 worker节点")]),s._v(" "),a("h3",{attrs:{id:"获得-join命令参数"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#获得-join命令参数","aria-hidden":"true"}},[s._v("#")]),s._v(" 获得 join命令参数")]),s._v(" "),a("p",[a("strong",[s._v("在 master 节点 demo-master-a-1 节点执行")])]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 只在 master 节点执行")]),s._v("\nkubeadm token create --print-join-command\n")])])]),a("p",[s._v("可获取kubeadm join 命令及参数,如下所示")]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# kubeadm token create 命令的输出")]),s._v("\nkubeadm "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("join")]),s._v(" apiserver.demo:6443 --token mpfjma.4vjjg8flqihor4vt --discovery-token-ca-cert-hash sha256:6f7a8e40a810323672de5eee6f4d19aa2dbdb38411845a1bf5dd63485c43d303\n")])])]),a("h3",{attrs:{id:"初始化worker"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#初始化worker","aria-hidden":"true"}},[s._v("#")]),s._v(" 初始化worker")]),s._v(" "),a("p",[a("strong",[s._v("针对所有的 worker 节点执行")])]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 只在 worker 节点执行")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("echo")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"x.x.x.x apiserver.demo"')]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">>")]),s._v(" /etc/hosts\nkubeadm "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("join")]),s._v(" apiserver.demo:6443 --token mpfjma.4vjjg8flqihor4vt --discovery-token-ca-cert-hash sha256:6f7a8e40a810323672de5eee6f4d19aa2dbdb38411845a1bf5dd63485c43d303\n")])])]),a("div",{staticClass:"tip custom-block"},[a("ul",[a("li",[s._v("将 x.x.x.x 替换为 demo-master-a-1 的实际 ip")]),s._v(" "),a("li",[s._v("将 kubeadm join 命令后的参数替换为上一个步骤中实际从 demo-master-a-1 节点获得的参数")])])]),s._v(" "),a("h3",{attrs:{id:"检查初始化结果"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#检查初始化结果","aria-hidden":"true"}},[s._v("#")]),s._v(" 检查初始化结果")]),s._v(" "),a("p",[s._v("在 master 节点 demo-master-a-1 上执行")]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 只在 master 节点执行")]),s._v("\nkubectl get nodes\n")])])]),a("p",[a("img",{attrs:{src:e(348),alt:"image-20190715193838012"}})]),s._v(" "),a("h2",{attrs:{id:"移除-worker-节点"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#移除-worker-节点","aria-hidden":"true"}},[s._v("#")]),s._v(" 移除 worker 节点")]),s._v(" "),a("div",{staticClass:"warning custom-block"},[a("p",[s._v("正常情况下,您无需移除 worker 节点,如果添加到集群出错,您可以移除 worker 节点,再重新尝试添加")])]),s._v(" "),a("p",[s._v("在准备移除的 worker 节点上执行")]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 只在 worker 节点执行")]),s._v("\nkubeadm reset\n")])])]),a("p",[s._v("在 master 节点 demo-master-a-1 上执行")]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 只在 master 节点执行")]),s._v("\nkubectl delete node demo-worker-x-x\n")])])]),a("div",{staticClass:"tip custom-block"},[a("ul",[a("li",[s._v("将 demo-worker-x-x 替换为要移除的 worker 节点的名字")]),s._v(" "),a("li",[s._v("worker 节点的名字可以通过在节点 demo-master-a-1 上执行 kubectl get nodes 命令获得")])])]),s._v(" "),a("h2",{attrs:{id:"安装-ingress-controller"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#安装-ingress-controller","aria-hidden":"true"}},[s._v("#")]),s._v(" 安装 Ingress Controller")]),s._v(" "),a("blockquote",[a("p",[s._v("Ingress官方文档:https://kubernetes.io/docs/concepts/services-networking/ingress/")]),s._v(" "),a("p",[s._v("Ingress Controllers官网介绍:https://kubernetes.io/docs/concepts/services-networking/ingress-controllers/")]),s._v(" "),a("p",[s._v("本文中使用如下部署方式:https://kubernetes.github.io/ingress-nginx/deploy/baremetal/#using-a-self-provisioned-edge")]),s._v(" "),a("p",[s._v("kubernetes支持多种Ingress Controllers,本文推荐使用 https://github.com/nginxinc/kubernetes-ingress")])]),s._v(" "),a("p",[a("strong",[s._v("在 demo-master-a-1 上执行")])]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 只在 master 节点执行")]),s._v("\nkubectl apply -f https://raw.githubusercontent.com/eip-work/eip-monitor-repository/master/dashboard/nginx-ingress.yaml\n")])])]),a("p",[a("strong",[s._v("配置域名解析")])]),s._v(" "),a("p",[s._v("将域名 *.demo.yourdomain.com 解析到 demo-worker-a-2 的 IP 地址 z.z.z.z (也可以是 demo-worker-a-1 的地址 y.y.y.y)")]),s._v(" "),a("div",{staticClass:"tip custom-block"},[a("p",[s._v("由于需要申请域名,过程会比较繁琐,有如下两种替代方案:")]),s._v(" "),a("ul",[a("li",[s._v("在您的客户端机器(访问部署在K8S上的 web 应用的浏览器所在的机器)设置 hosts 配置;")]),s._v(" "),a("li",[s._v("暂时放弃域名的配置,临时使用 NodePort 或者 "),a("code",[s._v("kubectl port-forward")]),s._v(" 的方式访问部署在 K8S 上的 web 应用")])])]),s._v(" "),a("p",[a("strong",[s._v("验证配置")])]),s._v(" "),a("p",[s._v("在浏览器访问 a.demo.yourdomain.com,将得到 404 NotFound 错误页面")]),s._v(" "),a("h2",{attrs:{id:"下一步"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#下一步","aria-hidden":"true"}},[s._v("#")]),s._v(" 下一步")]),s._v(" "),a("p",[s._v("🎉 🎉 🎉")]),s._v(" "),a("p",[s._v("您已经完成了 Kubernetes 集群的安装,下一步请:")]),s._v(" "),a("p",[a("a",{attrs:{href:"/install/install-dashboard"}},[s._v("安装 Kuboard")])])])},[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[17],{112:function(s,t,e){s.exports=e.p+"assets/img/image-20190715085036593.55559549.png"},113:function(s,t,e){s.exports=e.p+"assets/img/image2019-07-15_09.01.21.0e0d34f2.png"},332:function(s,t,e){s.exports=e.p+"assets/img/image-20190726214032585.f5bc62e4.png"},333:function(s,t,e){s.exports=e.p+"assets/img/image-20190715101542756.5934c00e.png"},334:function(s,t,e){s.exports=e.p+"assets/img/image-20190715193838012.eca23618.png"},352:function(s,t,e){"use strict";e.r(t);var a=e(0),r=Object(a.a)({},function(){var s=this,t=s.$createElement,a=s._self._c||t;return a("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[a("h1",{attrs:{id:"安装-kubernetes-单master节点"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#安装-kubernetes-单master节点","aria-hidden":"true"}},[s._v("#")]),s._v(" 安装 Kubernetes 单Master节点")]),s._v(" "),a("p",[s._v("对于 Kubernetes 初学者,推荐在阿里云采购如下配置:")]),s._v(" "),a("ul",[a("li",[s._v("3台 2核4G 的ECS(突发性能实例 t5 ecs.t5-c1m2.large或同等配置,单台约 0.4元/小时,停机时不收费)")]),s._v(" "),a("li",[s._v("Cent OS 7.6")])]),s._v(" "),a("p",[a("a",{attrs:{href:"https://promotion.aliyun.com/ntms/yunparter/invite.html?userCode=obezo3pg",target:"_blank",rel:"noopener noreferrer"}},[s._v("领取阿里云最高2000元红包"),a("OutboundLink")],1)]),s._v(" "),a("p",[s._v("Kuboard 的 Live Demo 环境使用的是如下拓扑结构,本文档描述了如何在完成该 demo 环境的搭建。")]),s._v(" "),a("p",[s._v("完成安装后,对应的软件版本为:")]),s._v(" "),a("ul",[a("li",[s._v("Kubernetes v1.15.0")]),s._v(" "),a("li",[s._v("Docker 18.09.7")])]),s._v(" "),a("p",[a("img",{attrs:{src:e(332),alt:"image-20190726214032585"}})]),s._v(" "),a("h2",{attrs:{id:"制作标准机镜像"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#制作标准机镜像","aria-hidden":"true"}},[s._v("#")]),s._v(" 制作标准机镜像")]),s._v(" "),a("p",[s._v("通过使用标准机镜像,可以")]),s._v(" "),a("ul",[a("li",[a("strong",[s._v("避免重复执行对测试机安装必要软件的过程")])]),s._v(" "),a("li",[a("strong",[s._v("以一种相对标准化的过程管理测试机的维护")])])]),s._v(" "),a("p",[s._v("标准机镜像中预装了如下内容:")]),s._v(" "),a("ul",[a("li",[s._v("docker")]),s._v(" "),a("li",[s._v("nfs-utils")]),s._v(" "),a("li",[s._v("kubernetes images")])]),s._v(" "),a("div",{staticClass:"tip custom-block"},[a("ul",[a("li",[s._v("您也可以不制作标准机镜像,而是在三台机器上都执行 "),a("em",[a("strong",[s._v("制作标准机镜像")])]),s._v(" 中的所有操作步骤")])])]),s._v(" "),a("p",[a("strong",[s._v("标准机镜像的制作过程描述如下:")])]),s._v(" "),a("h3",{attrs:{id:"安装docker"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#安装docker","aria-hidden":"true"}},[s._v("#")]),s._v(" 安装docker")]),s._v(" "),a("p",[a("strong",[s._v("卸载旧版本")])]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 在 master 节点和 worker 节点都要执行")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" yum remove docker "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n\tdocker-client "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n\tdocker-client-latest "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n\tdocker-common "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n\tdocker-latest "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n\tdocker-latest-logrotate "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n\tdocker-logrotate "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n\tdocker-selinux "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n\tdocker-engine-selinux "),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("\\")]),s._v("\n\tdocker-engine\n")])])]),a("p",[a("strong",[s._v("下载依赖包及安装包")])]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 在 master 节点和 worker 节点都要执行")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("wget")]),s._v(" https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("wget")]),s._v(" https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-cli-18.09.7-3.el7.x86_64.rpm\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("wget")]),s._v(" https://download.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-18.09.7-3.el7.x86_64.rpm\n")])])]),a("p",[a("strong",[s._v("安装")])]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 在 master 节点和 worker 节点都要执行")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" yum "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("install")]),s._v(" -y containerd.io-1.2.6-3.3.el7.x86_64.rpm\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" yum "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("install")]),s._v(" -y docker-ce-cli-18.09.7-3.el7.x86_64.rpm\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" yum "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("install")]),s._v(" -y docker-ce-18.09.7-3.el7.x86_64.rpm\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" systemctl "),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("enable")]),s._v(" docker\n")])])]),a("p",[a("strong",[s._v("启动 docker 服务")])]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 在 master 节点和 worker 节点都要执行")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" systemctl start docker\n")])])]),a("p",[a("strong",[s._v("检查 docker 版本")])]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 在 master 节点和 worker 节点都要执行")]),s._v("\ndocker version\n")])])]),a("blockquote",[a("p",[a("strong",[s._v("参考文档")])]),s._v(" "),a("p",[s._v("https://docs.docker.com/install/linux/docker-ce/centos/")]),s._v(" "),a("p",[s._v("https://docs.docker.com/install/linux/linux-postinstall/")])]),s._v(" "),a("h3",{attrs:{id:"安装-nfs-utils"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#安装-nfs-utils","aria-hidden":"true"}},[s._v("#")]),s._v(" 安装 nfs-utils")]),s._v(" "),a("p",[a("strong",[s._v("执行安装命令")])]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 在 master 节点和 worker 节点都要执行")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("sudo")]),s._v(" yum "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("install")]),s._v(" -y nfs-utils\n")])])]),a("p",[s._v("必须先安装 nfs-utils 才能挂载 nfs 网络存储")]),s._v(" "),a("h3",{attrs:{id:"k8s基本配置"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#k8s基本配置","aria-hidden":"true"}},[s._v("#")]),s._v(" K8S基本配置")]),s._v(" "),a("p",[a("strong",[s._v("配置K8S的yum源")])]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 在 master 节点和 worker 节点都要执行")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("cat")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("<<")]),s._v("EOF "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v(" /etc/yum.repos.d/kubernetes.repo\n"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("[")]),s._v("kubernetes"),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v("]")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("name")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("Kubernetes\n"),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("baseurl")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64\n"),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("enabled")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("1")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("gpgcheck")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("0")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("repo_gpgcheck")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("0")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token assign-left variable"}},[s._v("gpgkey")]),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg\n http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg\nEOF\n")])])]),a("p",[a("strong",[s._v("关闭 防火墙、SeLinux、swap")])]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 在 master 节点和 worker 节点都要执行")]),s._v("\nsystemctl stop firewalld\nsystemctl disable firewalld\n\nsetenforce "),a("span",{pre:!0,attrs:{class:"token number"}},[s._v("0")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("sed")]),s._v(" -i "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"s/SELINUX=enforcing/SELINUX=disabled/g"')]),s._v(" /etc/selinux/config\n\nswapoff -a\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("yes")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("|")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("cp")]),s._v(" /etc/fstab /etc/fstab_bak\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("cat")]),s._v(" /etc/fstab_bak "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("|")]),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("grep")]),s._v(" -v swap "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">")]),s._v(" /etc/fstab\n")])])]),a("p",[a("strong",[s._v("修改 /etc/sysctl.conf")])]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 在 master 节点和 worker 节点都要执行")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("vim")]),s._v(" /etc/sysctl.conf\n")])])]),a("p",[s._v("向其中添加")]),s._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[s._v("net.ipv4.ip_forward = 1\nnet.bridge.bridge-nf-call-ip6tables = 1\nnet.bridge.bridge-nf-call-iptables = 1\n")])])]),a("p",[s._v("如下图所示")]),s._v(" "),a("p",[a("img",{attrs:{src:e(112),alt:"image-20190715085036593",title:":size=600x445"}})]),s._v(" "),a("p",[s._v("执行命令以应用")]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 在 master 节点和 worker 节点都要执行")]),s._v("\nsysctl -p\n")])])]),a("p",[a("strong",[s._v("安装kubelet、kubeadm、kubectl")])]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 在 master 节点和 worker 节点都要执行")]),s._v("\nyum "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("install")]),s._v(" -y kubelet-1.15.0 kubeadm-1.15.0 kubectl-1.15.0\n")])])]),a("p",[a("strong",[s._v("修改docker Cgroup Driver为systemd")])]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 在 master 节点和 worker 节点都要执行")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("vim")]),s._v(" /usr/lib/systemd/system/docker.service\n")])])]),a("p",[s._v("向其中添加")]),s._v(" "),a("div",{staticClass:"language- extra-class"},[a("pre",{pre:!0,attrs:{class:"language-text"}},[a("code",[s._v("--exec-opt native.cgroupdriver=systemd\n")])])]),a("p",[s._v("如下图所示")]),s._v(" "),a("p",[a("img",{attrs:{src:e(113),alt:"屏幕快照 2019-07-15 09.01.21",title:":size=1000x326"}})]),s._v(" "),a("p",[s._v("重启 docker")]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 在 master 节点和 worker 节点都要执行")]),s._v("\nsystemctl daemon-reload\nsystemctl restart docker\n")])])]),a("p",[a("strong",[s._v("启动kubelet")])]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 在 master 节点和 worker 节点都要执行")]),s._v("\nsystemctl "),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("enable")]),s._v(" kubelet "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("&&")]),s._v(" systemctl start kubelet\n")])])]),a("p",[a("strong",[s._v("加载 kubernetes 镜像")])]),s._v(" "),a("p",[s._v("由于k8s服务相关镜像在国外镜像源,国内无法访问")]),s._v(" "),a("p",[s._v("执行以下命令添加docker k8s国内镜像源")]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 在 master 节点和 worker 节点都要执行")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("curl")]),s._v(" -sSL https://get.daocloud.io/daotools/set_mirror.sh "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("|")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("sh")]),s._v(" -s http://f1361db2.m.daocloud.io\n\nsystemctl restart docker\n")])])]),a("p",[a("strong",[s._v("拉取k8s相关镜像")])]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 在 master 节点和 worker 节点都要执行")]),s._v("\ndocker pull mirrorgooglecontainers/kube-apiserver:v1.15.0\ndocker pull mirrorgooglecontainers/kube-controller-manager:v1.15.0\ndocker pull mirrorgooglecontainers/kube-scheduler:v1.15.0\ndocker pull mirrorgooglecontainers/kube-proxy:v1.15.0\ndocker pull mirrorgooglecontainers/pause:3.1\ndocker pull mirrorgooglecontainers/etcd:3.3.10\ndocker pull coredns/coredns:1.3.1\n")])])]),a("p",[a("strong",[s._v("更改镜像名为k8s官网镜像")])]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 在 master 节点和 worker 节点都要执行")]),s._v("\ndocker tag d235b23c3570 k8s.gcr.io/kube-proxy:v1.15.0\ndocker tag 201c7a840312 k8s.gcr.io/kube-apiserver:v1.15.0\ndocker tag 2d3813851e87 k8s.gcr.io/kube-scheduler:v1.15.0\ndocker tag 8328bb49b652 k8s.gcr.io/kube-controller-manager:v1.15.0\ndocker tag da86e6ba6ca1 k8s.gcr.io/pause:3.1\ndocker tag eb516548c180 k8s.gcr.io/coredns:1.3.1\ndocker tag 2c4adeb21b4f k8s.gcr.io/etcd:3.3.10\n")])])]),a("p",[a("strong",[s._v("制作镜像")])]),s._v(" "),a("p",[s._v("请参考阿里云基于ECS "),a("a",{attrs:{href:"https://help.aliyun.com/document_detail/35109.html?spm=5176.2020520101.0.0.75fc4df5mtdFmV",target:"_blank",rel:"noopener noreferrer"}},[s._v("制作虚拟机镜像"),a("OutboundLink")],1),s._v(" 的文档")]),s._v(" "),a("h2",{attrs:{id:"初始化-master-节点"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#初始化-master-节点","aria-hidden":"true"}},[s._v("#")]),s._v(" 初始化 master 节点")]),s._v(" "),a("div",{staticClass:"tip custom-block"},[a("p",[s._v("以 root 身份在 demo-master-a-1 机器上执行")])]),s._v(" "),a("p",[a("strong",[s._v("配置 apiserver.demo 的域名")])]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 只在 master 节点执行")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("echo")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"x.x.x.x apiserver.demo"')]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">>")]),s._v(" /etc/hosts\n")])])]),a("div",{staticClass:"warning custom-block"},[a("p",[s._v("请替换其中的 x.x.x.x 为您的 demo-master-a-1 的实际 ip 地址")])]),s._v(" "),a("p",[a("strong",[s._v("创建 ./kubeadm-config.yaml")])]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 只在 master 节点执行")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("vim")]),s._v(" ./kubeadm-config.yaml\n")])])]),a("div",{staticClass:"language-yaml extra-class"},[a("pre",{pre:!0,attrs:{class:"language-yaml"}},[a("code",[a("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("apiVersion")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" kubeadm.k8s.io/v1beta1\n"),a("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("kind")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" ClusterConfiguration\n"),a("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("kubernetesVersion")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" v1.15.0\n"),a("span",{pre:!0,attrs:{class:"token key atrule"}},[s._v("controlPlaneEndpoint")]),a("span",{pre:!0,attrs:{class:"token punctuation"}},[s._v(":")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"apiserver.demo:6443"')]),s._v("\n\n")])])]),a("p",[a("strong",[s._v("初始化 apiserver")])]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 只在 master 节点执行")]),s._v("\nkubeadm init --config"),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v("=")]),s._v("kubeadm-config.yaml --upload-certs\n")])])]),a("p",[s._v("执行结果如下图所示:")]),s._v(" "),a("p",[a("img",{attrs:{src:e(333),alt:"image-20190715101542756",title:":size=800x388"}})]),s._v(" "),a("p",[a("strong",[s._v("初始化 root 用户的 kubectl 配置")])]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 只在 master 节点执行")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("rm")]),s._v(" -rf /root/.kube/\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("mkdir")]),s._v(" /root/.kube/\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("cp")]),s._v(" -i /etc/kubernetes/admin.conf /root/.kube/config\n")])])]),a("p",[a("strong",[s._v("安装 calico")])]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 只在 master 节点执行")]),s._v("\nkubectl apply -f https://docs.projectcalico.org/v3.6/getting-started/kubernetes/installation/hosted/kubernetes-datastore/calico-networking/1.7/calico.yaml\n")])])]),a("blockquote",[a("p",[s._v("安装calico, 请参考https://docs.projectcalico.org/v3.6/getting-started/kubernetes/")])]),s._v(" "),a("p",[a("strong",[s._v("等待calico安装就绪:")])]),s._v(" "),a("p",[s._v("执行如下命令,等待 3-10 分钟,直到所有的容器组处于 Running 状态")]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 只在 master 节点执行")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("watch")]),s._v(" kubectl get pod -n kube-system\n")])])]),a("p",[a("strong",[s._v("检查 master 初始化结果")])]),s._v(" "),a("p",[s._v("在 master 节点 demo-master-a-1 上执行")]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 只在 master 节点执行")]),s._v("\nkubectl get nodes\n")])])]),a("h2",{attrs:{id:"初始化-worker节点"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#初始化-worker节点","aria-hidden":"true"}},[s._v("#")]),s._v(" 初始化 worker节点")]),s._v(" "),a("h3",{attrs:{id:"获得-join命令参数"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#获得-join命令参数","aria-hidden":"true"}},[s._v("#")]),s._v(" 获得 join命令参数")]),s._v(" "),a("p",[a("strong",[s._v("在 master 节点 demo-master-a-1 节点执行")])]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 只在 master 节点执行")]),s._v("\nkubeadm token create --print-join-command\n")])])]),a("p",[s._v("可获取kubeadm join 命令及参数,如下所示")]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# kubeadm token create 命令的输出")]),s._v("\nkubeadm "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("join")]),s._v(" apiserver.demo:6443 --token mpfjma.4vjjg8flqihor4vt --discovery-token-ca-cert-hash sha256:6f7a8e40a810323672de5eee6f4d19aa2dbdb38411845a1bf5dd63485c43d303\n")])])]),a("h3",{attrs:{id:"初始化worker"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#初始化worker","aria-hidden":"true"}},[s._v("#")]),s._v(" 初始化worker")]),s._v(" "),a("p",[a("strong",[s._v("针对所有的 worker 节点执行")])]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 只在 worker 节点执行")]),s._v("\n"),a("span",{pre:!0,attrs:{class:"token builtin class-name"}},[s._v("echo")]),s._v(" "),a("span",{pre:!0,attrs:{class:"token string"}},[s._v('"x.x.x.x apiserver.demo"')]),s._v(" "),a("span",{pre:!0,attrs:{class:"token operator"}},[s._v(">>")]),s._v(" /etc/hosts\nkubeadm "),a("span",{pre:!0,attrs:{class:"token function"}},[s._v("join")]),s._v(" apiserver.demo:6443 --token mpfjma.4vjjg8flqihor4vt --discovery-token-ca-cert-hash sha256:6f7a8e40a810323672de5eee6f4d19aa2dbdb38411845a1bf5dd63485c43d303\n")])])]),a("div",{staticClass:"tip custom-block"},[a("ul",[a("li",[s._v("将 x.x.x.x 替换为 demo-master-a-1 的实际 ip")]),s._v(" "),a("li",[s._v("将 kubeadm join 命令后的参数替换为上一个步骤中实际从 demo-master-a-1 节点获得的参数")])])]),s._v(" "),a("h3",{attrs:{id:"检查初始化结果"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#检查初始化结果","aria-hidden":"true"}},[s._v("#")]),s._v(" 检查初始化结果")]),s._v(" "),a("p",[s._v("在 master 节点 demo-master-a-1 上执行")]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 只在 master 节点执行")]),s._v("\nkubectl get nodes\n")])])]),a("p",[a("img",{attrs:{src:e(334),alt:"image-20190715193838012"}})]),s._v(" "),a("h2",{attrs:{id:"移除-worker-节点"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#移除-worker-节点","aria-hidden":"true"}},[s._v("#")]),s._v(" 移除 worker 节点")]),s._v(" "),a("div",{staticClass:"warning custom-block"},[a("p",[s._v("正常情况下,您无需移除 worker 节点,如果添加到集群出错,您可以移除 worker 节点,再重新尝试添加")])]),s._v(" "),a("p",[s._v("在准备移除的 worker 节点上执行")]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 只在 worker 节点执行")]),s._v("\nkubeadm reset\n")])])]),a("p",[s._v("在 master 节点 demo-master-a-1 上执行")]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 只在 master 节点执行")]),s._v("\nkubectl delete node demo-worker-x-x\n")])])]),a("div",{staticClass:"tip custom-block"},[a("ul",[a("li",[s._v("将 demo-worker-x-x 替换为要移除的 worker 节点的名字")]),s._v(" "),a("li",[s._v("worker 节点的名字可以通过在节点 demo-master-a-1 上执行 kubectl get nodes 命令获得")])])]),s._v(" "),a("h2",{attrs:{id:"安装-ingress-controller"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#安装-ingress-controller","aria-hidden":"true"}},[s._v("#")]),s._v(" 安装 Ingress Controller")]),s._v(" "),a("blockquote",[a("p",[s._v("Ingress官方文档:https://kubernetes.io/docs/concepts/services-networking/ingress/")]),s._v(" "),a("p",[s._v("Ingress Controllers官网介绍:https://kubernetes.io/docs/concepts/services-networking/ingress-controllers/")]),s._v(" "),a("p",[s._v("本文中使用如下部署方式:https://kubernetes.github.io/ingress-nginx/deploy/baremetal/#using-a-self-provisioned-edge")]),s._v(" "),a("p",[s._v("kubernetes支持多种Ingress Controllers,本文推荐使用 https://github.com/nginxinc/kubernetes-ingress")])]),s._v(" "),a("p",[a("strong",[s._v("在 demo-master-a-1 上执行")])]),s._v(" "),a("div",{staticClass:"language-sh extra-class"},[a("pre",{pre:!0,attrs:{class:"language-sh"}},[a("code",[a("span",{pre:!0,attrs:{class:"token comment"}},[s._v("# 只在 master 节点执行")]),s._v("\nkubectl apply -f https://raw.githubusercontent.com/eip-work/eip-monitor-repository/master/dashboard/nginx-ingress.yaml\n")])])]),a("p",[a("strong",[s._v("配置域名解析")])]),s._v(" "),a("p",[s._v("将域名 *.demo.yourdomain.com 解析到 demo-worker-a-2 的 IP 地址 z.z.z.z (也可以是 demo-worker-a-1 的地址 y.y.y.y)")]),s._v(" "),a("div",{staticClass:"tip custom-block"},[a("p",[s._v("由于需要申请域名,过程会比较繁琐,有如下两种替代方案:")]),s._v(" "),a("ul",[a("li",[s._v("在您的客户端机器(访问部署在K8S上的 web 应用的浏览器所在的机器)设置 hosts 配置;")]),s._v(" "),a("li",[s._v("暂时放弃域名的配置,临时使用 NodePort 或者 "),a("code",[s._v("kubectl port-forward")]),s._v(" 的方式访问部署在 K8S 上的 web 应用")])])]),s._v(" "),a("p",[a("strong",[s._v("验证配置")])]),s._v(" "),a("p",[s._v("在浏览器访问 a.demo.yourdomain.com,将得到 404 NotFound 错误页面")]),s._v(" "),a("h2",{attrs:{id:"下一步"}},[a("a",{staticClass:"header-anchor",attrs:{href:"#下一步","aria-hidden":"true"}},[s._v("#")]),s._v(" 下一步")]),s._v(" "),a("p",[s._v("🎉 🎉 🎉")]),s._v(" "),a("p",[s._v("您已经完成了 Kubernetes 集群的安装,下一步请:")]),s._v(" "),a("p",[a("a",{attrs:{href:"/install/install-dashboard"}},[s._v("安装 Kuboard")])])])},[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/19.1f580046.js b/docs/assets/js/18.0a1c6c47.js similarity index 93% rename from docs/assets/js/19.1f580046.js rename to docs/assets/js/18.0a1c6c47.js index d5eb21d..91337ca 100644 --- a/docs/assets/js/19.1f580046.js +++ b/docs/assets/js/18.0a1c6c47.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[19],{106:function(e,r,a){e.exports=a.p+"assets/img/kuboard_qq.45e78dbf.png"},146:function(e,r,a){e.exports=a.p+"assets/img/image-20190728145108904.8f9c0d1d.png"},334:function(e,r,a){e.exports=a.p+"assets/img/image-20190721154650916.3f63fdcb.jpg"},335:function(e,r,a){e.exports=a.p+"assets/img/image-20190723105039358.91eef75a.png"},336:function(e,r,a){e.exports=a.p+"assets/img/image-20190721000759925.bb32a332.png"},359:function(e,r,a){"use strict";a.r(r);var t=a(0),s=Object(t.a)({},function(){var e=this,r=e.$createElement,t=e._self._c||r;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h2",{attrs:{id:"为什么选择-kuboard"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#为什么选择-kuboard","aria-hidden":"true"}},[e._v("#")]),e._v(" 为什么选择 Kuboard")]),e._v(" "),t("p",[e._v("Kubernetes 已然是当下容器编排领域事实上的标准,各大云服务商都急于推出 Kubernetes 服务,互联网公司也纷纷跟进,将自己的应用容器化,并使用 Kubernetes 编排。")]),e._v(" "),t("p",[e._v("在 Kubernetes 图形化工具方面,我们已经获得了极大的可选择空间:")]),e._v(" "),t("ul",[t("li",[e._v("各云服务商自己推出的 Kubernetes 服务所搭载的管理控制台,例如 阿里云的 Kubernetes 服务,青云推出的 KubeSphere,其他云服务商的 CaaS 类服务")]),e._v(" "),t("li",[e._v("Kubernetes 官方的图形管理界面 Kubernetes Dashboard")]),e._v(" "),t("li",[e._v("面向企业私有化部署的 Rancher")])]),e._v(" "),t("p",[e._v("什么场景下更适合选择 Kuboard 呢?")]),e._v(" "),t("h2",{attrs:{id:"kubernetes-入门学习者"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#kubernetes-入门学习者","aria-hidden":"true"}},[e._v("#")]),e._v(" Kubernetes 入门学习者")]),e._v(" "),t("p",[e._v("​\tKuboard类似于 Kubernetes Dashboard,是一款轻量级产品,按照 Kuboard 的文档,您可以很快地搭建一套学习 Kubernetes 用的集群环境,您也可以在自己已经有的集群上轻易地完成 Kuboard 的安装。")]),e._v(" "),t("p",[e._v("​\t对于 K8S 入门学习者来说,看了那么多 Kubernetes 文章,了解了许多的跟 apiserver、etcd、pod、container、service、ingress、storage class等各种概念,都不如比不上自己动手搭一套 K8S 环境,并在其上部署一套微服务应用的效果好。Kuboard 完全采用场景化的设计,操作过程更适合人们的思考方式。例如,集群概览的展示方式、名称空间的展示方式。")]),e._v(" "),t("h3",{attrs:{id:"集群概览"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#集群概览","aria-hidden":"true"}},[e._v("#")]),e._v(" 集群概览")]),e._v(" "),t("p",[e._v("在 Kuboard 中,集群概览的展现形式如下:")]),e._v(" "),t("p",[e._v("​\t计算资源、存储资源并列在集群概览的下层,上层则是运行于计算资源与存储资源上的名称空间(应用)。")]),e._v(" "),t("p",[t("img",{attrs:{src:a(146),alt:"集群概览"}})]),e._v(" "),t("h3",{attrs:{id:"名称空间"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#名称空间","aria-hidden":"true"}},[e._v("#")]),e._v(" 名称空间")]),e._v(" "),t("p",[e._v("在 Kuboard 中,名称空间的展示形式如下:")]),e._v(" "),t("p",[e._v("​\t以微服务参考分层架构的形式,将所有的微服务分为如下几层:")]),e._v(" "),t("ul",[t("li",[e._v("展现层\n"),t("ul",[t("li",[e._v("终端用户访问的 Web 应用")])])]),e._v(" "),t("li",[e._v("API网关层\n"),t("ul",[t("li",[e._v("Spring Cloud Gateway / Zuul /Kong 等接口网关")])])]),e._v(" "),t("li",[e._v("微服务层\n"),t("ul",[t("li",[e._v("Spring Boot 微服务,或 PHP / Python 实现的微服务")])])]),e._v(" "),t("li",[e._v("持久层\n"),t("ul",[t("li",[e._v("MySQL 数据库等(开发及测试环境里,将MySQL部署于 Kubernetes 可以极大地降低环境维护的任务量)")])])]),e._v(" "),t("li",[e._v("中间件层\n"),t("ul",[t("li",[e._v("消息队列")]),e._v(" "),t("li",[e._v("服务注册 Eureka / Zookeeper / Consul 等")])])]),e._v(" "),t("li",[e._v("监控层\n"),t("ul",[t("li",[e._v("Prometheus + Grafana")]),e._v(" "),t("li",[e._v("Pinpooint 等")])])])]),e._v(" "),t("p",[t("img",{attrs:{src:a(334),alt:"image-20190721154650916"}})]),e._v(" "),t("p",[e._v("​\t更为贴心的,当某一个工作负载存在部署方面的问题时, Kuboard 将以红色高亮出该工作负载,并配有合适的方式辅助用户定位错误信息。")]),e._v(" "),t("h3",{attrs:{id:"无需手写-yaml"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#无需手写-yaml","aria-hidden":"true"}},[e._v("#")]),e._v(" 无需手写 Yaml")]),e._v(" "),t("p",[e._v("​\t学习 Kubernetes 时,需要花费许多的时间,在理解一个概念之后,模仿着写一个 yaml 文件,再使用 kubectl 应用该文件。")]),e._v(" "),t("p",[e._v("​\t使用 Kuboard 提供的工作负载编辑器,可以直观的完成应用的部署")]),e._v(" "),t("p",[t("img",{attrs:{src:a(335),alt:"image-20190723105039358"}})]),e._v(" "),t("h2",{attrs:{id:"kubernetes-日常运维人员"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#kubernetes-日常运维人员","aria-hidden":"true"}},[e._v("#")]),e._v(" Kubernetes 日常运维人员")]),e._v(" "),t("p",[e._v("​\tkubectl 的命令敲了许多遍了?yaml 文件越来越多,结构越来越复杂?又要部署一套测试环境,用来进行 UAT 测试?")]),e._v(" "),t("h3",{attrs:{id:"纯图形界面运维-kubernetes"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#纯图形界面运维-kubernetes","aria-hidden":"true"}},[e._v("#")]),e._v(" 纯图形界面运维 Kubernetes")]),e._v(" "),t("p",[e._v("在作者的日常运维工作中,除了 kubectl port-forward 还需要回到命令行界面以外,其他运维任务已经全部在 Kuboard 中轻松完成。更让人期待的是,Kuboard 作者还计划实现 port-forward 的功能,如此一来,作者日后就完全不再需要使用 kubectl 了。")]),e._v(" "),t("h3",{attrs:{id:"多环境复制"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#多环境复制","aria-hidden":"true"}},[e._v("#")]),e._v(" 多环境复制")]),e._v(" "),t("p",[e._v("为了能够是你的一套 yaml 文件适应多种部署(开发环境、测试环境、UAT环境、生产环境),您一定尝试过各种办法,例如 helmer chart, kustomize, kubectl apply -k directory_name,但是您本来可以更轻松地完成这样的任务的。")]),e._v(" "),t("p",[e._v("Kuboard 提供了 工作负载导出和导入的功能,0 yaml文件,轻松复制多个环境。")]),e._v(" "),t("h3",{attrs:{id:"应用升级"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#应用升级","aria-hidden":"true"}},[e._v("#")]),e._v(" 应用升级")]),e._v(" "),t("p",[e._v("Kuboard 提供批量修改容器镜像版本的功能,轻松升级应用程序的版本。")]),e._v(" "),t("p",[t("img",{attrs:{src:a(336),alt:"image-20190721000759925"}})]),e._v(" "),t("h2",{attrs:{id:"_0-侵入性"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_0-侵入性","aria-hidden":"true"}},[e._v("#")]),e._v(" 0 侵入性")]),e._v(" "),t("p",[e._v("​\tRancher 为了支持多云管理(MeSos,Docker Swarm,Kubernetes等),引入了一系列复杂的概念,又需要新增安装 Rancher Server、Rancher Agent等,本来学习 Kubernetes 已然不堪重负,Rancher再把多云整合到一起来,无疑又增加了学习和使用的复杂性。如果您只是打算使用 Kubernetes 的话,也许并不需要选择 Rancher 这样重量级的产品。Kuboard 仅仅依赖于原生 Kubernetes,可以运行在各种公有云、私有云上,您也可以自己基于物理机、vsphere、vmware等已经有的基础设施搭建 Kubernetes,轻松实现现有 Infrastructure 的容器化改造。")]),e._v(" "),t("h2",{attrs:{id:"更多资料"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#更多资料","aria-hidden":"true"}},[e._v("#")]),e._v(" 更多资料")]),e._v(" "),t("p",[e._v("Kuboard 官网 http://kuboard.cn")]),e._v(" "),t("p",[e._v("Kuboard QQ 群")]),e._v(" "),t("p",[t("img",{attrs:{src:a(106),alt:"Kuboard QQ 群"}})])])},[],!1,null,null,null);r.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[18],{106:function(e,r,a){e.exports=a.p+"assets/img/kuboard_qq.45e78dbf.png"},146:function(e,r,a){e.exports=a.p+"assets/img/image-20190728145108904.8f9c0d1d.png"},327:function(e,r,a){e.exports=a.p+"assets/img/image-20190721154650916.3f63fdcb.jpg"},328:function(e,r,a){e.exports=a.p+"assets/img/image-20190723105039358.91eef75a.png"},329:function(e,r,a){e.exports=a.p+"assets/img/image-20190721000759925.bb32a332.png"},357:function(e,r,a){"use strict";a.r(r);var t=a(0),s=Object(t.a)({},function(){var e=this,r=e.$createElement,t=e._self._c||r;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h2",{attrs:{id:"为什么选择-kuboard"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#为什么选择-kuboard","aria-hidden":"true"}},[e._v("#")]),e._v(" 为什么选择 Kuboard")]),e._v(" "),t("p",[e._v("Kubernetes 已然是当下容器编排领域事实上的标准,各大云服务商都急于推出 Kubernetes 服务,互联网公司也纷纷跟进,将自己的应用容器化,并使用 Kubernetes 编排。")]),e._v(" "),t("p",[e._v("在 Kubernetes 图形化工具方面,我们已经获得了极大的可选择空间:")]),e._v(" "),t("ul",[t("li",[e._v("各云服务商自己推出的 Kubernetes 服务所搭载的管理控制台,例如 阿里云的 Kubernetes 服务,青云推出的 KubeSphere,其他云服务商的 CaaS 类服务")]),e._v(" "),t("li",[e._v("Kubernetes 官方的图形管理界面 Kubernetes Dashboard")]),e._v(" "),t("li",[e._v("面向企业私有化部署的 Rancher")])]),e._v(" "),t("p",[e._v("什么场景下更适合选择 Kuboard 呢?")]),e._v(" "),t("h2",{attrs:{id:"kubernetes-入门学习者"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#kubernetes-入门学习者","aria-hidden":"true"}},[e._v("#")]),e._v(" Kubernetes 入门学习者")]),e._v(" "),t("p",[e._v("​\tKuboard类似于 Kubernetes Dashboard,是一款轻量级产品,按照 Kuboard 的文档,您可以很快地搭建一套学习 Kubernetes 用的集群环境,您也可以在自己已经有的集群上轻易地完成 Kuboard 的安装。")]),e._v(" "),t("p",[e._v("​\t对于 K8S 入门学习者来说,看了那么多 Kubernetes 文章,了解了许多的跟 apiserver、etcd、pod、container、service、ingress、storage class等各种概念,都不如比不上自己动手搭一套 K8S 环境,并在其上部署一套微服务应用的效果好。Kuboard 完全采用场景化的设计,操作过程更适合人们的思考方式。例如,集群概览的展示方式、名称空间的展示方式。")]),e._v(" "),t("h3",{attrs:{id:"集群概览"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#集群概览","aria-hidden":"true"}},[e._v("#")]),e._v(" 集群概览")]),e._v(" "),t("p",[e._v("在 Kuboard 中,集群概览的展现形式如下:")]),e._v(" "),t("p",[e._v("​\t计算资源、存储资源并列在集群概览的下层,上层则是运行于计算资源与存储资源上的名称空间(应用)。")]),e._v(" "),t("p",[t("img",{attrs:{src:a(146),alt:"集群概览"}})]),e._v(" "),t("h3",{attrs:{id:"名称空间"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#名称空间","aria-hidden":"true"}},[e._v("#")]),e._v(" 名称空间")]),e._v(" "),t("p",[e._v("在 Kuboard 中,名称空间的展示形式如下:")]),e._v(" "),t("p",[e._v("​\t以微服务参考分层架构的形式,将所有的微服务分为如下几层:")]),e._v(" "),t("ul",[t("li",[e._v("展现层\n"),t("ul",[t("li",[e._v("终端用户访问的 Web 应用")])])]),e._v(" "),t("li",[e._v("API网关层\n"),t("ul",[t("li",[e._v("Spring Cloud Gateway / Zuul /Kong 等接口网关")])])]),e._v(" "),t("li",[e._v("微服务层\n"),t("ul",[t("li",[e._v("Spring Boot 微服务,或 PHP / Python 实现的微服务")])])]),e._v(" "),t("li",[e._v("持久层\n"),t("ul",[t("li",[e._v("MySQL 数据库等(开发及测试环境里,将MySQL部署于 Kubernetes 可以极大地降低环境维护的任务量)")])])]),e._v(" "),t("li",[e._v("中间件层\n"),t("ul",[t("li",[e._v("消息队列")]),e._v(" "),t("li",[e._v("服务注册 Eureka / Zookeeper / Consul 等")])])]),e._v(" "),t("li",[e._v("监控层\n"),t("ul",[t("li",[e._v("Prometheus + Grafana")]),e._v(" "),t("li",[e._v("Pinpooint 等")])])])]),e._v(" "),t("p",[t("img",{attrs:{src:a(327),alt:"image-20190721154650916"}})]),e._v(" "),t("p",[e._v("​\t更为贴心的,当某一个工作负载存在部署方面的问题时, Kuboard 将以红色高亮出该工作负载,并配有合适的方式辅助用户定位错误信息。")]),e._v(" "),t("h3",{attrs:{id:"无需手写-yaml"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#无需手写-yaml","aria-hidden":"true"}},[e._v("#")]),e._v(" 无需手写 Yaml")]),e._v(" "),t("p",[e._v("​\t学习 Kubernetes 时,需要花费许多的时间,在理解一个概念之后,模仿着写一个 yaml 文件,再使用 kubectl 应用该文件。")]),e._v(" "),t("p",[e._v("​\t使用 Kuboard 提供的工作负载编辑器,可以直观的完成应用的部署")]),e._v(" "),t("p",[t("img",{attrs:{src:a(328),alt:"image-20190723105039358"}})]),e._v(" "),t("h2",{attrs:{id:"kubernetes-日常运维人员"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#kubernetes-日常运维人员","aria-hidden":"true"}},[e._v("#")]),e._v(" Kubernetes 日常运维人员")]),e._v(" "),t("p",[e._v("​\tkubectl 的命令敲了许多遍了?yaml 文件越来越多,结构越来越复杂?又要部署一套测试环境,用来进行 UAT 测试?")]),e._v(" "),t("h3",{attrs:{id:"纯图形界面运维-kubernetes"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#纯图形界面运维-kubernetes","aria-hidden":"true"}},[e._v("#")]),e._v(" 纯图形界面运维 Kubernetes")]),e._v(" "),t("p",[e._v("在作者的日常运维工作中,除了 kubectl port-forward 还需要回到命令行界面以外,其他运维任务已经全部在 Kuboard 中轻松完成。更让人期待的是,Kuboard 作者还计划实现 port-forward 的功能,如此一来,作者日后就完全不再需要使用 kubectl 了。")]),e._v(" "),t("h3",{attrs:{id:"多环境复制"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#多环境复制","aria-hidden":"true"}},[e._v("#")]),e._v(" 多环境复制")]),e._v(" "),t("p",[e._v("为了能够是你的一套 yaml 文件适应多种部署(开发环境、测试环境、UAT环境、生产环境),您一定尝试过各种办法,例如 helmer chart, kustomize, kubectl apply -k directory_name,但是您本来可以更轻松地完成这样的任务的。")]),e._v(" "),t("p",[e._v("Kuboard 提供了 工作负载导出和导入的功能,0 yaml文件,轻松复制多个环境。")]),e._v(" "),t("h3",{attrs:{id:"应用升级"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#应用升级","aria-hidden":"true"}},[e._v("#")]),e._v(" 应用升级")]),e._v(" "),t("p",[e._v("Kuboard 提供批量修改容器镜像版本的功能,轻松升级应用程序的版本。")]),e._v(" "),t("p",[t("img",{attrs:{src:a(329),alt:"image-20190721000759925"}})]),e._v(" "),t("h2",{attrs:{id:"_0-侵入性"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#_0-侵入性","aria-hidden":"true"}},[e._v("#")]),e._v(" 0 侵入性")]),e._v(" "),t("p",[e._v("​\tRancher 为了支持多云管理(MeSos,Docker Swarm,Kubernetes等),引入了一系列复杂的概念,又需要新增安装 Rancher Server、Rancher Agent等,本来学习 Kubernetes 已然不堪重负,Rancher再把多云整合到一起来,无疑又增加了学习和使用的复杂性。如果您只是打算使用 Kubernetes 的话,也许并不需要选择 Rancher 这样重量级的产品。Kuboard 仅仅依赖于原生 Kubernetes,可以运行在各种公有云、私有云上,您也可以自己基于物理机、vsphere、vmware等已经有的基础设施搭建 Kubernetes,轻松实现现有 Infrastructure 的容器化改造。")]),e._v(" "),t("h2",{attrs:{id:"更多资料"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#更多资料","aria-hidden":"true"}},[e._v("#")]),e._v(" 更多资料")]),e._v(" "),t("p",[e._v("Kuboard 官网 http://kuboard.cn")]),e._v(" "),t("p",[e._v("Kuboard QQ 群")]),e._v(" "),t("p",[t("img",{attrs:{src:a(106),alt:"Kuboard QQ 群"}})])])},[],!1,null,null,null);r.default=s.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/18.b4940cde.js b/docs/assets/js/18.b4940cde.js deleted file mode 100644 index 42256f7..0000000 --- a/docs/assets/js/18.b4940cde.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[18],{323:function(a,t,s){a.exports=s.p+"assets/img/1563696697515.94512132.png"},324:function(a,t,s){a.exports=s.p+"assets/img/1563697667480.8c846298.png"},325:function(a,t,s){a.exports=s.p+"assets/img/1563698644736.d67b2e09.png"},326:function(a,t,s){a.exports=s.p+"assets/img/1563698714557.fa1eeb1c.png"},327:function(a,t,s){a.exports=s.p+"assets/img/1563698865448.2cbaf53a.png"},388:function(a,t,s){"use strict";s.r(t);var e=s(0),r=Object(e.a)({},function(){var a=this,t=a.$createElement,e=a._self._c||t;return e("ContentSlotsDistributor",{attrs:{"slot-key":a.$parent.slotKey}},[e("h1",{attrs:{id:"在单机使用-kind-安装-kubernetes"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#在单机使用-kind-安装-kubernetes","aria-hidden":"true"}},[a._v("#")]),a._v(" 在单机使用 kind 安装 Kubernetes")]),a._v(" "),e("p",[a._v("本文旨在通过使用 kind 搭建本地 k8s 集群环境,为技术爱好者提供快速上手 Kuboard 的基本实践方式。")]),a._v(" "),e("h2",{attrs:{id:"环境简介"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#环境简介","aria-hidden":"true"}},[a._v("#")]),a._v(" 环境简介")]),a._v(" "),e("p",[a._v("本地搭建 k8s 集群需要 kind 工具及 docker 环境。")]),a._v(" "),e("p",[a._v("建议硬件配置:2核 cpu,8G 内存")]),a._v(" "),e("p",[a._v("ps: 以下均为在 Linux 平台实践,其他平台可参考文章中链接。")]),a._v(" "),e("h3",{attrs:{id:"kind-简介与安装"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#kind-简介与安装","aria-hidden":"true"}},[a._v("#")]),a._v(" kind 简介与安装")]),a._v(" "),e("p",[a._v("kind:https://kind.sigs.k8s.io/ 是一个使用 Docker 容器运行本地 Kubernetes 集群的工具。\nps:本文使用kind V0.4.0")]),a._v(" "),e("p",[a._v("安装:")]),a._v(" "),e("ul",[e("li",[e("p",[a._v("linux:")]),a._v(" "),e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[a._v("curl")]),a._v(" -Lo ./kind-linux-amd64 https://github.com/kubernetes-sigs/kind/releases/download/v0.4.0/kind-linux-amd64\n"),e("span",{pre:!0,attrs:{class:"token function"}},[a._v("chmod")]),a._v(" +x ./kind-linux-amd64\n"),e("span",{pre:!0,attrs:{class:"token function"}},[a._v("mv")]),a._v(" ./kind-linux-amd64 /usr/local/bin/kind\n")])])])]),a._v(" "),e("li",[e("p",[a._v("win:")]),a._v(" "),e("div",{staticClass:"language-powershell extra-class"},[e("pre",{pre:!0,attrs:{class:"language-powershell"}},[e("code",[a._v("curl"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(".")]),a._v("exe "),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("-")]),a._v("Lo kind"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("-")]),a._v("windows"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("-")]),a._v("amd64"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(".")]),a._v("exe https:"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("/")]),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("/")]),a._v("github"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(".")]),a._v("com"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("/")]),a._v("kubernetes"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("-")]),a._v("sigs"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("/")]),a._v("kind"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("/")]),a._v("releases"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("/")]),a._v("download"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("/")]),a._v("v0"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(".")]),a._v("4"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(".")]),a._v("0"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("/")]),a._v("kind"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("-")]),a._v("windows"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("-")]),a._v("amd64\n"),e("span",{pre:!0,attrs:{class:"token function"}},[a._v("Move-Item")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(".")]),a._v("\\kind"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("-")]),a._v("windows"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("-")]),a._v("amd64"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(".")]),a._v("exe c:\\some"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("-")]),e("span",{pre:!0,attrs:{class:"token function"}},[a._v("dir")]),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("-in")]),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("-")]),a._v("your"),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("-")]),a._v("PATH\\kind"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(".")]),a._v("exe\n")])])])]),a._v(" "),e("li",[e("p",[a._v("mac:")]),a._v(" "),e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[a._v("curl")]),a._v(" -Lo ./kind-darwin-amd64 https://github.com/kubernetes-sigs/kind/releases/download/v0.4.0/kind-darwin-amd64\n"),e("span",{pre:!0,attrs:{class:"token function"}},[a._v("chmod")]),a._v(" +x ./kind-darwin-amd64\n"),e("span",{pre:!0,attrs:{class:"token function"}},[a._v("mv")]),a._v(" ./kind-darwin-amd64 /usr/local/bin/kind\n")])])])])]),a._v(" "),e("h3",{attrs:{id:"docker-环境"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#docker-环境","aria-hidden":"true"}},[a._v("#")]),a._v(" docker 环境")]),a._v(" "),e("p",[a._v("Kind 的主要功能目前需要有 Docker 环境的支持,可参考 Docker 官方文档:https://links.jianshu.com/go?to=https%3A%2F%2Fdocs.docker.com%2Finstall%2F 进行安装。")]),a._v(" "),e("h3",{attrs:{id:"kubectl-安装"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#kubectl-安装","aria-hidden":"true"}},[a._v("#")]),a._v(" kubectl 安装")]),a._v(" "),e("p",[a._v("kubectl https://kubernetes.io/docs/tasks/tools/install-kubectl/ 是 Kubernetes 命令行工具,可以在 Kubernetes 上部署和管理应用程序")]),a._v(" "),e("p",[a._v("Linux:")]),a._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[a._v("curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.15.0/bin/linux/amd64/kubectl\nchmod +x ./kubectl\nsudo mv ./kubectl /usr/local/bin/kubectl\n")])])]),e("p",[a._v("ps: 由于网络问题多次尝试可下载成功")]),a._v(" "),e("h2",{attrs:{id:"k8s-集群搭建"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#k8s-集群搭建","aria-hidden":"true"}},[a._v("#")]),a._v(" k8s 集群搭建")]),a._v(" "),e("h3",{attrs:{id:"准备-kind-搭建集群配置文件-kind-config-yaml"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#准备-kind-搭建集群配置文件-kind-config-yaml","aria-hidden":"true"}},[a._v("#")]),a._v(" 准备 kind 搭建集群配置文件 kind-config.yaml")]),a._v(" "),e("div",{staticClass:"language-yaml extra-class"},[e("pre",{pre:!0,attrs:{class:"language-yaml"}},[e("code",[e("span",{pre:!0,attrs:{class:"token key atrule"}},[a._v("kind")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v(" Cluster\n"),e("span",{pre:!0,attrs:{class:"token key atrule"}},[a._v("apiVersion")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v(" kind.sigs.k8s.io/v1alpha3\n"),e("span",{pre:!0,attrs:{class:"token key atrule"}},[a._v("nodes")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v("\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("-")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[a._v("role")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v(" control"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("-")]),a._v("plane\n"),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v("-")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token key atrule"}},[a._v("role")]),e("span",{pre:!0,attrs:{class:"token punctuation"}},[a._v(":")]),a._v(" worker\n")])])]),e("h3",{attrs:{id:"使用-kind-搭建集群"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#使用-kind-搭建集群","aria-hidden":"true"}},[a._v("#")]),a._v(" 使用 kind 搭建集群")]),a._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[a._v("kind create cluster --config kind-config.yaml\n")])])]),e("h3",{attrs:{id:"创建成功"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#创建成功","aria-hidden":"true"}},[a._v("#")]),a._v(" 创建成功")]),a._v(" "),e("p",[e("img",{attrs:{src:s(323),alt:"1563696697515"}})]),a._v(" "),e("p",[a._v("按照提示配置环境变量")]),a._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[a._v('export KUBECONFIG="$(kind get kubeconfig-path --name="kind")"\n')])])]),e("p",[a._v("查看集群信息")]),a._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[a._v("kubectl cluster-info\n")])])]),e("p",[e("img",{attrs:{src:s(324),alt:"1563697667480"}})]),a._v(" "),e("h2",{attrs:{id:"kuboard-安装"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#kuboard-安装","aria-hidden":"true"}},[a._v("#")]),a._v(" kuboard 安装")]),a._v(" "),e("p",[a._v("官方安装地址:http://kuboard.cn/#/install/install-dashboard")]),a._v(" "),e("h3",{attrs:{id:"获取并修改-yaml-文件"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#获取并修改-yaml-文件","aria-hidden":"true"}},[a._v("#")]),a._v(" 获取并修改 yaml 文件")]),a._v(" "),e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[e("span",{pre:!0,attrs:{class:"token function"}},[a._v("wget")]),a._v(" https://raw.githubusercontent.com/eip-work/eip-monitor-repository/master/dashboard/kuboard.yaml\n")])])]),e("p",[a._v("修改文件 kuboard.yaml 中 Ingress 的 host 为空")]),a._v(" "),e("h3",{attrs:{id:"执行安装"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#执行安装","aria-hidden":"true"}},[a._v("#")]),a._v(" 执行安装")]),a._v(" "),e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[a._v("kubectl apply -f kuboard.yaml \n")])])]),e("h3",{attrs:{id:"查看启动状态"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#查看启动状态","aria-hidden":"true"}},[a._v("#")]),a._v(" 查看启动状态")]),a._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[a._v("kubectl get pods -n kube-system --watch\n")])])]),e("p",[a._v("等待 kuboard 启动成功")]),a._v(" "),e("h3",{attrs:{id:"访问-kuboard-页面"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#访问-kuboard-页面","aria-hidden":"true"}},[a._v("#")]),a._v(" 访问 kuboard 页面")]),a._v(" "),e("p",[a._v("待启动成功后,需要做 80 端口转发,通过浏览器访问 kuboard")]),a._v(" "),e("div",{staticClass:"language- extra-class"},[e("pre",{pre:!0,attrs:{class:"language-text"}},[e("code",[a._v("kubectl port-forward service/kuboard 9080:80 -n kube-system\n")])])]),e("p",[a._v("获取登录 token")]),a._v(" "),e("div",{staticClass:"language-bash extra-class"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[a._v("kubectl -n kube-system describe secret "),e("span",{pre:!0,attrs:{class:"token variable"}},[e("span",{pre:!0,attrs:{class:"token variable"}},[a._v("$(")]),a._v("kubectl -n kube-system get secret "),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("|")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[a._v("grep")]),a._v(" kuboard-user "),e("span",{pre:!0,attrs:{class:"token operator"}},[a._v("|")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token function"}},[a._v("awk")]),a._v(" "),e("span",{pre:!0,attrs:{class:"token string"}},[a._v("'{print "),e("span",{pre:!0,attrs:{class:"token variable"}},[a._v("$1")]),a._v("}'")]),e("span",{pre:!0,attrs:{class:"token variable"}},[a._v(")")])]),a._v(" \n")])])]),e("p",[e("img",{attrs:{src:s(325),alt:"1563698644736"}})]),a._v(" "),e("p",[a._v("浏览器中访问 http://localhost:9080")]),a._v(" "),e("p",[e("img",{attrs:{src:s(326),alt:"1563698714557"}})]),a._v(" "),e("p",[a._v("将获取的 token 复制到浏览器中,访问成功")]),a._v(" "),e("p",[e("img",{attrs:{src:s(327),alt:"1563698865448"}})])])},[],!1,null,null,null);t.default=r.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/20.fe37a967.js b/docs/assets/js/19.42d282d4.js similarity index 96% rename from docs/assets/js/20.fe37a967.js rename to docs/assets/js/19.42d282d4.js index c9155cc..c601527 100644 --- a/docs/assets/js/20.fe37a967.js +++ b/docs/assets/js/19.42d282d4.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[20],{234:function(t,a,e){t.exports=e.p+"assets/img/image-20190721104153954.74fb88ec.png"},235:function(t,a,e){t.exports=e.p+"assets/img/image-20190721101812895.8f059471.png"},236:function(t,a,e){t.exports=e.p+"assets/img/image-20190721101954560.176c574c.png"},237:function(t,a,e){t.exports=e.p+"assets/img/image-20190721103324863.72744076.png"},372:function(t,a,e){"use strict";e.r(a);var r=e(0),s=Object(r.a)({},function(){var t=this,a=t.$createElement,r=t._self._c||a;return r("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[r("h1",{attrs:{id:"集群事件"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#集群事件","aria-hidden":"true"}},[t._v("#")]),t._v(" 集群事件")]),t._v(" "),r("p",[t._v("通过观察 KUberetes 集群事件,可以快速诊断部署时发生的问题。")]),t._v(" "),r("p",[t._v("Kuboard 建立了与 kubernetes apiserver 的长连接,可以在第一时间将集群中的事件更新以通知的形式显示在 dashboad 上。")]),t._v(" "),r("h2",{attrs:{id:"错误事件提示"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#错误事件提示","aria-hidden":"true"}},[t._v("#")]),t._v(" 错误事件提示")]),t._v(" "),r("p",[t._v("如果存在与某一个工作负载相关的错误事件,名称空间界面中,将以红色显示该工作负载,如下图所示:")]),t._v(" "),r("p",[r("img",{attrs:{src:e(234),alt:"image-20190721104153954"}})]),t._v(" "),r("h2",{attrs:{id:"全局事件"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#全局事件","aria-hidden":"true"}},[t._v("#")]),t._v(" 全局事件")]),t._v(" "),r("h3",{attrs:{id:"查看全局事件"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#查看全局事件","aria-hidden":"true"}},[t._v("#")]),t._v(" 查看全局事件")]),t._v(" "),r("p",[t._v("在任何页面点击界面左上角的 "),r("em",[r("strong",[t._v("事件")])]),t._v(" 按钮,进入事件列表页:")]),t._v(" "),r("p",[r("img",{attrs:{src:e(235),alt:"image-20190721101812895"}})]),t._v(" "),r("h3",{attrs:{id:"删除事件"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#删除事件","aria-hidden":"true"}},[t._v("#")]),t._v(" 删除事件")]),t._v(" "),r("ul",[r("li",[t._v("点击全局事件列表中的 "),r("em",[r("strong",[t._v("类型")])]),t._v(" 标签,")])]),t._v(" "),r("p",[r("img",{attrs:{src:e(236),alt:"image-20190721101954560"}})]),t._v(" "),r("ul",[r("li",[t._v("点击 "),r("em",[r("strong",[t._v("确定")])])])]),t._v(" "),r("p",[t._v("该事件已删除。如果事件对应的错误原因没有被解决,该事件又会在下一次 kubernetes 调度系统资源的时候重新出现。")]),t._v(" "),r("h2",{attrs:{id:"微服务上下文相关的事件"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#微服务上下文相关的事件","aria-hidden":"true"}},[t._v("#")]),t._v(" 微服务上下文相关的事件")]),t._v(" "),r("p",[t._v("打开工作负载页面,如下图所示:")]),t._v(" "),r("p",[t._v("容器组信息中包含了与该容器组相关的所有集群事件。")]),t._v(" "),r("p",[r("img",{attrs:{src:e(237),alt:"image-20190721103324863"}})])])},[],!1,null,null,null);a.default=s.exports}}]); \ No newline at end of file +(window.webpackJsonp=window.webpackJsonp||[]).push([[19],{234:function(t,a,e){t.exports=e.p+"assets/img/image-20190721104153954.74fb88ec.png"},235:function(t,a,e){t.exports=e.p+"assets/img/image-20190721101812895.8f059471.png"},236:function(t,a,e){t.exports=e.p+"assets/img/image-20190721101954560.176c574c.png"},237:function(t,a,e){t.exports=e.p+"assets/img/image-20190721103324863.72744076.png"},362:function(t,a,e){"use strict";e.r(a);var r=e(0),s=Object(r.a)({},function(){var t=this,a=t.$createElement,r=t._self._c||a;return r("ContentSlotsDistributor",{attrs:{"slot-key":t.$parent.slotKey}},[r("h1",{attrs:{id:"集群事件"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#集群事件","aria-hidden":"true"}},[t._v("#")]),t._v(" 集群事件")]),t._v(" "),r("p",[t._v("通过观察 KUberetes 集群事件,可以快速诊断部署时发生的问题。")]),t._v(" "),r("p",[t._v("Kuboard 建立了与 kubernetes apiserver 的长连接,可以在第一时间将集群中的事件更新以通知的形式显示在 dashboad 上。")]),t._v(" "),r("h2",{attrs:{id:"错误事件提示"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#错误事件提示","aria-hidden":"true"}},[t._v("#")]),t._v(" 错误事件提示")]),t._v(" "),r("p",[t._v("如果存在与某一个工作负载相关的错误事件,名称空间界面中,将以红色显示该工作负载,如下图所示:")]),t._v(" "),r("p",[r("img",{attrs:{src:e(234),alt:"image-20190721104153954"}})]),t._v(" "),r("h2",{attrs:{id:"全局事件"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#全局事件","aria-hidden":"true"}},[t._v("#")]),t._v(" 全局事件")]),t._v(" "),r("h3",{attrs:{id:"查看全局事件"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#查看全局事件","aria-hidden":"true"}},[t._v("#")]),t._v(" 查看全局事件")]),t._v(" "),r("p",[t._v("在任何页面点击界面左上角的 "),r("em",[r("strong",[t._v("事件")])]),t._v(" 按钮,进入事件列表页:")]),t._v(" "),r("p",[r("img",{attrs:{src:e(235),alt:"image-20190721101812895"}})]),t._v(" "),r("h3",{attrs:{id:"删除事件"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#删除事件","aria-hidden":"true"}},[t._v("#")]),t._v(" 删除事件")]),t._v(" "),r("ul",[r("li",[t._v("点击全局事件列表中的 "),r("em",[r("strong",[t._v("类型")])]),t._v(" 标签,")])]),t._v(" "),r("p",[r("img",{attrs:{src:e(236),alt:"image-20190721101954560"}})]),t._v(" "),r("ul",[r("li",[t._v("点击 "),r("em",[r("strong",[t._v("确定")])])])]),t._v(" "),r("p",[t._v("该事件已删除。如果事件对应的错误原因没有被解决,该事件又会在下一次 kubernetes 调度系统资源的时候重新出现。")]),t._v(" "),r("h2",{attrs:{id:"微服务上下文相关的事件"}},[r("a",{staticClass:"header-anchor",attrs:{href:"#微服务上下文相关的事件","aria-hidden":"true"}},[t._v("#")]),t._v(" 微服务上下文相关的事件")]),t._v(" "),r("p",[t._v("打开工作负载页面,如下图所示:")]),t._v(" "),r("p",[t._v("容器组信息中包含了与该容器组相关的所有集群事件。")]),t._v(" "),r("p",[r("img",{attrs:{src:e(237),alt:"image-20190721103324863"}})])])},[],!1,null,null,null);a.default=s.exports}}]); \ No newline at end of file diff --git a/docs/assets/js/2.db1527d8.js b/docs/assets/js/2.e1436c28.js similarity index 60% rename from docs/assets/js/2.db1527d8.js rename to docs/assets/js/2.e1436c28.js index 0f2db67..4093347 100644 --- a/docs/assets/js/2.db1527d8.js +++ b/docs/assets/js/2.e1436c28.js @@ -1 +1 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[2],Array(104).concat([function(t,e,n){"use strict";n.d(e,"d",function(){return r}),n.d(e,"a",function(){return s}),n.d(e,"i",function(){return o}),n.d(e,"f",function(){return u}),n.d(e,"g",function(){return c}),n.d(e,"h",function(){return l}),n.d(e,"b",function(){return f}),n.d(e,"e",function(){return h}),n.d(e,"k",function(){return p}),n.d(e,"l",function(){return d}),n.d(e,"c",function(){return v}),n.d(e,"j",function(){return g});const r=/#.*$/,i=/\.(md|html)$/,s=/\/$/,o=/^(https?:|mailto:|tel:)/;function a(t){return decodeURI(t).replace(r,"").replace(i,"")}function u(t){return o.test(t)}function c(t){return/^mailto:/.test(t)}function l(t){return/^tel:/.test(t)}function f(t){if(u(t))return t;const e=t.match(r),n=e?e[0]:"",i=a(t);return s.test(i)?t:i+".html"+n}function h(t,e){const n=t.hash,i=function(t){const e=t.match(r);if(e)return e[0]}(e);return(!i||n===i)&&a(t.path)===a(e)}function p(t,e,n){if(u(e))return{type:"external",path:e};n&&(e=function(t,e,n){const r=t.charAt(0);if("/"===r)return t;if("?"===r||"#"===r)return e+t;const i=e.split("/");n&&i[i.length-1]||i.pop();const s=t.replace(/^\//,"").split("/");for(let t=0;t({type:"auto",title:e.title,basePath:t.path,path:t.path+"#"+e.slug,children:e.children||[]}))}]}(t);const a=o.sidebar||s.sidebar;if(a){const{base:t,config:n}=function(t,e){if(Array.isArray(e))return{base:"/",config:e};for(const r in e)if(0===(n=t,/(\.html|\/)$/.test(n)?n:n+"/").indexOf(encodeURI(r)))return{base:r,config:e[r]};var n;return{}}(e,a);return n?n.map(e=>(function t(e,n,r,i=1){if("string"==typeof e)return p(n,e,r);if(Array.isArray(e))return Object.assign(p(n,e[0],r),{title:e[1]});{i>3&&console.error("[vuepress] detected a too deep nested sidebar group.");const s=e.children||[];return 0===s.length&&e.path?Object.assign(p(n,e.path,r),{title:e.title}):{type:"group",path:e.path,title:e.title,sidebarDepth:e.sidebarDepth,children:s.map(e=>t(e,n,r,i+1)),collapsable:!1!==e.collapsable}}})(e,i,t)):[]}return[]}function v(t){let e;return(t=t.map(t=>Object.assign({},t))).forEach(t=>{2===t.level?e=t:e&&(e.children||(e.children=[])).push(t)}),t.filter(t=>2===t.level)}function g(t){return Object.assign(t,{type:t.items&&t.items.length?"links":"link"})}},function(t,e,n){var r=n(154)("wks"),i=n(155),s=n(33).Symbol,o="function"==typeof s;(t.exports=function(t){return r[t]||(r[t]=o&&s[t]||(o?s:i)("Symbol."+t))}).store=r},,function(t,e){t.exports={}},function(t,e,n){"use strict";var r=n(1),i=n(37)(3);r(r.P+r.F*!n(22)([].some,!0),"Array",{some:function(t){return i(this,t,arguments[1])}})},function(t,e){t.exports={}},function(t,e,n){var r=n(9).f,i=n(8),s=n(17)("toStringTag");t.exports=function(t,e,n){t&&!i(t=n?t:t.prototype,s)&&r(t,s,{configurable:!0,value:e})}},,,,function(t,e,n){"use strict";n(115),n(116),n(108),n(124);var r=n(104),i={props:{item:{required:!0}},computed:{link:function(){return Object(r.b)(this.item.link)},exact:function(){var t=this;return this.$site.locales?Object.keys(this.$site.locales).some(function(e){return e===t.link}):"/"===this.link}},methods:{isExternal:r.f,isMailto:r.g,isTel:r.h}},s=n(0),o=Object(s.a)(i,function(){var t=this,e=t.$createElement,n=t._self._c||e;return t.isExternal(t.link)?n("a",{staticClass:"nav-link external",attrs:{href:t.link,target:t.isMailto(t.link)||t.isTel(t.link)?null:"_blank",rel:t.isMailto(t.link)||t.isTel(t.link)?null:"noopener noreferrer"}},[t._v("\n "+t._s(t.item.text)+"\n "),n("OutboundLink")],1):n("router-link",{staticClass:"nav-link",attrs:{to:t.link,exact:t.exact}},[t._v(t._s(t.item.text))])},[],!1,null,null,null);e.a=o.exports},function(t,e,n){for(var r=n(117),i=n(56),s=n(19),o=n(2),a=n(18),u=n(107),c=n(17),l=c("iterator"),f=c("toStringTag"),h=u.Array,p={CSSRuleList:!0,CSSStyleDeclaration:!1,CSSValueList:!1,ClientRectList:!1,DOMRectList:!1,DOMStringList:!1,DOMTokenList:!0,DataTransferItemList:!1,FileList:!1,HTMLAllCollection:!1,HTMLCollection:!1,HTMLFormElement:!1,HTMLSelectElement:!1,MediaList:!0,MimeTypeArray:!1,NamedNodeMap:!1,NodeList:!0,PaintRequestList:!1,Plugin:!1,PluginArray:!1,SVGLengthList:!1,SVGNumberList:!1,SVGPathSegList:!1,SVGPointList:!1,SVGStringList:!1,SVGTransformList:!1,SourceBufferList:!1,StyleSheetList:!0,TextTrackCueList:!1,TextTrackList:!1,TouchList:!1},d=i(p),v=0;v=t.length?(this._t=void 0,i(1)):i(0,"keys"==e?n:"values"==e?t[n]:[n,t[n]])},"values"),s.Arguments=s.Array,r("keys"),r("values"),r("entries")},function(t,e,n){var r=n(17)("unscopables"),i=Array.prototype;null==i[r]&&n(18)(i,r,{}),t.exports=function(t){i[r][t]=!0}},function(t,e){t.exports=function(t,e){return{value:e,done:!!t}}},function(t,e,n){"use strict";var r=n(61),i=n(1),s=n(19),o=n(18),a=n(107),u=n(121),c=n(110),l=n(122),f=n(17)("iterator"),h=!([].keys&&"next"in[].keys()),p=function(){return this};t.exports=function(t,e,n,d,v,g,m){u(n,e,d);var b,_,x,y=function(t){if(!h&&t in C)return C[t];switch(t){case"keys":case"values":return function(){return new n(this,t)}}return function(){return new n(this,t)}},k=e+" Iterator",L="values"==v,S=!1,C=t.prototype,$=C[f]||C["@@iterator"]||v&&C[v],w=$||y(v),O=v?L?y("entries"):w:void 0,T="Array"==e&&C.entries||$;if(T&&(x=l(T.call(new t)))!==Object.prototype&&x.next&&(c(x,k,!0),r||"function"==typeof x[f]||o(x,f,p)),L&&$&&"values"!==$.name&&(S=!0,w=function(){return $.call(this)}),r&&!m||!h&&!S&&C[f]||o(C,f,w),a[e]=w,a[k]=p,v)if(b={values:L?w:y("values"),keys:g?w:y("keys"),entries:O},m)for(_ in b)_ in C||s(C,_,b[_]);else i(i.P+i.F*(h||S),e,b);return b}},function(t,e,n){"use strict";var r=n(62),i=n(35),s=n(110),o={};n(18)(o,n(17)("iterator"),function(){return this}),t.exports=function(t,e,n){t.prototype=r(o,{next:i(1,n)}),s(t,e+" Iterator")}},function(t,e,n){var r=n(8),i=n(32),s=n(36)("IE_PROTO"),o=Object.prototype;t.exports=Object.getPrototypeOf||function(t){return t=i(t),r(t,s)?t[s]:"function"==typeof t.constructor&&t instanceof t.constructor?t.constructor.prototype:t instanceof Object?o:null}},function(t,e,n){var r=n(1),i=n(21),s=n(5);t.exports=function(t,e){var n=(i.Object||{})[t]||Object[t],o={};o[t]=e(n),r(r.S+r.F*s(function(){n(1)}),"Object",o)}},function(t,e,n){"use strict";n(125)("link",function(t){return function(e){return t(this,"a","href",e)}})},function(t,e,n){var r=n(1),i=n(5),s=n(7),o=/"/g,a=function(t,e,n,r){var i=String(s(t)),a="<"+e;return""!==n&&(a+=" "+n+'="'+String(r).replace(o,""")+'"'),a+">"+i+""};t.exports=function(t,e){var n={};n[t]=e(a),r(r.P+r.F*i(function(){var e=""[t]('"');return e!==e.toLowerCase()||e.split('"').length>3}),"String",n)}},function(t,e,n){},function(t,e,n){},function(t,e,n){},function(t,e){var n={}.toString;t.exports=function(t){return n.call(t).slice(8,-1)}},function(t,e){var n=Math.ceil,r=Math.floor;t.exports=function(t){return isNaN(t=+t)?0:(t>0?r:n)(t)}},function(t,e){t.exports=function(t){if(null==t)throw TypeError("Can't call method on "+t);return t}},function(t,e,n){var r=n(183),i=n(131);t.exports=function(t){return r(i(t))}},function(t,e,n){var r=n(154)("keys"),i=n(155);t.exports=function(t){return r[t]||(r[t]=i(t))}},function(t,e,n){},function(t,e,n){},function(t,e,n){},function(t,e,n){},function(t,e,n){},function(t,e,n){},function(t,e,n){},,function(t,e,n){},,,,,,,function(t,e,n){"use strict";var r=n(6),i=n(23),s=n(70),o=n(71);n(72)("match",1,function(t,e,n,a){return[function(n){var r=t(this),i=null==n?void 0:n[e];return void 0!==i?i.call(n,r):new RegExp(n)[e](String(r))},function(t){var e=a(n,t,this);if(e.done)return e.value;var u=r(t),c=String(this);if(!u.global)return o(u,c);var l=u.unicode;u.lastIndex=0;for(var f,h=[],p=0;null!==(f=o(u,c));){var d=String(f[0]);h[p]=d,""===d&&(u.lastIndex=s(c,i(u.lastIndex),l)),p++}return 0===p?null:h}]})},function(t,e,n){"use strict";var r=n(176)(!0);n(151)(String,"String",function(t){this._t=String(t),this._i=0},function(){var t,e=this._t,n=this._i;return n>=e.length?{value:void 0,done:!0}:(t=r(e,n),this._i+=t.length,{value:t,done:!1})})},function(t,e,n){"use strict";var r=n(152),i=n(58),s=n(177),o=n(57),a=n(109),u=n(178),c=n(157),l=n(187),f=n(105)("iterator"),h=!([].keys&&"next"in[].keys()),p=function(){return this};t.exports=function(t,e,n,d,v,g,m){u(n,e,d);var b,_,x,y=function(t){if(!h&&t in C)return C[t];switch(t){case"keys":case"values":return function(){return new n(this,t)}}return function(){return new n(this,t)}},k=e+" Iterator",L="values"==v,S=!1,C=t.prototype,$=C[f]||C["@@iterator"]||v&&C[v],w=$||y(v),O=v?L?y("entries"):w:void 0,T="Array"==e&&C.entries||$;if(T&&(x=l(T.call(new t)))!==Object.prototype&&x.next&&(c(x,k,!0),r||"function"==typeof x[f]||o(x,f,p)),L&&$&&"values"!==$.name&&(S=!0,w=function(){return $.call(this)}),r&&!m||!h&&!S&&C[f]||o(C,f,w),a[e]=w,a[k]=p,v)if(b={values:L?w:y("values"),keys:g?w:y("keys"),entries:O},m)for(_ in b)_ in C||s(C,_,b[_]);else i(i.P+i.F*(h||S),e,b);return b}},function(t,e){t.exports=!0},function(t,e,n){var r=n(130),i=Math.min;t.exports=function(t){return t>0?i(r(t),9007199254740991):0}},function(t,e,n){var r=n(31),i=n(33),s=i["__core-js_shared__"]||(i["__core-js_shared__"]={});(t.exports=function(t,e){return s[t]||(s[t]=void 0!==e?e:{})})("versions",[]).push({version:r.version,mode:n(152)?"pure":"global",copyright:"© 2019 Denis Pushkarev (zloirock.ru)"})},function(t,e){var n=0,r=Math.random();t.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++n+r).toString(36))}},function(t,e){t.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(t,e,n){var r=n(34).f,i=n(60),s=n(105)("toStringTag");t.exports=function(t,e,n){t&&!i(t=n?t:t.prototype,s)&&r(t,s,{configurable:!0,value:e})}},function(t,e,n){var r=n(131);t.exports=function(t){return Object(r(t))}},function(t,e,n){var r=n(129),i=n(105)("toStringTag"),s="Arguments"==r(function(){return arguments}());t.exports=function(t){var e,n,o;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=function(t,e){try{return t[e]}catch(t){}}(e=Object(t),i))?n:s?r(e):"Object"==(o=r(e))&&"function"==typeof e.callee?"Arguments":o}},,function(t,e,n){"use strict";n.r(e);n(108);var r=n(104),i={name:"SidebarGroup",props:["item","open","collapsable","depth"],components:{DropdownTransition:n(162).a},beforeCreate:function(){this.$options.components.SidebarLinks=n(161).default},methods:{isActive:r.e}},s=(n(206),n(0)),o=Object(s.a)(i,function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("section",{staticClass:"sidebar-group",class:[{collapsable:t.collapsable,"is-sub-group":0!==t.depth},"depth-"+t.depth]},[t.item.path?n("router-link",{staticClass:"sidebar-heading clickable",class:{open:t.open,active:t.isActive(t.$route,t.item.path)},attrs:{to:t.item.path},nativeOn:{click:function(e){return t.$emit("toggle")}}},[n("span",[t._v(t._s(t.item.title))]),t._v(" "),t.collapsable?n("span",{staticClass:"arrow",class:t.open?"down":"right"}):t._e()]):n("p",{staticClass:"sidebar-heading",class:{open:t.open},on:{click:function(e){return t.$emit("toggle")}}},[n("span",[t._v(t._s(t.item.title))]),t._v(" "),t.collapsable?n("span",{staticClass:"arrow",class:t.open?"down":"right"}):t._e()]),t._v(" "),n("DropdownTransition",[t.open||!t.collapsable?n("SidebarLinks",{staticClass:"sidebar-group-items",attrs:{items:t.item.children,sidebarDepth:t.item.sidebarDepth,depth:t.depth+1}}):t._e()],1)],1)},[],!1,null,null,null).exports;n(64);function a(t,e,n,r){return t("router-link",{props:{to:e,activeClass:"",exactActiveClass:""},class:{active:r,"sidebar-link":!0}},n)}function u(t,e,n,i,s){var o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:1;return!e||o>s?null:t("ul",{class:"sidebar-sub-headers"},e.map(function(e){var c=Object(r.e)(i,n+"#"+e.slug);return t("li",{class:"sidebar-sub-header"},[a(t,n+"#"+e.slug,e.title,c),u(t,e.children,n,i,s,o+1)])}))}var c={functional:!0,props:["item","sidebarDepth"],render:function(t,e){var n=e.parent,i=n.$page,s=(n.$site,n.$route),o=n.$themeConfig,c=n.$themeLocaleConfig,l=e.props,f=l.item,h=l.sidebarDepth,p=Object(r.e)(s,f.path),d="auto"===f.type?p||f.children.some(function(t){return Object(r.e)(s,f.basePath+"#"+t.slug)}):p,v="external"===f.type?function(t,e,n){return t("a",{attrs:{href:e,target:"_blank",rel:"noopener noreferrer"},class:{"sidebar-link":!0}},[n,t("OutboundLink")])}(t,f.path,f.title||f.path):a(t,f.path,f.title||f.path,d),g=i.frontmatter.sidebarDepth||h||c.sidebarDepth||o.sidebarDepth,m=null==g?1:g,b=c.displayAllHeaders||o.displayAllHeaders;return"auto"===f.type?[v,u(t,f.children,f.basePath,s,m)]:(d||b)&&f.headers&&!r.d.test(f.path)?[v,u(t,Object(r.c)(f.headers),f.path,s,m)]:v}};n(207);var l={name:"SidebarLinks",components:{SidebarGroup:o,SidebarLink:Object(s.a)(c,void 0,void 0,!1,null,null,null).exports},props:["items","depth","sidebarDepth"],data:function(){return{openGroupIndex:0}},created:function(){this.refreshIndex()},watch:{$route:function(){this.refreshIndex()}},methods:{refreshIndex:function(){var t=function(t,e){for(var n=0;n-1&&(this.openGroupIndex=t)},toggleGroup:function(t){this.openGroupIndex=t===this.openGroupIndex?-1:t},isActive:function(t){return Object(r.e)(this.$route,t.regularPath)}}},f=Object(s.a)(l,function(){var t=this,e=t.$createElement,n=t._self._c||e;return t.items.length?n("ul",{staticClass:"sidebar-links"},t._l(t.items,function(e,r){return n("li",{key:r},["group"===e.type?n("SidebarGroup",{attrs:{item:e,open:r===t.openGroupIndex,collapsable:e.collapsable||e.collapsible,depth:t.depth},on:{toggle:function(e){return t.toggleGroup(r)}}}):n("SidebarLink",{attrs:{sidebarDepth:t.sidebarDepth,item:e}})],1)}),0):t._e()},[],!1,null,null,null);e.default=f.exports},function(t,e,n){"use strict";var r={name:"DropdownTransition",methods:{setHeight:function(t){t.style.height=t.scrollHeight+"px"},unsetHeight:function(t){t.style.height=""}}},i=(n(201),n(0)),s=Object(i.a)(r,function(){var t=this.$createElement;return(this._self._c||t)("transition",{attrs:{name:"dropdown"},on:{enter:this.setHeight,"after-enter":this.unsetHeight,"before-leave":this.setHeight}},[this._t("default")],2)},[],!1,null,null,null);e.a=s.exports},function(t,e,n){"use strict";var r=n(126);n.n(r).a},function(t,e,n){"use strict";n(67)("trim",function(t){return function(){return t(this,3)}})},function(t,e,n){"use strict";var r=n(127);n.n(r).a},function(t,e,n){"use strict";var r=n(128);n.n(r).a},function(t,e,n){var r=n(2),i=n(65),s=n(9).f,o=n(66).f,a=n(168),u=n(73),c=r.RegExp,l=c,f=c.prototype,h=/a/g,p=/a/g,d=new c(h)!==h;if(n(3)&&(!d||n(5)(function(){return p[n(17)("match")]=!1,c(h)!=h||c(p)==p||"/a/i"!=c(h,"i")}))){c=function(t,e){var n=this instanceof c,r=a(t),s=void 0===e;return!n&&r&&t.constructor===c&&s?t:i(d?new l(r&&!s?t.source:t,e):l((r=t instanceof c)?t.source:t,r&&s?u.call(t):e),n?this:f,c)};for(var v=function(t){t in c||s(c,t,{configurable:!0,get:function(){return l[t]},set:function(e){l[t]=e}})},g=o(l),m=0;g.length>m;)v(g[m++]);f.constructor=c,c.prototype=f,n(19)(r,"RegExp",c)}n(169)("RegExp")},function(t,e,n){var r=n(4),i=n(10),s=n(17)("match");t.exports=function(t){var e;return r(t)&&(void 0!==(e=t[s])?!!e:"RegExp"==i(t))}},function(t,e,n){"use strict";var r=n(2),i=n(9),s=n(3),o=n(17)("species");t.exports=function(t){var e=r[t];s&&e&&!e[o]&&i.f(e,o,{configurable:!0,get:function(){return this}})}},function(t,e,n){t.exports=n(171)},function(t,e,n){n(172),t.exports=n(31).Array.isArray},function(t,e,n){var r=n(58);r(r.S,"Array",{isArray:n(173)})},function(t,e,n){var r=n(129);t.exports=Array.isArray||function(t){return"Array"==r(t)}},function(t,e,n){t.exports=n(175)},function(t,e,n){n(150),n(188),t.exports=n(31).Array.from},function(t,e,n){var r=n(130),i=n(131);t.exports=function(t){return function(e,n){var s,o,a=String(i(e)),u=r(n),c=a.length;return u<0||u>=c?t?"":void 0:(s=a.charCodeAt(u))<55296||s>56319||u+1===c||(o=a.charCodeAt(u+1))<56320||o>57343?t?a.charAt(u):s:t?a.slice(u,u+2):o-56320+(s-55296<<10)+65536}}},function(t,e,n){t.exports=n(57)},function(t,e,n){"use strict";var r=n(179),i=n(63),s=n(157),o={};n(57)(o,n(105)("iterator"),function(){return this}),t.exports=function(t,e,n){t.prototype=r(o,{next:i(1,n)}),s(t,e+" Iterator")}},function(t,e,n){var r=n(59),i=n(180),s=n(156),o=n(133)("IE_PROTO"),a=function(){},u=function(){var t,e=n(69)("iframe"),r=s.length;for(e.style.display="none",n(186).appendChild(e),e.src="javascript:",(t=e.contentWindow.document).open(),t.write(" +

Kubernetes + DevOps

如何继承 DevOps ?

文档准备好后,请通知我

Copyright © 2019-present Huanqing Shao
+ diff --git a/docs/guide/cluster/computing.html b/docs/guide/cluster/computing.html index b35a5f8..cdfd24d 100644 --- a/docs/guide/cluster/computing.html +++ b/docs/guide/cluster/computing.html @@ -7,7 +7,7 @@ - + @@ -21,6 +21,6 @@ →

Copyright © 2019-present Huanqing Shao
- + diff --git a/docs/guide/cluster/namespace.html b/docs/guide/cluster/namespace.html index 18e0323..3f1099e 100644 --- a/docs/guide/cluster/namespace.html +++ b/docs/guide/cluster/namespace.html @@ -7,7 +7,7 @@ - + @@ -20,6 +20,6 @@ →

Copyright © 2019-present Huanqing Shao
- + diff --git a/docs/guide/cluster/storage.html b/docs/guide/cluster/storage.html index f818170..bc5e4e0 100644 --- a/docs/guide/cluster/storage.html +++ b/docs/guide/cluster/storage.html @@ -7,7 +7,7 @@ - + @@ -22,6 +22,6 @@ sudo mount -t nfs -o vers=4,minorversion=0,noresvport Copyright © 2019-present Huanqing Shao
- + diff --git a/docs/guide/diagonize/events.html b/docs/guide/diagonize/events.html index 31962de..c8a2c70 100644 --- a/docs/guide/diagonize/events.html +++ b/docs/guide/diagonize/events.html @@ -7,7 +7,7 @@ - + @@ -20,6 +20,6 @@ →

Copyright © 2019-present Huanqing Shao
- + diff --git a/docs/guide/diagonize/logs.html b/docs/guide/diagonize/logs.html index fd09750..e39281f 100644 --- a/docs/guide/diagonize/logs.html +++ b/docs/guide/diagonize/logs.html @@ -7,7 +7,7 @@ - + @@ -20,6 +20,6 @@ →

Copyright © 2019-present Huanqing Shao
- + diff --git a/docs/guide/diagonize/port-forward.html b/docs/guide/diagonize/port-forward.html index 87fcb54..f888bb5 100644 --- a/docs/guide/diagonize/port-forward.html +++ b/docs/guide/diagonize/port-forward.html @@ -7,7 +7,7 @@ - + @@ -20,6 +20,6 @@ →

Copyright © 2019-present Huanqing Shao
- + diff --git a/docs/guide/example/busybox.html b/docs/guide/example/busybox.html index c14585b..97f76d7 100644 --- a/docs/guide/example/busybox.html +++ b/docs/guide/example/busybox.html @@ -7,7 +7,7 @@ - + @@ -20,6 +20,6 @@ →

Copyright © 2019-present Huanqing Shao
- + diff --git a/docs/guide/example/import.html b/docs/guide/example/import.html index 90d4f28..599374e 100644 --- a/docs/guide/example/import.html +++ b/docs/guide/example/import.html @@ -7,7 +7,7 @@ - + @@ -37,6 +37,6 @@ com.netflix.discovery.shared.transport.TransportException: Cannot execute reques →

Copyright © 2019-present Huanqing Shao
- + diff --git a/docs/guide/example/monitor.html b/docs/guide/example/monitor.html index a057252..961fbcd 100644 --- a/docs/guide/example/monitor.html +++ b/docs/guide/example/monitor.html @@ -7,7 +7,7 @@ - + @@ -21,6 +21,6 @@ →

Copyright © 2019-present Huanqing Shao
- + diff --git a/docs/guide/index.html b/docs/guide/index.html index deb493a..92a717c 100644 --- a/docs/guide/index.html +++ b/docs/guide/index.html @@ -7,7 +7,7 @@ - + @@ -16,6 +16,6 @@ →

Copyright © 2019-present Huanqing Shao
- + diff --git a/docs/guide/monitor/apis.html b/docs/guide/monitor/apis.html index 433d8c2..429b8cf 100644 --- a/docs/guide/monitor/apis.html +++ b/docs/guide/monitor/apis.html @@ -7,7 +7,7 @@ - + @@ -16,6 +16,6 @@

Copyright © 2019-present Huanqing Shao
- + diff --git a/docs/guide/monitor/index.html b/docs/guide/monitor/index.html index 86e95fb..2dfc140 100644 --- a/docs/guide/monitor/index.html +++ b/docs/guide/monitor/index.html @@ -7,7 +7,7 @@ - + @@ -20,6 +20,6 @@ →

Copyright © 2019-present Huanqing Shao
- + diff --git a/docs/guide/namespace/adjustion.html b/docs/guide/namespace/adjustion.html index 8dbf85d..ab170af 100644 --- a/docs/guide/namespace/adjustion.html +++ b/docs/guide/namespace/adjustion.html @@ -7,7 +7,7 @@ - + @@ -21,6 +21,6 @@ →

Copyright © 2019-present Huanqing Shao
- + diff --git a/docs/guide/namespace/configMap.html b/docs/guide/namespace/configMap.html index 5f66cdb..01cc76e 100644 --- a/docs/guide/namespace/configMap.html +++ b/docs/guide/namespace/configMap.html @@ -7,7 +7,7 @@ - + @@ -20,6 +20,6 @@ →

Copyright © 2019-present Huanqing Shao
- + diff --git a/docs/guide/namespace/index.html b/docs/guide/namespace/index.html index b959aea..8d21db6 100644 --- a/docs/guide/namespace/index.html +++ b/docs/guide/namespace/index.html @@ -7,11 +7,11 @@ - +

应用管理

创建工作负载

删除工作负载

伸缩

升级工作负载版本

环境迁移

导出

导入

Copyright © 2019-present Huanqing Shao
- + diff --git a/docs/guide/namespace/multi-env.html b/docs/guide/namespace/multi-env.html index c8cc262..74f00b2 100644 --- a/docs/guide/namespace/multi-env.html +++ b/docs/guide/namespace/multi-env.html @@ -7,7 +7,7 @@ - + @@ -42,6 +42,6 @@ →

Copyright © 2019-present Huanqing Shao
- + diff --git a/docs/guide/namespace/pvc.html b/docs/guide/namespace/pvc.html index 98e31ac..b2b070d 100644 --- a/docs/guide/namespace/pvc.html +++ b/docs/guide/namespace/pvc.html @@ -7,7 +7,7 @@ - + @@ -20,6 +20,6 @@ →

Copyright © 2019-present Huanqing Shao
- + diff --git a/docs/guide/namespace/secrets.html b/docs/guide/namespace/secrets.html index e6e3168..8c69f61 100644 --- a/docs/guide/namespace/secrets.html +++ b/docs/guide/namespace/secrets.html @@ -7,7 +7,7 @@ - + @@ -20,6 +20,6 @@ →

Copyright © 2019-present Huanqing Shao
- + diff --git a/docs/guide/namespace/workload.html b/docs/guide/namespace/workload.html index a557081..cc37efd 100644 --- a/docs/guide/namespace/workload.html +++ b/docs/guide/namespace/workload.html @@ -7,7 +7,7 @@ - + @@ -20,6 +20,6 @@ →

Copyright © 2019-present Huanqing Shao
- + diff --git a/docs/index.html b/docs/index.html index c2e2d71..8adf5c1 100644 --- a/docs/index.html +++ b/docs/index.html @@ -6,8 +6,8 @@ Kuboard - - + + @@ -18,6 +18,6 @@ 开始使用 →

降低 Kubernetes 门槛

创建工作负载,导出/导入配置,批量调整镜像版本,问题诊断

直观显示微服务架构

展现层/网关层/服务层/持久层/中间件层/监控层

上下文关联监控

资源层监控/中间件层监控/链路层监控

- + diff --git a/docs/install/index.html b/docs/install/index.html index f9de466..dad22da 100644 --- a/docs/install/index.html +++ b/docs/install/index.html @@ -7,11 +7,11 @@ - +

概述

已经有 Kubernetes 集群,请直接 安装 Kuboard

还没有 Kubernetes 集群:


在线提问

Kuboard 兴趣群二维码

Copyright © 2019-present Huanqing Shao
- + diff --git a/docs/install/install-common-ingress.html b/docs/install/install-common-ingress.html index 9404995..e801beb 100644 --- a/docs/install/install-common-ingress.html +++ b/docs/install/install-common-ingress.html @@ -7,13 +7,13 @@ - +

安装 Ingress Controller

ingress官方文档:https://kubernetes.io/docs/concepts/services-networking/ingress/

Ingress Controllers官网介绍:https://kubernetes.io/docs/concepts/services-networking/ingress-controllers/

本文中使用如下部署方式:https://kubernetes.github.io/ingress-nginx/deploy/baremetal/#using-a-self-provisioned-edge

kubernetes支持多种Ingress Controllers,本文推荐使用

https://github.com/nginxinc/kubernetes-ingress

在 apple-master-a-1 上执行

su - gitlab-runner
 kubectl apply -f https://raw.githubusercontent.com/eip-work/eip-monitor-repository/master/dashboard/nginx-ingress.yaml
 

在IaaS云控制台完成如下配置(公网ELB

创建负载均衡 ELB:

​ 监听器 1:80 / TCP, SOURCE_ADDRESS 会话保持

​ 服务器资源池 1: apple-worker-x-x 的所有节点的 80端口

​ 监听器 2:443 / TCP, SOURCE_ADDRESS 会话保持

​ 服务器资源池 2: apple-worker-x-x 的所有节点的443端口

假设刚创建的负载均衡 ELB 的 IP 地址为: z.z.z.z

配置域名解析

将域名 *.apple.yourdomain.com 解析到地址负载均衡服务器 的 IP 地址 z.z.z.z

验证配置

在浏览器访问 a.apple.yourdomain.com,将得到 404 NotFound 错误页面

Copyright © 2019-present Huanqing Shao
- + diff --git a/docs/install/install-common-vm.html b/docs/install/install-common-vm.html index 34bd36f..300e3a9 100644 --- a/docs/install/install-common-vm.html +++ b/docs/install/install-common-vm.html @@ -7,7 +7,7 @@ - + @@ -70,6 +70,6 @@ docker tag da86e6ba6ca1 k8s.gcr.io/pause:3.1 docker tag eb516548c180 k8s.gcr.io/coredns:1.3.1 docker tag 2c4adeb21b4f k8s.gcr.io/etcd:3.3.10

制作镜像

请参考阿里云基于ECS 制作虚拟机镜像 的文档

Copyright © 2019-present Huanqing Shao
- + diff --git a/docs/install/install-dashboard copy.html b/docs/install/install-dashboard copy.html index 0a026ef..7f46109 100644 --- a/docs/install/install-dashboard copy.html +++ b/docs/install/install-dashboard copy.html @@ -7,13 +7,13 @@ - +

安装 Kuboard

前提

安装 Kuboard 时,假设您已经有一个 Kubernetes 集群

如果没有 Kubernetes 集群:

碰到问题? 在线提问

Kuboard 兴趣群二维码

兼容性

Kubernetes 版本 Kuboard 版本 兼容性 说明
v1.15 v1.0.0-beta.13 😄 已验证
v1.14 v1.0.0-beta.13 😄 已验证
v1.13 v1.0.0-beta.13 😄 已验证
v1.12 v1.0.0-beta.13 😐 Kubernetes Api v1.12 尚不支持 dryRun,
忽略Kuboard在执行命令时的参数校验错误,可正常工作
v1.11 v1.0.0-beta.13 😐 同上

安装

获取并修改yaml文件

wget https://raw.githubusercontent.com/eip-work/eip-monitor-repository/master/dashboard/kuboard.yaml
 

修改文件 Kuboard.yaml 中 Ingress 的 host 为 kuboard.yourclustername.yourdomain.com

执行安装

kubectl apply -f kuboard.yaml 
 

获取 Token

您可以获得管理员用户、只读用户的Token

访问 Kuboard

您可以通过NodePort、port-forward、域名三种方式当中的任意一种访问 Kuboard

下一步

Copyright © 2019-present Huanqing Shao
- + diff --git a/docs/install/install-dashboard-diagonize-kube-dns.html b/docs/install/install-dashboard-diagonize-kube-dns.html index 6f5c4f3..bb0822a 100644 --- a/docs/install/install-dashboard-diagonize-kube-dns.html +++ b/docs/install/install-dashboard-diagonize-kube-dns.html @@ -7,11 +7,11 @@ - +

创建 kube-dns Service

Copyright © 2019-present Huanqing Shao
- + diff --git a/docs/install/install-dashboard-diagonize.html b/docs/install/install-dashboard-diagonize.html index c9532b4..e20e62b 100644 --- a/docs/install/install-dashboard-diagonize.html +++ b/docs/install/install-dashboard-diagonize.html @@ -7,7 +7,7 @@ - + @@ -31,6 +31,6 @@ kuboard-7bb8d57995-nkqzw 1

如果您得到如下错误信息: host not found in resolver "kube-dns.kube-system.svc.cluster.local"

2019/07/26 23:09:33 [emerg] 1#1: host not found in resolver "kube-dns.kube-system.svc.cluster.local" in /etc/nginx/conf.d/nginx.80.conf:36
 nginx: [emerg] host not found in resolver "kube-dns.kube-system.svc.cluster.local" in /etc/nginx/conf.d/nginx.80.conf:36
 

创建 kube-dns Service

Copyright © 2019-present Huanqing Shao
- + diff --git a/docs/install/install-dashboard-upgrade.html b/docs/install/install-dashboard-upgrade.html index 3578f50..90a8d51 100644 --- a/docs/install/install-dashboard-upgrade.html +++ b/docs/install/install-dashboard-upgrade.html @@ -7,7 +7,7 @@ - + @@ -16,6 +16,6 @@

Copyright © 2019-present Huanqing Shao
- + diff --git a/docs/install/install-dashboard.html b/docs/install/install-dashboard.html index 6624a2f..9c46aa7 100644 --- a/docs/install/install-dashboard.html +++ b/docs/install/install-dashboard.html @@ -7,7 +7,7 @@ - + @@ -20,6 +20,6 @@ →

Copyright © 2019-present Huanqing Shao
- + diff --git a/docs/install/install-k8s.html b/docs/install/install-k8s.html index 6d9b77e..a6aa1cd 100644 --- a/docs/install/install-k8s.html +++ b/docs/install/install-k8s.html @@ -7,7 +7,7 @@ - + @@ -136,6 +136,6 @@ kubectl apply -f https://raw.githubusercontent.com/eip-work/eip-monitor-reposito →

Copyright © 2019-present Huanqing Shao
- + diff --git a/docs/install/install-kind.html b/docs/install/install-kind.html deleted file mode 100644 index c5d923f..0000000 --- a/docs/install/install-kind.html +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - 在单机使用 kind 安装 Kubernetes | Kuboard - - - - - - - -

在单机使用 kind 安装 Kubernetes

本文旨在通过使用 kind 搭建本地 k8s 集群环境,为技术爱好者提供快速上手 Kuboard 的基本实践方式。

环境简介

本地搭建 k8s 集群需要 kind 工具及 docker 环境。

建议硬件配置:2核 cpu,8G 内存

ps: 以下均为在 Linux 平台实践,其他平台可参考文章中链接。

kind 简介与安装

kind:https://kind.sigs.k8s.io/ 是一个使用 Docker 容器运行本地 Kubernetes 集群的工具。 -ps:本文使用kind V0.4.0

安装:

  • linux:

    curl -Lo ./kind-linux-amd64 https://github.com/kubernetes-sigs/kind/releases/download/v0.4.0/kind-linux-amd64
    -chmod +x ./kind-linux-amd64
    -mv ./kind-linux-amd64 /usr/local/bin/kind
    -
  • win:

    curl.exe -Lo kind-windows-amd64.exe https://github.com/kubernetes-sigs/kind/releases/download/v0.4.0/kind-windows-amd64
    -Move-Item .\kind-windows-amd64.exe c:\some-dir-in-your-PATH\kind.exe
    -
  • mac:

    curl -Lo ./kind-darwin-amd64 https://github.com/kubernetes-sigs/kind/releases/download/v0.4.0/kind-darwin-amd64
    -chmod +x ./kind-darwin-amd64
    -mv ./kind-darwin-amd64 /usr/local/bin/kind
    -

docker 环境

Kind 的主要功能目前需要有 Docker 环境的支持,可参考 Docker 官方文档:https://links.jianshu.com/go?to=https%3A%2F%2Fdocs.docker.com%2Finstall%2F 进行安装。

kubectl 安装

kubectl https://kubernetes.io/docs/tasks/tools/install-kubectl/ 是 Kubernetes 命令行工具,可以在 Kubernetes 上部署和管理应用程序

Linux:

curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.15.0/bin/linux/amd64/kubectl
-chmod +x ./kubectl
-sudo mv ./kubectl /usr/local/bin/kubectl
-

ps: 由于网络问题多次尝试可下载成功

k8s 集群搭建

准备 kind 搭建集群配置文件 kind-config.yaml

kind: Cluster
-apiVersion: kind.sigs.k8s.io/v1alpha3
-nodes:
-- role: control-plane
-- role: worker
-

使用 kind 搭建集群

kind create cluster --config kind-config.yaml
-

创建成功

1563696697515

按照提示配置环境变量

export KUBECONFIG="$(kind get kubeconfig-path --name="kind")"
-

查看集群信息

kubectl cluster-info
-

1563697667480

kuboard 安装

官方安装地址:http://kuboard.cn/#/install/install-dashboard

获取并修改 yaml 文件

wget https://raw.githubusercontent.com/eip-work/eip-monitor-repository/master/dashboard/kuboard.yaml
-

修改文件 kuboard.yaml 中 Ingress 的 host 为空

执行安装

kubectl apply -f kuboard.yaml 
-

查看启动状态

kubectl get pods -n kube-system --watch
-

等待 kuboard 启动成功

访问 kuboard 页面

待启动成功后,需要做 80 端口转发,通过浏览器访问 kuboard

kubectl port-forward service/kuboard 9080:80 -n kube-system
-

获取登录 token

kubectl -n kube-system describe secret $(kubectl -n kube-system get secret | grep kuboard-user | awk '{print $1}')   
-

1563698644736

浏览器中访问 http://localhost:9080

1563698714557

将获取的 token 复制到浏览器中,访问成功

1563698865448

Copyright © 2019-present Huanqing Shao
- - - diff --git a/docs/install/install-kubectl.html b/docs/install/install-kubectl.html index 86fc5c7..f898697 100644 --- a/docs/install/install-kubectl.html +++ b/docs/install/install-kubectl.html @@ -7,7 +7,7 @@ - + @@ -40,6 +40,6 @@ →

Copyright © 2019-present Huanqing Shao
- + diff --git a/docs/install/install-kubernetes.html b/docs/install/install-kubernetes.html index bd90b59..84749c6 100644 --- a/docs/install/install-kubernetes.html +++ b/docs/install/install-kubernetes.html @@ -7,7 +7,7 @@ - + @@ -119,6 +119,6 @@ kubectl apply -f https://raw.githubusercontent.com/eip-work/eip-monitor-reposito →

Copyright © 2019-present Huanqing Shao
- + diff --git a/docs/micro-service/spring-cloud/cloud-eureka.html b/docs/micro-service/spring-cloud/cloud-eureka.html index d0857f6..3d0c2cf 100644 --- a/docs/micro-service/spring-cloud/cloud-eureka.html +++ b/docs/micro-service/spring-cloud/cloud-eureka.html @@ -7,7 +7,7 @@ - + @@ -16,6 +16,6 @@

Copyright © 2019-present Huanqing Shao
- + diff --git a/docs/micro-service/spring-cloud/index.html b/docs/micro-service/spring-cloud/index.html index 47dd894..6d7a81c 100644 --- a/docs/micro-service/spring-cloud/index.html +++ b/docs/micro-service/spring-cloud/index.html @@ -7,15 +7,15 @@ - + -

Spring Cloud on Kubernetes

使用 Kuboard 完成一套简单的 Spring Cloud 微服务应用的部署,关注点在于 Spring Cloud 各类型组件在 Kubernetes 中部署时的注意事项。

文档准备好后,请通知我