美文网首页
K8S-ingress

K8S-ingress

作者: wangfeiq | 来源:发表于2022-12-17 11:54 被阅读0次

Ingress作用

  • 7层负载均衡
    我们知道service可以通过kube-proxy实现4层负载均衡,而ingress规则配置的后端是service,ingress似乎只起到反向代理的作用,且只能借助service实现4层负载均衡。但实际上,当我们配置了Ingress规则后,kube-proxy就不再起作用,ingress-controller会直接从service所属的endpoints中选择一个Pod,将流量直接转发到该Pod上,从而实现7层负载均衡。


    image.png
  • 小成本对外暴露服务
    当我们要把集群中的服务对外暴露时,通常要创建LB类型或者是NodePort类型的Service。在生产上,一般都使用LB类型的Service,当我们服务很多时,需要用到的LB就会非常多,成本相对就较高,如果再绑定下域名就更麻烦了。而使用Ingress只用把Ingress服务暴露出去,就可以把外部流量导入到集群中。

一般ingress-controller都是通过deployment形式部署的,只需要再创建一个LB类型的service(调试环境也可以使用NodePort类型Service。),后端为ingress-controller,将该ingress-controller暴露出去即可。

当然,通过这种方式暴露集群的服务,存在一个问题是ingress-controller可能成为一个性能瓶颈点。

Ingress-Nginx 规则配置

首先区分一下ingress规则和ingress-controller的作用。我们创建ingress的时候,实际上是创建ingress规则,也就是转发规则,而真正实现流量转发的是ingress-controller。ingress-controller会list/watch ingress规则,当流量进来后,根据ingress规则,将流量转发到不同的后端服务。

ingress-nginx是k8s官方实现的基于nginx的ingress-controller。规则配置的示例如下:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: test-ingress
  namespace: default
  annotations:
    nginx.ingress.kubernetes.io/ssl-redirect: "false"
    nginx.ingress.kubernetes.io/use-regex: "true"
spec:
  rules:
  - host: test-ingress.com
    http:
      paths:
      - path: /foo
        backend:
          service: 
            name: web1-service
            port:
              number: 8080
        pathType: ImplementationSpecific
      - path: /bar
        backend:
          service: 
            name: web1-service
            port:
              number: 8080
        pathType: ImplementationSpecific
  • host:指定服务访问域名。
  • path:指定访问的URL路径。LB将流量转发到backend之前,所有的入站请求都要先匹配host和path。
  • backend:由服务名称和服务端口组成。
  • 服务名称:Ingress转发的backend服务名称。
  • 服务端口:服务暴露的端口。

注:根据云厂商的不同,ingress规则配置的语法也不同。

参考

https://marcuseddie.github.io/2021/K8s-Network-Architecture-section-two.html

相关文章

  • 【k8s】k8s-ingress证书更新

    k8s-ingress证书更新https://www.cnblogs.com/zsl-find/articles/...

  • k8s-ingress

    1.定义ingress前,必须先部署ingress controller ,以实现为所有后端的service 提供...

  • k8s-Ingress

    Ingress 是什么 NodePort存在的不足 Ingress Ingress Controller 启动 规...

  • k8s-ingress 413 Request Entity T

    k8s集群中,将图片或是文件上传到文件服务器上, 可是大于1M是就会报错 413 Request Entity T...

网友评论

      本文标题:K8S-ingress

      本文链接:https://www.haomeiwen.com/subject/gkojqdtx.html