idou教你学Istio10 : 如何用Istio实现K8S Egress流量管理

栏目: 后端 · 发布时间: 5年前

内容简介:上一篇我们了解了如何控制入口流量,本文主要介绍在使用 Istio 时如何访问集群外服务,即对出口流量的管理。默认安装的Istio是不能直接对集群外部服务进行访问的,如果需要将外部服务暴露给 Istio 集群中的客户端,目前有两种方案:ServiceEntry 用于将额外的条目添加到 Istio 内部维护的服务注册表中,从而让网格中自动发现的服务能够访问和路由到这些手动加入的服务。

上一篇我们了解了如何控制入口流量,本文主要介绍在使用 Istio 时如何访问集群外服务,即对出口流量的管理。

默认安装的Istio是不能直接对集群外部服务进行访问的,如果需要将外部服务暴露给 Istio 集群中的客户端,目前有两种方案:

  1. 配置ServiceEntry

  2. 配置global.proxy.includeIPRanges

配置 serviceEntry 访问外部服务

ServiceEntry 用于将额外的条目添加到 Istio 内部维护的服务注册表中,从而让网格中自动发现的服务能够访问和路由到这些手动加入的服务。

ServiceEntry 描述了服务的属性(DNS 名称、VIP、端口、协议以及端点)。这类服务可能是网格外的 API,或者是处于网格内部但却不存在于平台的服务注册表中的条目(例如需要和 Kubernetes 服务沟通的一组虚拟机服务)。

配置 ServiceEntry 也很简单,允许从网格内部访问 HTTP,HTTPS,Mongo,TCP等协议的外部服务。下面分别列举了对外部 TCP 服务和 HTTP 服务的访问配置。具体的 ServiceEntry 的配置参数定义可参考:

istio.io/docs/refere…

外部TCP服务访问配置示例:

apiVersion: networking.istio.io/v1alpha3
kind: ServiceEntry
metadata:
  name: mysql
spec:
  hosts:
  - 192.168.0.245
  ports:
  - number: 3306
    name: tcp
    protocol: TCP
复制代码

外部HTTP服务访问配置示例:

apiVersion: networking.istio.io/v1alpha3
kind: ServiceEntry
metadata:
  name: foo-ext
spec:
  hosts:
  - foo.com
  ports:
  - number: 80
    name: http
    protocol: HTTP
复制代码

虽然社区推荐的方式是设置 ServiceEntry 来访问外部服务,但如果集群外需要访问的服务很多,一个个配置起来就很麻烦,也不方便管理。

配置 global.proxy.includeIPRanges

如果使用 HELM 安装 Istio, 可以在 Helm 中设置 global.proxy.includeIPRanges 变量为集群 clusterIP 的范围,然后进行安装。

如果要对已经安装好的 Istio 修改配置,需要修改名为 istio-sidecar-injector 的 Configmap 的“-i”的取值为集群 clusterIP,稍后重启所有服务的pod,重新注入sidecar。然后你会看到重启后 pod 中的 initContainers 的 -i 参数值已经变为集群clusterIP的范围。

这种方式使得只有集群内的 IP 通过 sidecar,对外部服务的调用越过了 Istio sidecar proxy,让服务可以直接访问到对应的外部地址。

相比配置 ServiceEntry,这种方式简单对 Istio 进行全局配置,就可以直接访问所有外部服务。但缺点是不能治理集群外服务的访问流量,比如不能对集群外中间件服务进行熔断限流;而且需要用户了解云供应商特定的知识和配置。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

代码之髓

代码之髓

[日] 西尾泰和 / 曾一鸣 / 人民邮电出版社 / 2014-8 / 45.00元

《代码之髓:编程语言核心概念》作者从编程语言设计的角度出发,围绕语言中共通或特有的核心概念,通过语言演变过程中的纵向比较和在多门语言中的横向比较,清晰地呈现了程序设计语言中函数、类型、作用域、类、继承等核心知识。本书旨在帮助读者更好地理解各种概念是因何而起,并在此基础上更好地判断为何使用、何时使用及怎样使用。同时,在阅读本书后,读者对今后不断出现的新概念的理解能力也将得到提升。 《代码之髓:......一起来看看 《代码之髓》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

正则表达式在线测试
正则表达式在线测试

正则表达式在线测试

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具