首页 > 其他分享 >Istio DestinationRule

Istio DestinationRule

时间:2022-10-26 15:47:57浏览次数:52  
标签:配置 HTTP name labels trafficPolicy Istio DestinationRule

DestinationRule配置要点

  • DestinationRule用于配置路由完成之后的应用于服务的流量策略,即配置如何将流量调度至上游端点,同时也是为VirtualService的Destination指定的目标提供具体的定义和实现;主要包括以下配置项
    • 负载均衡配置

    • Sidecar连接池

    • 异常值检测相关的配置,即异常端点驱逐机制

  • DestinationRule的关键字段

    • host:必选字段,指定规则的适用对象,可以使用短域名;可用值是在服务注册中心注册的服务名,即网格内的服务或者是以ServiceEntry注册的网格外的服务;
    • trafficPolicy:具体的规则内容,包括负载均衡、连接池策略和异常值检测;

    • subsets:服务的子集定义,通常一个子集用于定义一个服务版本;

    • exportTo:用于控制DestinationRule跨名称空间的可见性,即控制一个名称空间下定义的DestinationRule资源对象是否可被其它名称空间下的Sidecar执行;
      • “.”:表示仅应用于当前名称空间;

      • “*”:表示应用于所有名称空间;

DestinationRule配置生效示意图

DestinationRule配置要点

  • Subset:服务子集

    • name:子集名称、

    • labels:子集上的标签

    • trafficPolicy:应用于当前子集的流量策略

  • TrafficPolicy主要包含如下几项重要配置

    • loadBalancer:定义使用的负载均衡器,即负载均衡算法;

      • 简单负载均衡:ROUND_ROBIN、LEAST_CONN、RANDOM和PASSTHROUTH

      • 一致性哈希:consistentHash仅对HTTP协议有效,它支持基于httpHeaderName、httpCookie、useSoureIp进行hash计算,并能够通过minimumRingSize指定Hash环大小;
    • outlierDetection:异常值检测;

      • consecutiveErrors:实例被驱逐前的连续错误次数和,默认值为5;

      • interval:驱逐的时间间隔,默认值为10秒,支持以时、分、秒和毫秒为单位;

      • baseEjectionTime:基准驱逐时长,具体时长取决于退避算法;

      • maxEjectionPercent:可被驱逐的最大实例比例,默认为10%;

      • minHealthPercent:启用异常值检测时要满足的最小健康状态实例比例,小于此比例,异常值检测将被禁用;默认为50%;

    • connectionPool:连接池配置

      • TCP连接池配置:

        • maxConnections:为上游服务的所有实例建立的最大连接数,默认为1024;

        • connectTimeout:TCP连接超时时长;对于HTTP协议来说,它仅适用于HTTP/1;

        • tcpKeepalive:TCP keepalives机制,通过定期给发送一个keepalive探测报文来判断连接是否可用;

      • HTTP连接池配置

        • http1MaxPendingRequests:允许挂起的最大HTTP请求数,默认为1024,仅适用于HTTP/1.1;

        • http2MaxRequests:允许的HTTP/2最大请求数,默认为1024;HTTP/1.1的由maxConnections设置即能实现;

        • maxRequestsPerConnection:每连接的最大请求数,默认为无限制,而1则表示禁用Keep-alive;

        • maxRetries:最大重试次数,默认为3;

        • idleTimeout:空闲超时时长;

    • PortTrafficPolicy:流量策略要应用的目标端口;

DestinationRule CRD

DestinationRule配置示例

子集示例

apiVersion: networking.istio.io/v1beta1
kind: DestinationRule
metadata:
  name: demoapp
spec:
  host: demoapp
  subsets:
  - name: v10
    labels:
      version: v1.0
  - name: v11
    labels:
      version: v1.1

负载均衡

kind: DestinationRule
metadata:
  name: demoapp
spec:
  host: demoapp
  trafficPolicy:
    loadBalancer:
      simple: LEAST_CONN
  subsets:
  - name: v10
    labels:
      version: v1.0
    trafficPolicy:
      loadBalancer:
        consistentHash:
          httpHeaderName: X-User
  - name: v11
    labels:
      version: v1.1

示例三

apiVersion: networking.istio.io/v1beta1
kind: DestinationRule
metadata:
  name: bookinfo-ratings 
spec:
  host: ratings.prod.svc.cluster.local
  trafficPolicy:
    loadBalancer:
      simple: LEAST_CONN 
  subsets:
  - name: testversion
    labels:
      version: v3 
    trafficPolicy: 
      loadBalancer:
        simple: ROUND_ROBIN

参考文档

https://istio.io/latest/zh/docs/reference/config/networking/destination-rule/

标签:配置,HTTP,name,labels,trafficPolicy,Istio,DestinationRule
From: https://www.cnblogs.com/wangguishe/p/16828614.html

相关文章

  • istio部署demoapp应用 (六)基于权重的流量分割
    架构图virtualservice-demoapp.yamlapiVersion:networking.istio.io/v1beta1kind:VirtualServicemetadata:name:demoappspec:hosts:-demoapphttp:......
  • istio部署demoapp应用 (四) Ingress-gateway暴露demoapp
    proxy-gateway.yamlapiVersion:networking.istio.io/v1beta1kind:Gatewaymetadata:name:proxy-gatewaynamespace:istio-systemspec:selector:app:i......
  • istio部署demoapp多版本应用示例
    环境说明frontend(proxy):前端应用,会请求后端的demoappservice:proxydemoapp:后端应用同时部署两个版本 部署demoappv1.0deploy-demoapp-v10.yamla......
  • istio部署后端单版本应用示例
    环境说明frontend(proxy):前端应用,会请求后端的demoappservice:proxydemoapp:后端应用service:demoappv10访问流程clientpod--->(EgressListener......
  • Istio流量治理基础
    流量治理Istio的流量路由规则使运维人员可以轻松控制服务之间的流量和API调用Istio简化了诸如断路器,超时和重试之类的服务级别属性的配置,并使其易于设置重要任务(A/B测......
  • 大厂Istio基础与实践 云原生“薪”能力合集,一线大厂实战
    大厂Istio基础与实践云原生“薪”能力合集,一线大厂实战导言:上一篇章给大家介绍了服务治理方案ServiceMesh(服务网格)产生的背景、逻辑架构、应用场景。本篇将要介绍的......
  • 安装istio和部署bookinfo项目
    一istio安装1.1下载安装​​https://istio.io/latest/docs/setup/getting-started/​​安装前提:你的服务器必须可以连接外网需要下载谷歌镜像#下载cd/usr/local/curl......
  • Istio常用命令
    Istio使用帮助#istioctl--helpIstioconfigurationcommandlineutilityforserviceoperatorstodebuganddiagnosetheirIstiomesh.Usage:istioctl[comm......
  • 一键体验 Istio
    背景介绍Istio 是一种服务网格,是一种现代化的服务网络层,它提供了一种透明、独立于语言的方法,以灵活且轻松地实现应用网络功能自动化。它是一种管理构成云原生应用的不同......
  • istio 1.15.2安装部署
    一、官方脚本安装部署[root@alicound-rocky-8-6~]#curl-Lhttps://istio.io/downloadIstio|ISTIO_VERSION=1.15.2TARGET_ARCH=x86_64sh-%Total%Receiv......