k8s service与Ingress

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上。

扩展阅读:www.sony.com.cn ... k8s ingress ... 韩国macbookpro ... k8s service loadbalancer ... matebook14 ... begging the question ... k8s service nodeport ... kindle paperwhite 3 ... macbook pro14 ...

本站交流只代表网友个人观点,与本站立场无关
欢迎反馈与建议,请联系电邮
2024© 车视网