kubernetes ingress 简介

Posted itanony

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了kubernetes ingress 简介相关的知识,希望对你有一定的参考价值。

背景:

  kubernetes集群内部有三种方式暴露服务:nodeport,loadbalancer,ingress,其中loadbalancer需要云厂商提供对应公网负载均衡,维护成本,费用高。

采用nodeport这种方式的弊端:

    1、开通过多端口,对主机安全性存在一定风险(内网环境,问题不大),多端口的管理过于复杂,混乱

    2、nginx upstream配置nodeport,当后端服务出现异常,探针未及时检测到时,有可能因为nginx 的健康检测机制,导致所有服务都被摘除。

  对于ingress的调研,分为两部分。一部分是ingress,一部分是ingress controller,

  ingress 本身是kubernetes 的一种资源。用于描述host(域名),url,header 与后端服务的对应路由关系,例如,可以在ingress 中定义,www.qyd.com 这个域名/book的url 路由到qingyidai这个命名空间中的book服务。

  ingress controller 从功能上也可以分为两点:

    1、 动态的与apiserver交互,获取kubernetes集群中ingress资源的动态,并应用为自身的配置。

    2、为服务提供路由功能,及其他附加功能(SSL等)

Ingress Controller是一个统称,并不是只有一个,有如下这些:

?Ingress NGINX: Kubernetes 官方维护的方案,也是本次安装使用的 Controller。

?F5 BIG-IP Controller: F5 所开发的 Controller,它能够让管理员通过 CLI 或 API 让 Kubernetes 与 OpenShift 管理 F5 BIG-IP 设备。

?Ingress Kong: 著名的开源 API Gateway 方案所维护的 Kubernetes Ingress Controller。

?Traefik: 是一套开源的 HTTP 反向代理与负载均衡器,而它也支援了 Ingress

?Kong: 开源的api网关,由lua 和openrestry 集成。

从上边我们看到,ingress 只是一种路由规则。只是在集群中部署ingress 是没有意义的。 我们需要ingress-controller实时与apiserver交互。获取集群中ingress资源的变化。并应用为自身的配置。同时。ingress-controller有很多种。nginx,traefik,kong。。。每一个ingress-controller获取到ingress 的路由配置,去解析的方式也是不同的。例如。如果我们想将所有的html路由到后端的static服务。 那么在traefik中ingress 的配置如下:

spec:
rules:

  • host: traefik-test.qingyidai.com
    http:
    paths:
    • backend:
      serviceName: static
      servicePort: 80
      path: /path:.*.html

而使用nginx 作为ingress-controller 则需要在ingress 如下配置。
metadata:
name: test-ingress-3
annotations:
nginx.ingress.kubernetes.io/use-regex: "true"
spec:
rules:

  • host: traefik-test.qingyidai.com
    http:
    paths:
    • backend:
      serviceName: static
      servicePort: 80
      path: /.*.html

可以看到 traefik 在匹配前缀的时候用到了go 的正则语法。配置中的path没有实际意义,但是不能为空。而nginx 的ingress-controller配置中则多了一个nginx.ingress.kubernetes.io/use-regex: "true" 的注解。 rule中的写法和Nginx中的配置是类似的。

以上是关于kubernetes ingress 简介的主要内容,如果未能解决你的问题,请参考以下文章

nginx.conf 忽略了 nginx-ingress 配置映射片段

Linux企业运维——Kubernetesingress服务

无缝融入 Kubernetes 生态 | 云原生网关支持 Ingress 资源

Kubernetes——对外服务之Ingress

Kubernates Ingress 配置证书

k8s部署ingress及httphttps-实战篇