9.1 Ingress为弥补NodePort不足而生

ClusterIP 只能在集群内部访问。 NodePort 方式的话,测试环境使用还行,当有几十上百的服务在集群中运行时,NodePort的端口管理是灾难。 LoadBalance 方式受限于云平台,且通常在云平台部署ELB还需要额外的费用。

2 ingress与ingress-controller

ingress对象: 指的是k8s中的一个api对象,一般用yaml配置。作用是定义请求如何转发到service的规则,可以理解为配置模板。

简单来说,ingress-controller才是负责具体转发的组件,通过各种方式将它暴露在集群入口,外部对集群的请求流量会先到ingress-controller,而ingress对象是用来告诉ingress-controller该如何转发请求,比如哪些域名哪些path要转发到哪些服务等等。Ingress Controller会动态感知集群中的Ingress的规则变化,然后读取,动态生成Nginx的配置文件,最后注入到运行nginx的pod的中,然后会自动reload,配置生效。

3 k8s真正提供服务的是pod,为了负载均衡,为了使用域名, service 诞生了,然后 ingress 诞生了,那么Ingress的作用如下

(2) 做专业的负载均衡,毕竟Service的负载均衡还是很初级的

4 Ingress工作流程

只是起到一个辅助识别功能。

user -> 域名 -> node ip:80/443 -> ingress controller -> 域名分流 –> pod

ingress controller pod -> 获取service(apiserver)关联的pod -> 应用到本地nginx(提供七层负载均衡)

因为是DaemoSet方式部署的ingress controller, 所以除master节点外每个从node节点都会部署一个ingress controller的pod并监听80和443端口。

9.2 Pod与Ingress的关系

  • 通过Service相关联

  • 通过Ingress Controller实现Pod的负载均衡

      支持TCP/UDP 4层和HTTP 7层

9.3 Ingress Controller

为了使Ingress资源正常工作,集群必须运行一个Ingress Controller(负载均衡实现)。

所以要想通过ingress暴露你的应用,大致分为两步:

  1. 部署Ingress Controller

  2. 创建Ingress规则

整体流程如下:

Ingress Controller有很多实现,我们这里采用官方维护的Nginx控制器。

其他主流控制器:(1) Traefik: HTTP反向代理、负载均衡工具 (2) Istio:服务治理,控制入口流量

https://github.com/kubernetes/ingress-nginx/blob/nginx-0.30.0/docs/deploy/index.md

......
spec:
      hostNetwork: true
      serviceAccountName: nginx-ingress-serviceaccount
      containers:
        - name: nginx-ingress-controller
          image: lizhenliang/nginx-ingress-controller:0.20.0
          args:
            - /nginx-ingress-controller
            - --configmap=$(POD_NAMESPACE)/nginx-configuration
            - --tcp-services-configmap=$(POD_NAMESPACE)/tcp-services
            - --udp-services-configmap=$(POD_NAMESPACE)/udp-services
            - --publish-service=$(POD_NAMESPACE)/ingress-nginx
            - --annotations-prefix=nginx.ingress.kubernetes.io
......

相关文章:

  • 2021-11-11
  • 2022-02-08
  • 2021-12-10
  • 2021-11-01
  • 2022-12-23
  • 2021-08-25
  • 2021-11-18
  • 2021-12-10
猜你喜欢
  • 2022-12-23
  • 2021-09-09
  • 2021-09-16
  • 2021-05-30
  • 2021-08-20
  • 2021-12-02
  • 2020-10-04
相关资源
相似解决方案