新聞中心
Kubernetes向集群外部暴露服務(wù)的方式,你知道嗎?
作者:路多辛 2023-02-27 07:56:55
云計(jì)算
云原生 Ingress相當(dāng)于service的service,可以將外部請(qǐng)求通過(guò)按照不同規(guī)則轉(zhuǎn)發(fā)到對(duì)應(yīng)的service。實(shí)際上,ingress相當(dāng)于一個(gè)7層的負(fù)載均衡器,是k8s對(duì)反向代理的一個(gè)抽象,大概的工作原理類(lèi)似于Nginx。

Kubernetes向進(jìn)群外暴露服務(wù)的方式有三種:Ingress、LoadBlancer類(lèi)型的Service、NodePort類(lèi)型的Service。
Ingress
Ingress相當(dāng)于service的service,可以將外部請(qǐng)求通過(guò)按照不同規(guī)則轉(zhuǎn)發(fā)到對(duì)應(yīng)的service。實(shí)際上,ingress相當(dāng)于一個(gè)7層的負(fù)載均衡器,是k8s對(duì)反向代理的一個(gè)抽象,大概的工作原理類(lèi)似于Nginx。
Ingress工作原理(以Nginx Ingress為例):
Ingress-controller通過(guò)和Kubernetes APIServer交互,動(dòng)態(tài)感知集群中Ingress規(guī)則的變化,感知到規(guī)則的變化后生成對(duì)應(yīng)的Nginx配置,將配置寫(xiě)到nginx-ingress-controller的pod里(ingress-controller的pod里運(yùn)行著一個(gè)Nginx服務(wù),ingress-controller會(huì)把生成的 nginx配置寫(xiě)入/etc/nginx.conf文件中),然后執(zhí)行reload使配置生效。
LoadBlancer類(lèi)型的Service
創(chuàng)建service時(shí),指定type類(lèi)型為L(zhǎng)oadBalancer,需要有外部負(fù)載均衡器的支持,絕大部分云廠(chǎng)商都支持創(chuàng)建外部負(fù)載均衡。
NodePort類(lèi)型的Service
創(chuàng)建service時(shí),指定type類(lèi)型為NodePort,這樣,服務(wù)就會(huì)暴露在集群節(jié)點(diǎn)ip的指定端口上。
幾種方式的優(yōu)缺點(diǎn)
NodePort方式有如下缺點(diǎn):
- 當(dāng)服務(wù)比較多的時(shí)候,會(huì)占用集群節(jié)點(diǎn)的大量端口,難以維護(hù);
- 多了一層NAT,請(qǐng)求量比較大的時(shí)候會(huì)對(duì)性能產(chǎn)生影響。
LoadBlancer方式有如下缺點(diǎn):
- 每個(gè)service一個(gè)外部負(fù)載均衡器,麻煩又浪費(fèi);
- 需要有外部負(fù)載均衡器支持,有局限性。
Ingress相比上面兩種方式,只需要一個(gè)NodePort或者一個(gè)LoadBlancer就可以滿(mǎn)足所有service對(duì)集群外暴露服務(wù)的需求,簡(jiǎn)單靈活。
當(dāng)前文章:Kubernetes向集群外部暴露服務(wù)的方式,你知道嗎?
網(wǎng)頁(yè)URL:http://m.fisionsoft.com.cn/article/dhsocds.html


咨詢(xún)
建站咨詢(xún)
