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中的配置是类似的。

原文地址:https://www.cnblogs.com/itanony/p/11037509.html

时间: 2024-10-10 00:07:43

kubernetes ingress(一) 简介的相关文章

Kubernetes Ingress Controller的使用及高可用落地

Kubernetes Ingress Controller的使用及高可用落地 看懂本文要具备一下知识点: Service实现原理和会应用 知道反向代理原理,了解nginx和apache的vhost概念 了解service的几种类型(Nodeport.clusterip.LB) 四层和七层区别(不明白就这样去理解,七层最常见就是应用层的http,也就是url,四层是传输层,为tcp/udp端口) 域名解析,/etc/hosts等基础知识 Ingress Controller介绍 Ingress C

Kubernetes Ingress with AWS ALB Ingress Controller

Kubernetes Ingress with AWS ALB Ingress Controller by Nishi Davidson | on 20 NOV 2018 | in Amazon Elastic Kubernetes Service, Open Source | Permalink | Comments | Share 中文版 – Kubernetes Ingress is an api object that allows you manage external (or) in

TF+K8s轻松上手丨通过Kubernetes Ingress进行高级外部应用程序连接

本文所有相关链接pdf:https://tungstenfabric.org.cn/assets/uploads/files/tf-ceg-case-2.pdf Kubernetes的Ingress文档页面将其描述为: "用于管理对集群中服务的外部访问的API对象,通常是HTTP.Ingress可以提供负载均衡.SSL终结和基于名称的虚拟主机." CNI不提供Ingress功能.这意味着Kubernetes集群管理者通常要为其集群安装.管理和支持单独的Ingress控制器解决方案. 对

K8s Ingress 模式简介及示例

注: 默认本文读者具备一定的k8s基础,并对k8s的apiserver.service.controller manager等基本概念有所了解. 模式简介: Ingress在service之前加了一层ingress,结构如下: ingress -> service -> label selector -> pods www.ok1.com -> app1-service -> app1 selector -> app1 1234 Port:80 or other -&g

kubernetes 网络组件简介

链接地址:https://blog.csdn.net/kjh2007abc/article/details/86751730 k8s的网络模型假定了所有Pod都在一个可以直接连通的扁平的网络空间中.这是因为k8s出自Google,而在GCE里面是提供了网络模型作为基础设施的,所以k8s就假定这个网络已经存在.而在大家私有的平台设施里搭建k8s集群,就不能假定这种网络已经存在了.我们需要自己实现这个网络,将不同节点上的Docker容器之间的互相访问先打通,然后运行k8s. 目前已经有多个开源组件支

Kubernetes系统架构简介

1. 前言 Together we will ensure that Kubernetes is a strong and open container management framework for any application and in any environment, whether in a private, public or hybrid cloud. Urs Hölzle, Google Kubernetes作为Docker生态圈中重要一员,是Google多年大规模容器管理

kubernetes ingress example

apiVersion: extensions/v1beta1 kind: Ingress metadata: name: bach-es-client-ingress namespace: bach annotations: nginx.ingress.kubernetes.io/force-ssl-redirect: "false" nginx.ingress.kubernetes.io/ssl-redirect: "false" nginx.ingress.ku

22.Kubernetes Ingress: HTTP 7层路由机制

Kubernetes 暴露服务的方式目前只有三种:LoadBlancer Service.NodePort Service.Ingress:下面详细的了解下Ingress. 根据前面对 Service 的使用说明,我们知道 Service 的表现形式为IP:Port,工作在TCP/IP层,而对于基于 HTTP 的服务来说,不同的URL地址经常对应到不同的后端服务或者虚拟服务器,这些应用层的转发机制仅通过kubernetes的Service机制是无法实现的.kubernetes V1.1版本中新增

kubernetes ingress(三): traefik: 多域名及证书配置

目标: 部署三个服务traefik-ui,grafana,prometheus,并通过traefik 反向代理. service namespaces domain name https traefik-ui traefik traefik.qyd.com Y grafana kube-system grafana.dfb.com N prometheus kube-system prometheus.qyd.com Y 步骤: 1.部署traefik 相关资源yml https://githu