k8s service与Ingress
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了k8s service与Ingress相关的知识,希望对你有一定的参考价值。
参考技术A service是pod的一个逻辑分组,是pod服务的对外入口抽象。service同样也通过pod的标签来选择pod,与控制器一致。service提供pod的负载均衡的能力,但是只提供4层负载均衡的能力,而没有7层功能,只能到ip层面。
任意找个pod来访问服务,通过 kubectl exec -it podname sh 来对pod执行sh命令,这样可以进入容器内部
前面聊过,service只能提供4层负载均衡的能力,虽然service可以通过NodePort的方式来服务,但是随着服务的增多,会在物理机上开辟太多端口,管理起来混乱。
那么我们换一种思路来暴露服务,创建一个具有N个副本的nginx服务,在nginx服务内配置各个服务的域名与集群内部的服务的IP,这些nginx服务再通过NodePort的方式来暴露。外部服务通过 域名:Nginx NodePort端口 来访问nginx,nginx再通过域名反向代理到真实服务。
上面的这个流程就是ingress做的事,ingress分为ingress controller与ingress配置。ingress controller是反向代理服务器,对外通过NodePort(或者其他方式)来暴露,ingress配置是抽象出来的域名代理配置。
如果采用NodePort的方式,存在Ingress controller单点问题,需要在外层再定义一个HPA,由HPA负载均衡各个Ingress controller节点,域名再解析到HPA的IP。
除了上面的方式,还可以把ingress controller通过LoadBalance方式暴露,LoadBalance在上文中提到过,是service的一种类型,云厂商提供唯一的外网访问IP,域名解析到LoadBalance的IP上。
以上是关于k8s service与Ingress的主要内容,如果未能解决你的问题,请参考以下文章