内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

k8singress-創(chuàng)新互聯(lián)

詳解k8s組件Ingress邊緣路由器并落地到微服務(wù) - kubernetes

寫(xiě)在前面

Ingress 英文翻譯 進(jìn)入;進(jìn)入權(quán);進(jìn)食,更準(zhǔn)確的講就是入口,即外部流量進(jìn)入k8s集群必經(jīng)之口。這到大門(mén)到底有什么作用?我們?nèi)绾问褂?code>Ingress?k8s又是如何進(jìn)行服務(wù)發(fā)現(xiàn)的呢?先看一張圖:
k8s ingress

創(chuàng)新互聯(lián)專(zhuān)注于企業(yè)全網(wǎng)營(yíng)銷(xiāo)推廣、網(wǎng)站重做改版、鄂托克網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、成都h5網(wǎng)站建設(shè)、購(gòu)物商城網(wǎng)站建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)公司、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為鄂托克等各大城市提供網(wǎng)站開(kāi)發(fā)制作服務(wù)。

備注:此圖來(lái)源我轉(zhuǎn)載的一篇博客NodePort,LoadBalancer還是Ingress?我該如何選擇 - kubernetes,特此說(shuō)明。

原理

雖然k8s集群內(nèi)部署的pod、server都有自己的IP,但是卻無(wú)法提供外網(wǎng)訪問(wèn),以前我們可以通過(guò)監(jiān)聽(tīng)NodePort的方式暴露服務(wù),但是這種方式并不靈活,生產(chǎn)環(huán)境也不建議使用。Ingresssk8s集群中的一個(gè)API資源對(duì)象,扮演邊緣路由器(edge router)的角色,也可以理解為集群防火墻、集群網(wǎng)關(guān),我們可以自定義路由規(guī)則來(lái)轉(zhuǎn)發(fā)、管理、暴露服務(wù)(一組pod),非常靈活,生產(chǎn)環(huán)境建議使用這種方式。另外LoadBlancer也可以暴露服務(wù),不過(guò)這種方式需要向云平臺(tái)申請(qǐng)負(fù)債均衡器;雖然目前很多云平臺(tái)都支持,但是這種方式深度耦合了云平臺(tái),所以你懂的。

首先我們來(lái)思考用傳統(tǒng)的web服務(wù)器,比如Nginx,如何處理這種場(chǎng)景?
Nginx充當(dāng)一個(gè)反向代理服務(wù)器攔截外部請(qǐng)求,讀取路由規(guī)則配置,轉(zhuǎn)發(fā)相應(yīng)的請(qǐng)求到后端服務(wù)。

kubernetes處理這種場(chǎng)景時(shí),涉及到三個(gè)組件

  1. 反向代理web服務(wù)器
    負(fù)責(zé)攔截外部請(qǐng)求,比如Nginx、Apache、traefik等等。我一般以Deployment方式部署到kubernetes集群中,當(dāng)然也可以用DeamonSet方式部署;這兩種部署方式個(gè)人覺(jué)得有利有弊,感興趣的請(qǐng)參考這篇文章,這里就不敖述了。

  2. Ingress controller
    k8s中的controller有很多,比如CronJobDeamonSet、DeploymentReplicationSet、StatefulSet等等,大家最熟悉的應(yīng)該是Deployment(嘿嘿,我也是),它的作用就是監(jiān)控集群的變化,使集群始終保持我們期望的最終狀態(tài)(yml文件)。同理,Ingress controller的作用就是實(shí)時(shí)感知Ingress路由規(guī)則集合的變化,再與Api Server交互,獲取Service、Pod在集群中的 IP等信息,然后發(fā)送給反向代理web服務(wù)器,刷新其路由配置信息,這就是它的服務(wù)發(fā)現(xiàn)機(jī)制。

  3. Ingress
    定義路由規(guī)則集合,上面已經(jīng)詳細(xì)介紹,這里就不再敖述了。
    k8s ingress

經(jīng)過(guò)上面的剖析,知道了吧,如果我們僅僅創(chuàng)建Ingress對(duì)象,只是定義了一系列路由規(guī)則集合而且,沒(méi)有任何作用,不要想得太簡(jiǎn)單了,嘿嘿。

Ingress 選型

這個(gè)我花費(fèi)了不少時(shí)間,最終選用的是Traefik,它是一個(gè)用Golang開(kāi)發(fā)的輕量級(jí)的Http反向代理和負(fù)載均衡器,雖然相比于Nginx,它是后起之秀,但是它天然擁抱kubernetes,直接與集群k8s的Api Server通信,反應(yīng)非常迅速,實(shí)時(shí)感知集群中Ingress定義的路由規(guī)則集合和后端Service、Pod的變化,自動(dòng)熱更新Traefik后端配置,根本不用創(chuàng)建Ingress controller對(duì)象,同時(shí)還提供了友好的控制面板和監(jiān)控界面,不僅可以方便地查看Traefik根據(jù)Ingress生成的路由配置信息,還可以查看統(tǒng)計(jì)的一些性能指標(biāo)數(shù)據(jù),如:總響應(yīng)時(shí)間、平均響應(yīng)時(shí)間、不同的響應(yīng)碼返回的總次數(shù)等,Traefik部署請(qǐng)參考官網(wǎng)用戶示例Kubernetes Ingress Controller。不僅如此,Traefik還支持豐富的annotations配置,可配置眾多出色的特性,例如:自動(dòng)熔斷、負(fù)載均衡策略黑名單、白名單;還支持許多后端存儲(chǔ),如:zookeeper、eureka、consul、rancher、docker等,它會(huì)自動(dòng)感知這些統(tǒng)一配置中心的變化,熱更新自己的路由配置,所以Traefik對(duì)于微服務(wù)來(lái)說(shuō)簡(jiǎn)直就是一神器啊,嘿嘿。那么Traefik性能又如何呢?容器化部署,還擔(dān)心性能,不要這么搞笑,好嗎。而Nginx在擁抱kubernetes這方面比較后知后覺(jué),詳情請(qǐng)參考官方網(wǎng)站和開(kāi)源項(xiàng)目ingress-nginx ;另外微軟開(kāi)源的微服務(wù)示例項(xiàng)目 eShopOnContainers 采用了ingress-nginx,大家可以下去自行研究。

Traefik
k8s ingress

示例說(shuō)明

使用Ingress暴露微服務(wù)

apiVersion: extensions/v1beta1kind: Ingressmetadata:  labels:    app: light    component: frontend  name: light-edge-router  namespace: geekbuying-light  annotations:
    kubernetes.io/ingress.class: "traefik"
    ingress.kubernetes.io/ssl-redirect: "false"  
    traefik.frontend.rule.type: "PathPrefixStrip"
    traefik.ingress.kubernetes.io/frontend-entry-points: "http,https"
    traefik.ingress.kubernetes.io/priority: "3"spec:  rules:  - host: <hostdomain literal>    http:      paths:      - path: /api/v1/light        backend:           serviceName: aggregation-light-api          servicePort: 80      - path: /api/v1/identity        backend:           serviceName: identity-api          servicePort: 80

非常重要

  1. 當(dāng)我們定義額外的路由時(shí),比如這里的/api/vi/identity,必須添加這個(gè)traefik.ingress.kubernetes.io/rule-type: PathPrefixStrip注解傳遞路徑,否則會(huì)看不到任何效果;ingress.kubernetes.io/ssl-redirect: "false"是否強(qiáng)制使用https,其他的配置信息,請(qǐng)查看詳情。另外,不同的Ingress選型,請(qǐng)參照各自的組件說(shuō)明。

  2. 其他命名空間下的服務(wù)發(fā)現(xiàn)規(guī)則為:[serviceName].[namespace]:[port],如:exceptionless-ui.geekbuying-light-addons:80(備注:端口80可以省略,其他端口不能省略),表示查找geekbuying-light-addons命名空間下的exceptionless-ui服務(wù),并匹配端口。

特性配置

traefik支持強(qiáng)大的annotations配置,需要添加到kubernetes相應(yīng)資源對(duì)象的annotations下面。至于具體配置到的哪個(gè)對(duì)象,先弄清楚三個(gè)概念:

  • EntryPoint(入口點(diǎn))
    顧名思義,這是外部網(wǎng)絡(luò)進(jìn)入traefik的入口,我們上面就是通過(guò)監(jiān)聽(tīng)主機(jī)端口攔截請(qǐng)求。

  • FrontEnd(前端)
    traefik攔截請(qǐng)求后,會(huì)轉(zhuǎn)發(fā)給FrontEnd。前端定義EntryPoint映射到BackEnd的路由規(guī)則集,字段包括HostPathHeaders 等,匹配請(qǐng)求后,默認(rèn)通過(guò)加權(quán)輪詢負(fù)載算法路由到一個(gè)可用的BackEnd,然后進(jìn)入指定的微服務(wù),這就是服務(wù)發(fā)現(xiàn)。

    備注:這些路由規(guī)則可以來(lái)自不同的后端存儲(chǔ),如Kubernetes、zookeeper、eureka、consul等,Kubernetes使用的Ingress資源對(duì)象定義路由規(guī)則集。建議大家自行去官網(wǎng)學(xué)習(xí)Kubernetes Ingress Backend。

  • BackEnd(后端)
    一組http服務(wù)集,kubernetes中對(duì)應(yīng)一個(gè)service對(duì)象下的一組pod地址。對(duì)于后端的服務(wù)發(fā)現(xiàn),可配置負(fù)載均衡策略、熔斷器等特性。

k8s ingress

一個(gè)后端service對(duì)象的配置例子

apiVersion: v1kind: Servicemetadata:  annotations:
    traefik.backend.circuitbreaker: NetworkErrorRatio() > 0.5
    traefik.backend.loadbalancer.method: drr  labels:    app: light    component: identity  name: identity-api  namespace: geekbuying-lightspec:  ports:
  - port: 80
  selector:    app: light    component: identity    type: webapi

效果圖

控制面板
k8s ingress
前端優(yōu)先級(jí)、后端熔斷器和負(fù)載均衡策略
k8s ingress
監(jiān)控界面
k8s ingress

總結(jié)

綜上所述,首先部署擁抱k8s的反向代理服務(wù)器(treafik、nginx等)攔截請(qǐng)求,然后攔截的請(qǐng)求會(huì)根據(jù)Ingress定義的路由規(guī)則集,轉(zhuǎn)發(fā)到集群內(nèi)部對(duì)應(yīng)的Service。

延伸閱讀

https://docs.traefik.io/
https://github.com/containous/traefik
https://docs.traefik.io/user-guide/kubernetes/
https://docs.traefik.io/configuration/backends/kubernetes/
https://kubernetes.io/docs/concepts/services-networking/ingress/
https://kubernetes.io/docs/admin/authorization/rbac/
https://github.com/kubernetes/ingress-nginx/blob/master/README.md
https://kubernetes.github.io/ingress-nginx/development/
https://www.kubernetes.org.cn/1237.html
https://github.com/kubernetes/ingress-nginx
https://blog.csdn.net/hxpjava1/article/details/79459489
https://blog.csdn.net/hxpjava1/article/details/79375452

如果你覺(jué)得本篇文章對(duì)您有幫助的話,感謝您的【推薦】。
如果你對(duì) kubernets 感興趣的話可以關(guān)注我,我會(huì)定期的在博客分享我的學(xué)習(xí)心得。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

本文名稱:k8singress-創(chuàng)新互聯(lián)
當(dāng)前地址:http://www.rwnh.cn/article16/ccsedg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營(yíng)銷(xiāo)型網(wǎng)站建設(shè)、用戶體驗(yàn)虛擬主機(jī)、域名注冊(cè)、品牌網(wǎng)站設(shè)計(jì)、搜索引擎優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名
绵竹市| 上思县| 彭山县| 石门县| 新竹市| 手机| 钦州市| 黄冈市| 若尔盖县| 岗巴县| 丰原市| 汝州市| 额济纳旗| 治多县| 岳西县| 古交市| 琼中| 阜新市| 进贤县| 新津县| 波密县| 南木林县| 赤峰市| 九龙县| 广元市| 华容县| 民丰县| 桐柏县| 雷波县| 东丽区| 逊克县| 盐城市| 普兰县| 大庆市| 综艺| 内丘县| 南和县| 乡城县| 余江县| 年辖:市辖区| 扎赉特旗|