Kubernetes CKS 2021【4】---Cluster Setup - Secure Ingress

网友投稿 248 2022-09-10

Kubernetes CKS 2021【4】---Cluster Setup - Secure Ingress

文章目录

​​1. 介绍​​​​2. Practice - create an Ingress​​​​3. Practice - Secure an Ingress​​

1. 介绍

2. Practice - create an Ingress

root@master:~/cks/nginx-ingress# kubectl apply -f createdserviceaccount/ingress-nginx createdconfigmap/ingress-nginx-controller createdclusterrole.rbac.authorization.k8s.io/ingress-nginx createdclusterrolebinding.rbac.authorization.k8s.io/ingress-nginx createdrole.rbac.authorization.k8s.io/ingress-nginx createdrolebinding.rbac.authorization.k8s.io/ingress-nginx createdservice/ingress-nginx-controller-admission createdservice/ingress-nginx-controller createddeployment.apps/ingress-nginx-controller createdvalidatingwebhookconfiguration.admissionregistration.k8s.io/ingress-nginx-admission createdserviceaccount/ingress-nginx-admission createdclusterrole.rbac.authorization.k8s.io/ingress-nginx-admission createdclusterrolebinding.rbac.authorization.k8s.io/ingress-nginx-admission createdrole.rbac.authorization.k8s.io/ingress-nginx-admission createdrolebinding.rbac.authorization.k8s.io/ingress-nginx-admission createdjob.batch/ingress-nginx-admission-create createdjob.batch/ingress-nginx-admission-patch createdroot@master:~/cks/nginx-ingress# k get pod,svc -n ingress-nginxNAME READY STATUS RESTARTS AGEpod/ingress-nginx-admission-create-2zdxl 0/1 Completed 0 41spod/ingress-nginx-admission-patch-tnwlh 0/1 Completed 1 41spod/ingress-nginx-controller-548df9766d-6m74x 1/1 Running 0 41sNAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGEservice/ingress-nginx-controller NodePort 10.104.236.124 80:31459/TCP,443:30640/TCP 42sservice/ingress-nginx-controller-admission ClusterIP 10.97.93.128 443/TCP 42s

应用ingress链接:​​cat secure-ingress.yaml apiVersion: networking.k8s.io/v1kind: Ingressmetadata: name: secure-ingress annotations: nginx.ingress.kubernetes.io/rewrite-target: /spec: rules: - paths: - path: /service1 pathType: Prefix backend: service: name: service1 port: number: 80 - path: /service2 pathType: Prefix backend: service: name: service2 port: number: 80root@master:~/cks/nginx-ingress# k create -f secure-ingress.yaml ingress.networking.k8s.io/secure-ingress createdroot@master:~/cks/nginx-ingress# k get ingNAME CLASS HOSTS ADDRESS PORTS AGEsecure-ingress * 192.168.211.41 80 30sroot@master:~/cks/nginx-ingress# k run pod1 --image=nginxroot@master:~/cks/nginx-ingress# k run pod2 --image=k expose pod pod1 --port 80 --name service1service/service1 exposedroot@master:~/cks/nginx-ingress# k expose pod pod2 --port 80 --name service2service/service2 exposedroot@master:~/cks/nginx-ingress# curl html>Welcome to nginx!title><style> body { width: 35em; margin: 0 auto; font-family: Tahoma, Verdana, Arial, sans-serif; }style>head><body><h1>Welcome to nginx!h1><p>If you see this page, the nginx web server is successfully installed andworking. Further configuration is required.p><p>For online documentation and support please refer to<a href="support is available at<a href="you for using nginx.em>p>body>html>root@master:~/cks/nginx-ingress# curl works!h1>body>html></p><p>3. Practice - Secure an Ingress</p><p>root@master:~/cks/nginx-ingress# curl -kv* Trying 192.168.211.40...* TCP_NODELAY set* Connected to 192.168.211.40 (192.168.211.40) port 32300 (#0)* ALPN, offering h2* ALPN, offering successfully set certificate verify locations:* CAfile: /etc/ssl/certs/ca-certificates.crt CApath: /etc/ssl/certs* TLSv1.3 (OUT), TLS handshake, Client hello (1):* TLSv1.3 (IN), TLS handshake, Server hello (2):* TLSv1.3 (IN), TLS Unknown, Certificate Status (22):* TLSv1.3 (IN), TLS handshake, Unknown (8):* TLSv1.3 (IN), TLS Unknown, Certificate Status (22):* TLSv1.3 (IN), TLS handshake, Certificate (11):* TLSv1.3 (IN), TLS Unknown, Certificate Status (22):* TLSv1.3 (IN), TLS handshake, CERT verify (15):* TLSv1.3 (IN), TLS Unknown, Certificate Status (22):* TLSv1.3 (IN), TLS handshake, Finished (20):* TLSv1.3 (OUT), TLS change cipher, Client hello (1):* TLSv1.3 (OUT), TLS Unknown, Certificate Status (22):* TLSv1.3 (OUT), TLS handshake, Finished (20):* SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384* ALPN, server accepted to use h2* Server certificate: #认证失败,没有tls证书* subject: O=Acme Co; CN=Kubernetes Ingress Controller Fake Certificate* start date: Apr 21 07:16:50 2021 GMT* expire date: Apr 21 07:16:50 2022 GMT* issuer: O=Acme Co; CN=Kubernetes Ingress Controller Fake Certificate* SSL certificate verify result: unable to get local issuer certificate (20), continuing anyway.* Using HTTP2, server supports multi-use* Connection state changed (HTTP/2 confirmed)* Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0* TLSv1.3 (OUT), TLS Unknown, Unknown (23):* TLSv1.3 (OUT), TLS Unknown, Unknown (23):* TLSv1.3 (OUT), TLS Unknown, Unknown (23):* Using Stream ID: 1 (easy handle 0x558de9977430)* TLSv1.3 (OUT), TLS Unknown, Unknown (23):> GET /service1 HTTP/2> Host: 192.168.211.40:32300> User-Agent: curl/7.58.0> Accept: */*> * TLSv1.3 (IN), TLS Unknown, Certificate Status (22):* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):* TLSv1.3 (IN), TLS Unknown, Certificate Status (22):* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):* TLSv1.3 (IN), TLS Unknown, Unknown (23):* Connection state changed (MAX_CONCURRENT_STREAMS updated)!* TLSv1.3 (OUT), TLS Unknown, Unknown (23):* TLSv1.3 (IN), TLS Unknown, Unknown (23):* TLSv1.3 (IN), TLS Unknown, Unknown (23):< HTTP/2 200 < date: Wed, 21 Apr 2021 07:51:52 GMT< content-type: text/html< content-length: 612< last-modified: Tue, 13 Apr 2021 15:13:59 GMT< etag: "6075b537-264"< accept-ranges: bytes< strict-transport-security: max-age=15724800; includeSubDomains< Welcome to nginx!Welcome to nginx!If you see this page, the nginx web server is successfully installed andworking. Further configuration is required.For online documentation and support please refer tonginx.org.Commercial support is available atnginx.com.Thank you for using nginx.* TLSv1.3 (IN), TLS Unknown, Unknown (23):* Connection #0 to host 192.168.211.40 left intact</p><p>#创建证书root@master:~/cks/nginx-ingress# openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodesGenerating a 4096 bit RSA private key....++........................................................................................................................................................................++writing new private key to 'key.pem'-----You are about to be asked to enter information that will be incorporatedinto your certificate request.What you are about to enter is what is called a Distinguished Name or a DN.There are quite a few fields but you can leave some blankFor some fields there will be a default value,If you enter '.', the field will be left blank.-----Country Name (2 letter code) [AU]:State or Province Name (full name) [Some-State]:Locality Name (eg, city) []:Organization Name (eg, company) [Internet Widgits Pty Ltd]:Organizational Unit Name (eg, section) []:Common Name (e.g. server FQDN or YOUR name) []:secure-ingress.comEmail Address []:root@master:~/cks/nginx-ingress# lscert.pem deploy_0.40.2.yaml deploy_0.43.0.yaml key.pem secure-ingress.yaml#创建secretroot@master:~/cks/nginx-ingress# k create secret tls secure-ingress --cert=cert.pem --key=key.pemsecret/secure-ingress createdroot@master:~/cks/nginx-ingress# k get secerror: the server doesn't have a resource type "sec"root@master:~/cks/nginx-ingress# k get secretNAME TYPE DATA AGEdefault-token-rkqr7 kubernetes.io/service-account-token 3 92dsecure-ingress kubernetes.io/tls 2 9sroot@master:~/cks/nginx-ingress# vim secure-ingress.yamlapiVersion: networking.k8s.io/v1kind: Ingressmetadata: name: secure-ingress annotations: nginx.ingress.kubernetes.io/rewrite-target: /spec: tls: - hosts: - secure-ingress.com secretName: secure-ingress rules: - host: secure-ingress.com paths: - path: /service1 pathType: Prefix backend: service: name: service1 port: number: 80 - path: /service2 pathType: Prefix backend: service: name: service2 port: number: 80root@master:~/cks/nginx-ingress# k apply -f secure-ingress.yaml ingress.networking.k8s.io/secure-ingress configuredroot@master:~/cks/nginx-ingress# curl -kv --resolv secure-ingress.com:32300:192.168.211.41* Added secure-ingress.com:32300:192.168.211.41 to DNS cache* Hostname secure-ingress.com was found in DNS cache* Trying 192.168.211.41...* TCP_NODELAY set* Connected to secure-ingress.com (192.168.211.41) port 32300 (#0)* ALPN, offering h2* ALPN, offering successfully set certificate verify locations:* CAfile: /etc/ssl/certs/ca-certificates.crt CApath: /etc/ssl/certs* TLSv1.3 (OUT), TLS handshake, Client hello (1):* TLSv1.3 (IN), TLS handshake, Server hello (2):* TLSv1.3 (IN), TLS Unknown, Certificate Status (22):* TLSv1.3 (IN), TLS handshake, Unknown (8):* TLSv1.3 (IN), TLS Unknown, Certificate Status (22):* TLSv1.3 (IN), TLS handshake, Certificate (11):* TLSv1.3 (IN), TLS Unknown, Certificate Status (22):* TLSv1.3 (IN), TLS handshake, CERT verify (15):* TLSv1.3 (IN), TLS Unknown, Certificate Status (22):* TLSv1.3 (IN), TLS handshake, Finished (20):* TLSv1.3 (OUT), TLS change cipher, Client hello (1):* TLSv1.3 (OUT), TLS Unknown, Certificate Status (22):* TLSv1.3 (OUT), TLS handshake, Finished (20):* SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384* ALPN, server accepted to use h2* Server certificate: #认证成功* subject: C=AU; ST=Some-State; O=Internet Widgits Pty Ltd; CN=secure-ingress.com* start date: Apr 21 07:55:47 2021 GMT* expire date: Apr 21 07:55:47 2022 GMT* issuer: C=AU; ST=Some-State; O=Internet Widgits Pty Ltd; CN=secure-ingress.com* SSL certificate verify result: self signed certificate (18), continuing anyway.* Using HTTP2, server supports multi-use* Connection state changed (HTTP/2 confirmed)* Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0* TLSv1.3 (OUT), TLS Unknown, Unknown (23):* TLSv1.3 (OUT), TLS Unknown, Unknown (23):* TLSv1.3 (OUT), TLS Unknown, Unknown (23):* Using Stream ID: 1 (easy handle 0x55b3c09e2430)* TLSv1.3 (OUT), TLS Unknown, Unknown (23):> GET /service2 HTTP/2> Host: secure-ingress.com:32300> User-Agent: curl/7.58.0> Accept: */*> * TLSv1.3 (IN), TLS Unknown, Certificate Status (22):* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):* TLSv1.3 (IN), TLS Unknown, Certificate Status (22):* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):* TLSv1.3 (IN), TLS Unknown, Unknown (23):* Connection state changed (MAX_CONCURRENT_STREAMS updated)!* TLSv1.3 (OUT), TLS Unknown, Unknown (23):* TLSv1.3 (IN), TLS Unknown, Unknown (23):* TLSv1.3 (IN), TLS Unknown, Unknown (23):< HTTP/2 200 < date: Wed, 21 Apr 2021 08:13:30 GMT< content-type: text/html< content-length: 45< last-modified: Mon, 11 Jun 2007 18:53:14 GMT< etag: "2d-432a5e4a73a80"< accept-ranges: bytes< strict-transport-security: max-age=15724800; includeSubDomains< It works!* TLSv1.3 (IN), TLS Unknown, Unknown (23):* Connection #0 to host secure-ingress.com left intact</p><p> <strong>版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。</strong> </p> </div> <div class="article_footer clear"> <div class="fr tag">标签:<a href="https://www.apispace.com/news/tags-1117.html">应用</a> </div> <div class="bdsharebuttonbox fl share"> <div class="share-widget fl"> <div class="social-share" data-sites="wechat,weibo, qq, qzone"></div> </div> </div> </div> <!-- 广告位ad4 --> <div class="post-navigation clear"> <div class="post-previous fl"> <span>上一篇:</span><a href="https://www.apispace.com/news/post/10826.html">Kubernetes CKS 2021【7】---Cluster Setup - Verify Platform</a> </div> <div class="post-next fr"> <span>下一篇:</span><a href="https://www.apispace.com/news/post/10828.html">Kubernetes CKS 2021【12】---Microservice 漏洞-Manage secrets</a> </div> </div> </div> <div class="related_article"> <div class="box_title clear"> <span><i class="icon fa fa-paper-plane"></i>相关文章</span> </div> <div class="related_list clear"> <article class="fl"> <div class="related_img"><a href="https://www.apispace.com/news/post/71738.html"><img src="https://www.apispace.com/news/zb_users/theme/zblog5_news/image/random_img/9.jpg"></a></div> <div class="related_detail"> <h3><a href="https://www.apispace.com/news/post/71738.html" title="java怎么实现跳转到指定页面">java怎么实现跳转到指定页面</a></h3> <div class="meta"> <span><i class="fa fa-eye"></i>248</span> <span><i class="fa fa-clock-o"></i>2022-09-10</span> </div> </div> </article> <article class="fl"> <div class="related_img"><a href="https://www.apispace.com/news/post/71731.html"><img src="https://www.apispace.com/news/zb_users/theme/zblog5_news/image/random_img/4.jpg"></a></div> <div class="related_detail"> <h3><a href="https://www.apispace.com/news/post/71731.html" title="pandas怎么合并两列为一个复合列">pandas怎么合并两列为一个复合列</a></h3> <div class="meta"> <span><i class="fa fa-eye"></i>248</span> <span><i class="fa fa-clock-o"></i>2022-09-10</span> </div> </div> </article> <article class="fl"> <div class="related_img"><a href="https://www.apispace.com/news/post/71721.html"><img src="https://www.apispace.com/news/zb_users/theme/zblog5_news/image/random_img/1.jpg"></a></div> <div class="related_detail"> <h3><a href="https://www.apispace.com/news/post/71721.html" title="git怎么拉取某次提交的代码">git怎么拉取某次提交的代码</a></h3> <div class="meta"> <span><i class="fa fa-eye"></i>248</span> <span><i class="fa fa-clock-o"></i>2022-09-10</span> </div> </div> </article> </div> </div> <div id="comment" class="post-comment clearfix sb br mt"> <p id="comments-title" class="c-title mb bn"><span><i class="fa fa-pencil"></i> 发表评论</span></p> <div class="compost"> <form id="frmSumbit" target="_self" method="post" action="https://www.apispace.com/news/zb_system/cmd.php?act=cmt&postid=10827&key=ca32ec87ed382074fb651b86be076101"> <input type="hidden" name="inpId" id="inpId" value="10827"/> <input type="hidden" name="inpRevID" id="inpRevID" value="0"/> <div class="com-name"> <a rel="nofollow" id="cancel-reply" href="#comments" style="display:none;">取消回复</a> </div> <div class="com-info"> <ul> <li> <span class="hide" for="author"></span> <input class="ipt" type="text" name="inpName" id="inpName" value="" tabindex="2" placeholder="昵称(必填)"> </li> <li> <span class="hide" for="author"></span> <input class="ipt" type="text" name="inpEmail" id="inpEmail" value="" tabindex="3" placeholder="邮箱"> </li> <li> <span class="hide" for="author"></span> <input class="ipt" type="text" name="inpHomePage" id="inpHomePage" value="" tabindex="4" placeholder="网址"> </li> </ul> </div> <div class="com-box"> <textarea placeholder="来都来了,说点什么吧..." class="textarea" name="txaArticle" id="txaArticle" cols="5" rows="5" tabindex="1"></textarea> </div> <div class="com-info"><button class="com-submit br brightness" name="sumbit" type="submit" tabindex="5" onclick="return zbp.comment.post()">发布评论</button></div> </form> </div> <div class="comment-list mt"> <p class="no-comment"><i class="iconfont icon-sofa"></i> 暂时没有评论,来抢沙发吧~</p> <span id="AjaxCommentBegin"></span> <div class="pagination pagination-multi"> <ul> </ul> </div> <span id="AjaxCommentEnd"></span> </div> </div> </div> </div> <div class="sidebar"> <div id="tuijianwenzhang" class="part clear 推荐文章"> <div class="top"> <h3 class="title">推荐文章</h3> </div> <div class="side tuijianwenzhang"><ul><ul class="hot_posts"> <li><h4><a href="https://www.apispace.com/news/post/24039.html" title="api接口大全(api接口)">api接口有哪几种分类及功能</a></h4></li><li><h4><a href="https://www.apispace.com/news/post/47319.html.html" title="开放api接口定义(api接口开发规范)">什么是API接口?API接口简单介绍</a></h4></li><li><h4><a href="https://www.apispace.com/news/post/52320.html" title="短信api接口免费">短信API接口概述,短信API接口的优势</a></h4></li><li><h4><a href="https://www.apispace.com/news/post/61141.html" title="7款快递物流的物流查询API工具,物流快递查询API接口怎么对接?">7款快递物流的物流查询API工具,物流快递查询API接口怎么对接?</a></h4></li><li><h4><a href="https://www.apispace.com/news/post/56888.html" title="企业四要素: 了解企业经营成功的关键">企业四要素: 了解企业经营成功的关键</a></h4></li><li><h4><a href="https://www.apispace.com/news/post/11123.html" title="什么是语音验证码?(语音验证码的优势),语音验证码平台有哪些">什么是语音验证码?,语音验证码平台有哪些</a></h4></li><li><h4><a href="https://www.apispace.com/news/post/50104.html" title="全国工商数据系统(中国工商网数据库)">全国工商查询系统怎么查企业名录</a></h4></li><li><h4><a href="https://www.apispace.com/news/post/23571.html" title="身份证实名认证接口(身份证实名认证接口免费)">哪些平台提供实名认证的接口?</a></h4></li><li><h4><a href="https://www.apispace.com/news/post/49114.html" title="php调用api接口(php调用api接口教程)">PHP如何调用API接口?</a></h4></li><li><h4><a href="https://www.apispace.com/news/post/49112.html" title="百度天气接口api(百度天气预报api)">如何使用百度天气预报API接口?</a></h4></li></ul></ul></div> </div> <div id="divPrevious" class="part clear previous"> <div class="top"> <h3 class="title">最近发表</h3> </div> <div class="side divPrevious"><ul><li><a title="c语言sscanf函数的用法是什么" href="https://www.apispace.com/news/post/71785.html">c语言sscanf函数的用法是什么</a></li> <li><a title="r语言清空数组的方法是什么" href="https://www.apispace.com/news/post/71784.html">r语言清空数组的方法是什么</a></li> <li><a title="c语言一维数组怎么快速排列" href="https://www.apispace.com/news/post/71783.html">c语言一维数组怎么快速排列</a></li> <li><a title="linux怎么查看本机内存大小" href="https://www.apispace.com/news/post/71782.html">linux怎么查看本机内存大小</a></li> <li><a title="linux cpu占用率如何看" href="https://www.apispace.com/news/post/71781.html">linux cpu占用率如何看</a></li> <li><a title="r语言for循环语句怎么使用" href="https://www.apispace.com/news/post/71780.html">r语言for循环语句怎么使用</a></li> <li><a title="python怎么过滤字符串中的英文字母" href="https://www.apispace.com/news/post/71779.html">python怎么过滤字符串中的英文字母</a></li> <li><a title="php怎么获取input输入的值" href="https://www.apispace.com/news/post/71778.html">php怎么获取input输入的值</a></li> <li><a title="r语言怎么删除数据表某一个数据" href="https://www.apispace.com/news/post/71777.html">r语言怎么删除数据表某一个数据</a></li> <li><a title="c语言怎么删除数组中的数" href="https://www.apispace.com/news/post/71776.html">c语言怎么删除数组中的数</a></li> </ul></div> </div> <div id="hot_posts" class="part clear hot_posts"> <div class="top"> <h3 class="title">热评文章</h3> </div> <ul class="hot_posts"><li><h4><a href="https://www.apispace.com/news/post/55442.html" title="数据接口api(数据接口API开发平台)">数据接口api(数据接口API开发平台)</a></h4></li><li><h4><a href="https://www.apispace.com/news/post/55602.html" title="数据开放接口api(数据服务api开发)">数据开放接口api(数据服务api开发)</a></h4></li><li><h4><a href="https://www.apispace.com/news/post/5107.html" title="Python爬虫教程:爬取酷狗音乐(python爬取音乐网站)">Python爬虫教程:爬取酷狗音乐(python爬取</a></h4></li><li><h4><a href="https://www.apispace.com/news/post/69827.html" title="hbuilder怎么更改字体大小和颜色">hbuilder怎么更改字体大小和颜色</a></h4></li><li><h4><a href="https://www.apispace.com/news/post/66707.html" title="直播平台api接口 - 构建卓越的直播平台">直播平台api接口 - 构建卓越的直播平台</a></h4></li><li><h4><a href="https://www.apispace.com/news/post/55574.html" title="实时股票数据api接口(股票实时行情api接口)">实时股票数据api接口(股票实时行情api接口)</a></h4></li></ul> </div> </div> </div> </section> </div> <footer class="p-footer"> <div class="contant_box"> <div class="discover_tmt"> </div> <div class="collaboration_box"> <h5 class="" style="font-size: 1px; color: white;">apispace</h5> <div class="text_box"> <a href="https://www.jiasou.cn/article/" title="toB数字化营销SEO" style="font-size: 1px; color: white;">加搜toBSEO</a> <a href="https://www.finclip.com/news/category-1.html" title="小程序工具" style="font-size: 1px; color: white;">前端框架</a> <a href="https://www.jia-ai.com/info/" title="小红书营销攻略" style="font-size: 1px; color: white;">小红书营销攻略</a> <a href="https://www.yanyin.tech/cms/" title="生物研究资讯" style="font-size: 1px; color: white;">生物研究资讯</a> <a href="https://www.finclip.com/news/" title="FinClip 技术文档" style="font-size: 1px; color: white;">小程序容器帮助中心</a> <a href="https://www.finclip.com/news/article/" title="小程序开发行业洞察" style="font-size: 1px; color: white;">小程序开发行业洞察</a> <a href="https://www.foneplatform.com/jscms/" title="全面预算管理资讯" style="font-size: 1px; color: white;">全面预算管理资讯</a> <a href="https://www.weiling.cn/article/" title="企微SCRM客户管理干货" style="font-size: 1px; color: white;">企微SCRM客户管理干货</a> <a href="https://www.vbasm.com/zh/" title="数据筛选平台" style="font-size: 1px; color: white;">数据筛选平台"</a> </div> </div> <div class="we_img_box clear"> <div class="img_box"> <img src="https://www.apispace.com/news/zb_users/theme/zblog5_news/image/ewm.png" alt="" class="hover_tmt"> </div> </div> </div> <p class="info">© 2023 XWNews <a href="#" target="_blank" rel="nofollow">京ICP备1111040123号-1</a> <span> <a href="https://www.zblogcn.com/">版权归zblog所有</a></span> </p> </footer> <div id="backtop" class="backtop"> <div class="bt-box top"> <i class="fa fa-angle-up fa-2x"></i> </div> </div> <script type='text/javascript' src="https://www.apispace.com/news/zb_users/theme/zblog5_news/script/custom.js"></script> <script type='text/javascript' src="https://www.apispace.com/news/zb_users/theme/zblog5_news/script/nav.js"></script> <link rel="stylesheet" href="https://www.apispace.com/news/zb_users/theme/zblog5_news/share/css/share.min.css"> <script src="https://www.apispace.com/news/zb_users/theme/zblog5_news/share/js/jquery.share.min.js"></script> <!-- Initialize Swiper --> <script> var swiper = new Swiper('.swiper-container', { pagination: '.swiper-pagination', paginationClickable: true, loop: true, autoplay:2000, nextButton: '.swiper-button-next', prevButton: '.swiper-button-prev', spaceBetween: 30, effect: 'fade', }); </script> <script> var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?3bff5280c95fa57a674d8373a0557e19"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script> <script language="javascript" src="https://www.apispace.com/news/zb_users/plugin/ZF_ad/js/index.js?id=793"></script> <script language="javascript" src="https://www.apispace.com/news/zb_users/plugin/ZF_ad/js/ZF_ad__cookie.js"></script> </body> </html><!--831.51 ms , 19 queries , 5659kb memory , 0 error-->