zoukankan      html  css  js  c++  java
  • idou教你学Istio10 : 如何用Istio实现K8S Egress流量管理

    上一篇我们了解了如何控制入口流量,本文主要介绍在使用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的配置参数定义可参考:

    https://istio.io/docs/reference/config/istio.networking.v1alpha3/#ServiceEntry

    外部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 进行全局配置,就可以直接访问所有外部服务。但缺点是不能治理集群外服务的访问流量,比如不能对集群外中间件服务进行熔断限流;而且需要用户了解云供应商特定的知识和配置。

    目前社区还没有完美的解决方案,可参考讨论:

    https://groups.google.com/forum/#!searchin/istio-dev/serviceentry%7Csort:date/istio-dev/0RCt7Jqrcg8/7Ylrr4TABQAJ

  • 相关阅读:
    LED自动同步时钟(LED电子时钟系统)京准电子
    电力北斗对时装置(北斗时钟同步系统)详细介绍
    京准时间同步系统(NTP网络同步时钟)概述
    京准:NTP时钟服务器(NTP时钟服务器)研究分析
    医院时钟系统(子母钟系统)设计组成架构
    GPS校时器(北斗授时设备)助力政务云建设
    三大免费开源的php语言cms系统 用好它们让你一天建好一个网站
    想精通正则表达式 这几个正则表达式学习资料及工具你必须有!
    零基础建站如何配置PHP运行环境 几种服务器环境配置的选择和方法
    php代码如何加域名授权?开源php项目如何保护版权 商业授权?
  • 原文地址:https://www.cnblogs.com/CCE-SWR/p/10329568.html
Copyright © 2011-2022 走看看