持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第27天,点击查看活动详情
k8s中的ingress
前文
本文内容主要是关于k8s中ingress相关内容知识的总结与整理,内容包含个人理解的内容,因此可能存在不准确及不完整之处。
什么是ingress
ingress本身的意义很类似于在springcloud中gateway网关的作用。在springcloud中,当我们需要进行实际服务的访问时,我们并不需要单独记录实际服务的地址,而是记录网关的地址。通过访问网关时参数的不同,利用网关将请求转发到具体的服务中。而k8s的ingress本身的作用是与网关类型。如果我们不通过ingress,当我们需要进行服务请求时,可能需要记录多个服务的地址,每个服务的端口都不一样。而如果我们采用ingress,可以仅仅记录同一个地址,通过访问路径的不同,将其映射到不同的服务之中。而服务本身进行了pod的关联,也就实现了实际逻辑的访问。
ingress的应用
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ing
spec:
rules:
- http:
paths:
- path: /hello
pathType: Prefix
backend:
service:
name: service1
port:
number: 3000
如上所示是一段简单的ingress配置文件。根据配置文件中的内容可以看到,当我们进行ingress的访问时,如果我们访问hello这个地址,也就是ip:port/hello这种方式访问,实际上请求将会被转发到service1服务之中,同时访问的端口为3000。根据预先进行的配置,会对3000端口映射到pod中的具体端口上,也就是ingress作为网关,完成了请求整体的转发,实现了实际路由的左右。
当然,对于ingress组件来说,它不仅仅具有路由请求的左右。类似于常规的gateway网关,它也具备负载均衡的功能。相比起service的负载均衡,ingress的负载均衡具备更优秀的可定制方式。除此以外,ingress也集成了限流的功能,能够指定每秒接收的限流数,当然本身来说是比较基础的限流方式。上述这些额外的功能都需要我们在配置文件中进行配置。
后记
- 千古兴亡多少事?悠悠。不尽长江滚滚流。