其他分享
首页 > 其他分享> > 【运维面试】k8s中service和ingress的区别

【运维面试】k8s中service和ingress的区别

作者:互联网

serivce是如何被设计的:
在pod中运行的容器在动态,弹性的变化(比如容器的重启IP地址会变化),为了给pod提供一个固定的,统一访问的接口,以及负载均衡的能力,并借助DNS系统实现服务发现功能,解决客户端发现容器难的问题,于是变设计了service

service 和pod对象的IP地址,在集群内部可达,但集群外部用户无法接入服务,解决的思路有:

  1. node pod端口上做端口暴露
  2. 在工作节点上用公用网络名称空间(hostname)
  3. 使用service的nodeport或者loadbalancer
  4. ingress七层负载和反向代理资源。

service 提供pod的负载均衡的能力,但只在4层有负载,而没有功能,只能到IP层面。

service的几种类型:

ingress:
service 只能提供四层的负载,虽然可以通过nodeport的方式来服务,但随着服务的增多,会在物理机上开辟太多的端口,不便于管理,所以ingress换了思路来暴露服务

创建一个具有n个副本的nginx服务,在nginx服务内配置各个服务的域名与集群内部的服务的ip,这些nginx服务在通过nodeport的方式来暴露,外部服务可以通过域名:nginx nodeport端口来访问nginx,nignx在通过域名反向代理到真实的服务器。

ingress分为ingress controller和ingress 配置。

ingress controller就是反向代理服务器,对外通过nodeport 来暴露端口。
在这里插入图片描述

总结:
service: 主要用来解决pod动态变化时候的IP变化,一旦podip变化,客户端就无法找到,service就是来解决这个问题的。 一个service就可以看做一组提供相同服务的pod的对外接口。
service服务于哪些pod是通过标签选择器来定义的。

而且service只能通过四层负载就是ip+端口的形式来暴露

ingress可以提供7层的负责对外暴露接口,而且可以调度不同的业务域,不同的url访问路径的业务流量。

标签:ingress,服务,运维,service,IP,nodeport,pod
来源: https://blog.51cto.com/xinsz08/2697411