Kubernetes-Envoy(一种全新的Ingress实现方式)

Ingress
  在讲Envoy之前,先介绍一下Kubernetes中Service的表现形式为IP:Port,及工作在Ingress:TCP/IP层。而对于基于HTTP的服务来说,不同的URL地址经常对应到不同的
后端服务或者虚拟服务器,这些应用层的转发机制仅通过Kubernetes的Service机制是无法实现的。Kubernetes v1.1中新增的Ingress将不同的URL访问请求转发到后端
不同的Service,实现HTTP层的业务路由机制。在Kubernetes集群中,Ingress的实现需要通过Ingress的定义与Ingress Controller的定义结合起来,才能实现完整的
HTTP负载分发功能。
Envoy(摘自http://mp.weixin.qq.com/s/D5epVotNIEVlRT74aPmIMA 
  Craig McLuckie曾任Kubernetes的产品经理,去年从Google离职后,作为联合创始人创立容器公司Heptio。日前Craig McLuckie代表Heptio公司发表Blog:“Making it 
easy to use Envoy as a Kubernetes load balancer”,众所周知,Lyft公司开源的Envoy是目前大热的Service Mesh项目Istio的内置组件,Heptio将Envoy作为Kubernetes的
Ingress Controller实现,为大家提供了一条新的Kubernetes外部负载均衡实现思路。

 Heptio Contour是一个Apache 2.0许可的开源项目,提供Envoy作为Kubernetes项目的Ingress Controller,实现简单且简约的集成。 Heptio Contour可以为用户提供以下好处:

  • 一种简单的安装机制来快速部署和集成Envoy

  • 与Kubernetes对象模型的集成

  • Ingress配置的动态更新,而无需重启底层负载均衡器

  • 项目成熟后,将允许使用Envoy一些强大的功能,如断路器、插件式的处理器链,以及可观测性和可调试性

 

Heptio Contour – An ENVOY powered ingress controller(以下内容翻译自https://github.com/heptio/contour/blob/master/design/roadmap.md

Contour Roadmap

Support for the v2 GRPC API

Contour 现在通过轮询Envoy的机制获取v1 REST API的值。把轮询的时间设置的过长(30s或者更多),意味着

 

 

 

转载于:https://www.cnblogs.com/cf532088799/p/7842044.html

### Kubernetes Ingress 配置与使用教程 #### 什么是 Kubernetes IngressKubernetes Ingress一种 API 对象,用于管理外部访问集群内部的服务(Services)。通过定义规则,可以将 HTTP/HTTPS 流量路由到不同的服务端点。这使得在生产环境中实现负载均衡、SSL 终止以及名称虚拟主机等功能变得简单高效。 #### 基本概念 - **Ingress Controller**: 实现 Ingress 功能的具体组件,负责监听和处理 Ingress 资源的变化并更新相应的代理配置。 - **Service**: 提供稳定的网络接口来暴露 Pod 应用程序。 - **Backend**: 接收请求的目标服务实例集合。 以下是几种常见的 Ingress 控制器及其特点: 1. **Nginx Ingress Controller** Nginx Ingress Controller 是最流行的控制器之一,支持丰富的功能集,包括但不限于路径匹配、TLS 加密和支持 WebSocket 等特性[^1]。 2. **HAProxy Ingress Controller** HAProxy Kubernetes Ingress 利用了 HAProxy 的高性能优势,适合高吞吐量场景下的流量分发需求[^3]。 3. **其他选项** 还有 Traefik, Contour by Heptio (Envoy-based), Istio 等多种选择可根据具体业务需求选用。 #### 安装步骤概述 以 Nginx Ingress Controller 为例说明如何部署及基本设置过程如下所示: ```bash # 添加官方 Helm Chart Repository 并更新本地索引文件 helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx/ helm repo update # 使用 helm chart 来安装 nginx-ingress-controller helm install my-release ingress-nginx/ingress-nginx --namespace ingress-basic \ --create-namespace \ --set controller.service.type=LoadBalancer ``` 上述命令会创建一个新的命名空间 `ingress-basic` 同时也会自动分配一个公网 IP 地址给 Service 类型为 LoadBalancer 的资源对象以便于外网能够访问该入口服务器. #### 创建简单的 Ingress 规则样例 下面展示了一个典型的 YAML 文件片段用来声明一条针对两个不同子域名分别指向各自对应后端服务的规则. ```yaml apiVersion: networking.k8s.io/v1beta1 kind: Ingress metadata: name: test-ingress spec: rules: - host: foo.bar.com http: paths: - pathType: Prefix path: "/" backend: serviceName: service-one servicePort: 80 - host: bar.foo.com http: paths: - pathType: Exact path: "/bar" backend: serviceName: service-two servicePort: 8080 ``` 在此例子中我们设置了两条记录分别是对于 `foo.bar.com` 主机名下所有的 URL 请求都转发至名为 `service-one` 的服务上;而对于另一个特定地址模式 `/bar`, 只要是来自 `bar.foo.com` 的话就会被重定向去调用第二个目标即 `service-two`. 更多高级参数调整可查阅官方文档获取全面指导[^2]. ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值