日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

目標(biāo)規(guī)則(Destination Rule)CRD說(shuō)明

更新時(shí)間:

目標(biāo)規(guī)則是服務(wù)網(wǎng)格ASM實(shí)現(xiàn)流量路由功能的關(guān)鍵資源之一。目標(biāo)規(guī)則定義在路由發(fā)生后,發(fā)往目標(biāo)服務(wù)的流量策略。目標(biāo)規(guī)則指定了負(fù)載均衡、來(lái)自Sidecar的連接池大小以及異常檢測(cè)設(shè)置的相關(guān)配置,以便從負(fù)載均衡池中檢測(cè)并清除不健康的主機(jī)。本文介紹目標(biāo)規(guī)則的配置示例和字段說(shuō)明。

配置示例

示例一:簡(jiǎn)單負(fù)載均衡策略

以下目標(biāo)規(guī)則使用最少請(qǐng)求(LEAST_REQUEST)負(fù)載均衡算法。在將負(fù)載分配給端點(diǎn)時(shí),優(yōu)先考慮未完成請(qǐng)求最少的端點(diǎn)。

apiVersion: networking.istio.io/v1beta1
kind: DestinationRule
metadata:
  name: bookinfo-ratings
spec:
  host: ratings.prod.svc.cluster.local
  trafficPolicy:
    loadBalancer:
      simple: LEAST_REQUEST

示例二:針對(duì)端口進(jìn)行自定義配置

流量策略可以針對(duì)特定端口進(jìn)行定制。以下目標(biāo)規(guī)則使用最少請(qǐng)求(LEAST_REQUEST)負(fù)載均衡策略處理所有到80端口的流量,同時(shí)將使用輪詢(ROUND_ROBIN)負(fù)載均衡設(shè)置處理到9080端口的流量。

apiVersion: networking.istio.io/v1beta1
kind: DestinationRule
metadata:
  name: bookinfo-ratings-port
spec:
  host: ratings.prod.svc.cluster.local
  trafficPolicy: # Apply to all ports.
    portLevelSettings:
    - port:
        number: 80
      loadBalancer:
        simple: LEAST_REQUEST
    - port:
        number: 9080
      loadBalancer:
        simple: ROUND_ROBIN

示例三:針對(duì)特定工作負(fù)載進(jìn)行自定義配置

以下示例使用workloadSelector配置將目標(biāo)規(guī)則應(yīng)用于特定工作負(fù)載。

apiVersion: networking.istio.io/v1beta1
kind: DestinationRule
metadata:
  name: configure-client-mtls-dr-with-workloadselector
spec:
  host: example.com
  workloadSelector:
    matchLabels:
      app: ratings
  trafficPolicy:
    loadBalancer:
      simple: ROUND_ROBIN
    portLevelSettings:
    - port:
        number: 31443
      tls:
        credentialName: client-credential
        mode: MUTUAL

字段說(shuō)明

DestinationRule

目標(biāo)規(guī)則定義在路由發(fā)生后,發(fā)往目的服務(wù)的流量策略。

字段

類型

是否必選

說(shuō)明

host

string

服務(wù)注冊(cè)表中的服務(wù)名稱。服務(wù)名稱將在平臺(tái)的服務(wù)注冊(cè)表(例如Kubernetes服務(wù)、Consul服務(wù)等)和ServiceEntry聲明的主機(jī)中查找。對(duì)于服務(wù)注冊(cè)表中不存在服務(wù)定義的規(guī)則將被忽略。該字段適用于HTTP服務(wù)和TCP服務(wù)。

針對(duì)Kubernetes的說(shuō)明如下:

  • 當(dāng)使用短名稱時(shí),例如使用reviews而不使用reviews.default.svc.cluster.local,Istio將根據(jù)路由規(guī)則的命名空間而不是服務(wù)來(lái)解析短名稱。在default命名空間中包含一個(gè)名為reviews的主機(jī)的規(guī)則將被解釋為reviews.default.svc.cluster.local,而與reviews服務(wù)的實(shí)際命名空間無(wú)關(guān)。

  • 為避免潛在的配置錯(cuò)誤,建議始終使用完全限定域名而不是短名稱。

trafficPolicy

TrafficPolicy

應(yīng)用的流量策略(負(fù)載均衡策略、連接池大小、異常檢測(cè))。

subsets

Subset[]

代表服務(wù)的各個(gè)版本的一個(gè)或多個(gè)子集。服務(wù)基本的流量策略可以被子集級(jí)別覆蓋。

exportTo

string[]

目標(biāo)規(guī)則導(dǎo)出到的命名空間列表。將目標(biāo)規(guī)則解析應(yīng)用于服務(wù)時(shí),會(huì)在命名空間層級(jí)的上下文中進(jìn)行。導(dǎo)出的目標(biāo)規(guī)則允許被包含在其他命名空間中的服務(wù)解析層次結(jié)構(gòu)中。此功能提供了一種機(jī)制,使服務(wù)所有者和網(wǎng)格管理員可以控制跨命名空間邊界的目標(biāo)規(guī)則的可見(jiàn)性。

  • 如果未指定命名空間,目標(biāo)規(guī)則默認(rèn)會(huì)導(dǎo)出到所有命名空間。

  • .被保留并定義為導(dǎo)出到與目標(biāo)規(guī)則的相同命名空間。

  • *被保留并定義為導(dǎo)出到所有命名空間。

workloadSelector

WorkloadSelector

選擇應(yīng)用此目標(biāo)規(guī)則的Pods的條件。

  • 如果指定,目標(biāo)規(guī)則配置將僅應(yīng)用于與同一命名空間中的工作負(fù)載選擇器標(biāo)簽匹配的工作負(fù)載實(shí)例。工作負(fù)載選擇器不跨命名空間匹配。

  • 如果不指定,目標(biāo)規(guī)則將回退到默認(rèn)行為,即應(yīng)用到目標(biāo)服務(wù)的全部工作負(fù)載。例如,如果特定的Sidecar需要針對(duì)網(wǎng)格外部的服務(wù)具有出口TLS設(shè)置,而不是需要網(wǎng)格中的每個(gè)Sidecar都具有該配置(這是默認(rèn)行為),可以指定工作負(fù)載選擇器。

TrafficPolicy

應(yīng)用到指定目的地的流量策略,作用于目的地的全部端口。

字段

類型

是否必選

說(shuō)明

loadBalancer

LoadBalancerSettings

設(shè)置負(fù)載均衡算法。

connectionPool

ConnectionPoolSettings

設(shè)置上游服務(wù)的連接池。

outlierDetection

OutlierDetection

設(shè)置如何從負(fù)載平衡池中清除不健康主機(jī)。

tls

ClientTLSSettings

與上游服務(wù)連接的TLS相關(guān)設(shè)置。

portLevelSettings

PortTrafficPolicy[]

端口級(jí)別的流量策略。端口級(jí)別的設(shè)置將覆蓋目的地級(jí)別的設(shè)置。當(dāng)端口級(jí)別的流量策略覆蓋了目的地級(jí)別的設(shè)置時(shí),目的地級(jí)別的其他字段的設(shè)置將不會(huì)被繼承,即在端口級(jí)別的流量策略中省略的字段將應(yīng)用默認(rèn)值。

tunnel

TunnelSettings

對(duì)于目標(biāo)規(guī)則中指定的主機(jī),將TCP使用其他傳輸層或者應(yīng)用層協(xié)議進(jìn)行隧道傳輸。TunnelSettings可應(yīng)用于TCP或TLS路由,但不能應(yīng)用于HTTP路由。

Subset

服務(wù)全部端點(diǎn)(endpoints)的一個(gè)子集。子集可用于A/B測(cè)試或路由到服務(wù)的特定版本等場(chǎng)景。服務(wù)級(jí)別定義的流量策略可以在子集級(jí)別被覆蓋。關(guān)于子集的更多信息,請(qǐng)參見(jiàn)虛擬服務(wù)(Virtual Service)CRD說(shuō)明

您可以使用目標(biāo)規(guī)則指定命名的服務(wù)子集,例如按版本為所有給定服務(wù)的實(shí)例分組。在虛擬服務(wù)的路由規(guī)則中使用這些服務(wù)子集來(lái)控制到服務(wù)不同實(shí)例的流量。在子集中可以指定特定版本的策略并覆蓋在服務(wù)級(jí)別指定的設(shè)置。以下目標(biāo)規(guī)則使用輪詢(ROUND_ROBIN)負(fù)載平衡策略,將所有流量發(fā)送到名為testversion的子集。該子集由具有標(biāo)簽version:v3的Endpoints組成。

說(shuō)明

對(duì)子集指定的負(fù)載均衡策略,僅當(dāng)目標(biāo)規(guī)則將流量發(fā)送到該子集時(shí)生效。

展開(kāi)查看YAML示例

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

通常需要一個(gè)或多個(gè)標(biāo)簽來(lái)指定子集包含的目標(biāo)。當(dāng)目標(biāo)規(guī)則代表的主機(jī)名支持多個(gè)SNI主機(jī)名時(shí)(例如出口網(wǎng)關(guān)),沒(méi)有標(biāo)簽的子集可能有意義。在這種情況下,可以使用包含ClientTLSSettings的流量策略來(lái)識(shí)別與命名子集對(duì)應(yīng)的特定SNI主機(jī)。

字段

類型

是否必選

說(shuō)明

name

string

子集的名稱。服務(wù)名稱和子集名稱可用于路由規(guī)則中的流量拆分。

labels

map<string, string>

標(biāo)簽用于創(chuàng)建過(guò)濾器,篩選服務(wù)注冊(cè)表中服務(wù)的端點(diǎn)。

trafficPolicy

TrafficPolicy

要應(yīng)用到該子集的流量策略。子集繼承在DestinationRule級(jí)別指定的流量策略。在子集級(jí)別指定的設(shè)置將覆蓋在DestinationRule級(jí)別指定的相應(yīng)設(shè)置。

LoadBalancerSettings

應(yīng)用于特定目的地的負(fù)載平衡策略。更多信息,請(qǐng)參見(jiàn)Load Balancing

  • 以下目標(biāo)規(guī)則對(duì)所有發(fā)往ratings服務(wù)的流量使用Robin負(fù)載平衡策略。

    展開(kāi)查看負(fù)載平衡策略YAML示例

    apiVersion: networking.istio.io/v1beta1
    kind: DestinationRule
    metadata:
      name: bookinfo-ratings
    spec:
      host: ratings.prod.svc.cluster.local
      trafficPolicy:
        loadBalancer:
          simple: ROUND_ROBIN
  • 以下目標(biāo)規(guī)則為ratings服務(wù)配置會(huì)話保持功能。使用基于哈希的負(fù)載均衡器并使用httpCookie字段user作為哈希的Key。

    展開(kāi)查看會(huì)話保持YAML示例

    apiVersion: networking.istio.io/v1alpha3
    kind: DestinationRule
    metadata:
      name: bookinfo-ratings
    spec:
      host: ratings.prod.svc.cluster.local
      trafficPolicy:
        loadBalancer:
          consistentHash:
            httpCookie:
              name: user
              ttl: 0s

說(shuō)明

下表類型列的oneof表示該字段的取值有多個(gè),但是您只能任選其一進(jìn)行配置。

字段

類型

是否必選

說(shuō)明

simple

SimpleLB (oneof)

指定一種簡(jiǎn)單負(fù)載平衡的算法。

consistentHash

ConsistentHashLB (oneof)

指定一種一致性哈希負(fù)載均衡的算法。

localityLbSetting

LocalityLoadBalancerSetting

本地負(fù)載均衡器設(shè)置。此配置將完全覆蓋網(wǎng)格范圍的設(shè)置。此對(duì)象和MeshConfig中的對(duì)象不會(huì)進(jìn)行合并。

warmupDurationSecs

Duration

服務(wù)的預(yù)熱持續(xù)時(shí)間。如果設(shè)置了該字段,服務(wù)的新端點(diǎn)將在其創(chuàng)建時(shí)間開(kāi)始保持預(yù)熱模式,持續(xù)該字段指定的時(shí)間。在此期間Istio將逐漸增加該端點(diǎn)的流量,而不是發(fā)送相應(yīng)比例的流量。

  • 此配置應(yīng)該對(duì)需要預(yù)熱才能在合適的延遲內(nèi)滿狀態(tài)工作的服務(wù)開(kāi)啟。

  • 此配置在出現(xiàn)少量新端點(diǎn)的情況下最為有效,例如Kubernetes的擴(kuò)容事件。當(dāng)所有端點(diǎn)都相對(duì)較新時(shí)(例如新部署時(shí))不太有效,因?yàn)樗卸它c(diǎn)最終都會(huì)獲得相同數(shù)量的請(qǐng)求。

  • 此配置僅支持ROUND_ROBINLEAST_REQUEST負(fù)載均衡器。

ConnectionPoolSettings

連接到上游主機(jī)的連接池設(shè)置。這些設(shè)置適用于上游服務(wù)中的每個(gè)主機(jī)。更多信息,請(qǐng)參見(jiàn)Envoy的circuit breaker。連接池設(shè)置可應(yīng)用于TCP級(jí)別和HTTP級(jí)別。

例如,以下規(guī)則對(duì)名為myredissrv的Redis服務(wù)設(shè)置100個(gè)連接的上限,并設(shè)置連接超時(shí)為30毫秒。

展開(kāi)查看DestinationRule YAML示例

apiVersion: networking.istio.io/v1beta1
kind: DestinationRule
metadata:
  name: bookinfo-redis
spec:
  host: myredissrv.prod.svc.cluster.local
  trafficPolicy:
    connectionPool:
      tcp:
        maxConnections: 100
        connectTimeout: 30ms
        tcpKeepalive:
          time: 7200s
          interval: 75s

字段

類型

是否必選

說(shuō)明

tcp

TCPSettings

HTTP和TCP上游連接的通用設(shè)置。

http

HTTPSettings

HTTP連接池設(shè)置。

OutlierDetection

跟蹤上游服務(wù)中主機(jī)的狀態(tài)的熔斷器,適用于HTTP和TCP服務(wù)。

  • 對(duì)于HTTP服務(wù),API調(diào)用不斷返回5xx錯(cuò)誤的主機(jī)將在指定時(shí)間內(nèi)從可用主機(jī)池中排除。

  • 對(duì)于TCP服務(wù),給定主機(jī)的連接超時(shí)或連接失敗在計(jì)算連續(xù)錯(cuò)誤指標(biāo)時(shí)都被視為錯(cuò)誤。更多信息,請(qǐng)參見(jiàn)Envoy的outlier detection

以下目標(biāo)規(guī)則將連接池大小設(shè)置為100個(gè)HTTP1連接,發(fā)送到reviews服務(wù)的請(qǐng)求或連接不超過(guò)10個(gè)。為HTTP2請(qǐng)求設(shè)置1000并發(fā)的上限,并將上游主機(jī)配置為每5分鐘掃描一次。任何連續(xù)7次出現(xiàn)502、503或504錯(cuò)誤代碼的主機(jī)將被熔斷15分鐘。

展開(kāi)查看DestinationRule YAML示例

apiVersion: networking.istio.io/v1beta1
kind: DestinationRule
metadata:
  name: reviews-cb-policy
spec:
  host: reviews.prod.svc.cluster.local
  trafficPolicy:
    connectionPool:
      tcp:
        maxConnections: 100
      http:
        http2MaxRequests: 1000
        maxRequestsPerConnection: 10
    outlierDetection:
      consecutive5xxErrors: 7
      interval: 5m
      baseEjectionTime: 15m

字段

類型

是否必選

說(shuō)明

splitExternalLocalOriginErrors

bool

指定是否區(qū)分本地源故障和外部錯(cuò)誤。默認(rèn)為false。設(shè)置為true,consecutiveLocalOriginFailures將被用于異常值檢測(cè)計(jì)算。

以下場(chǎng)景時(shí),您可以使用此功能。

  • 根據(jù)本地看到的錯(cuò)誤(例如連接失敗、連接超時(shí)等)而不是上游服務(wù)返回的狀態(tài)代碼,來(lái)計(jì)算異常狀態(tài)。

  • 當(dāng)上游服務(wù)明確為某些請(qǐng)求返回5xx,而您需要忽略這些來(lái)自上游服務(wù)的響應(yīng),來(lái)確定主機(jī)的異常檢測(cè)狀態(tài)。

consecutiveLocalOriginFailures

UInt32Value

觸發(fā)排除需要的連續(xù)本地故障數(shù)。默認(rèn)為5。該字段僅在splitExternalLocalOriginErrors設(shè)置為true時(shí)生效。

consecutiveGatewayErrors

UInt32Value

將主機(jī)排除出連接池需要的網(wǎng)關(guān)錯(cuò)誤數(shù)。當(dāng)通過(guò)HTTP訪問(wèn)上游主機(jī)時(shí),502、503或504返回碼被視為網(wǎng)關(guān)錯(cuò)誤。當(dāng)通過(guò)不透明的TCP連接訪問(wèn)上游主機(jī)時(shí),連接超時(shí)和連接錯(cuò)誤/失敗事件被視為網(wǎng)關(guān)錯(cuò)誤。默認(rèn)情況或設(shè)置值為0時(shí),此功能關(guān)閉。

說(shuō)明
  • consecutiveGatewayErrorsconsecutive5xxErrors可以分別或一起使用。

  • 由于consecutiveGatewayErrors計(jì)算的錯(cuò)誤也包含在consecutive5xxErrors中,如果consecutiveGatewayErrors的值大于或等于consecutive5xxErrors的值,則consecutiveGatewayErrors不會(huì)起作用。

consecutive5xxErrors

UInt32Value

將主機(jī)排除出連接池需要的5xx錯(cuò)誤數(shù)量。當(dāng)通過(guò)不透明的TCP連接訪問(wèn)上游主機(jī)時(shí),連接超時(shí)、連接錯(cuò)誤或失敗、請(qǐng)求失敗事件都被視為5xx錯(cuò)誤。默認(rèn)值為5。您可以通過(guò)將值設(shè)置為0來(lái)關(guān)閉此功能。

說(shuō)明
  • consecutiveGatewayErrorsconsecutive5xxErrors可以分別或一起使用。

  • 由于consecutiveGatewayErrors計(jì)算的錯(cuò)誤也包含在consecutive5xxErrors中,如果consecutiveGatewayErrors的值大于或等于consecutive5xxErrors的值,則consecutiveGatewayErrors不會(huì)起作用。

interval

Duration

排除操作掃描的時(shí)間間隔。格式為1h/1m/1s/1ms。該值必須≥1毫秒。默認(rèn)為10秒。

baseEjectionTime

Duration

最短排除時(shí)間。主機(jī)被排除出連接池的時(shí)間等于最短排除時(shí)間和主機(jī)被排除次數(shù)的乘積。該字段允許系統(tǒng)自動(dòng)增加不健康的上游服務(wù)器的彈出時(shí)間。格式為1h/1m/1s/1ms。該值必須≥1毫秒。默認(rèn)為30秒。

maxEjectionPercent

int32

可以排除出負(fù)載均衡池的上游服務(wù)主機(jī)的最大百分比。默認(rèn)為10%。

minHealthPercent

int32

當(dāng)負(fù)載均衡池至少有min_health_percent比例的主機(jī)處于健康狀態(tài)時(shí),啟用異常檢測(cè)。當(dāng)負(fù)載均衡池中健康主機(jī)的百分比低于此閾值時(shí),異常檢測(cè)將被禁用,代理將在池中的所有主機(jī)(健康和不健康)之間進(jìn)行負(fù)載均衡。您可以通過(guò)將閾值設(shè)置為0%來(lái)禁用該閾值。默認(rèn)值為0%,因?yàn)樗ǔ2贿m用于每個(gè)服務(wù)只有幾個(gè)Pod的K8s環(huán)境。

ClientTLSSettings

上游連接的SSL/TLS相關(guān)設(shè)置。該配置適用于HTTP和TCP上游。更多信息,請(qǐng)參見(jiàn)Envoy的TLS context

  • 以下目標(biāo)規(guī)則將客戶端配置為使用雙向TLS連接到上游數(shù)據(jù)庫(kù)集群。

    展開(kāi)查看YAML示例

    apiVersion: networking.istio.io/v1beta1
    kind: DestinationRule
    metadata:
      name: db-mtls
    spec:
      host: mydbserver.prod.svc.cluster.local
      trafficPolicy:
        tls:
          mode: MUTUAL
          clientCertificate: /etc/certs/myclientcert.pem
          privateKey: /etc/certs/client_private_key.pem
          caCertificates: /etc/certs/rootcacerts.pem
  • 以下目標(biāo)規(guī)則將客戶端配置為在與域名*.foo.com匹配的外部服務(wù)對(duì)話時(shí)使用TLS。

    展開(kāi)查看YAML示例

    apiVersion: networking.istio.io/v1beta1
    kind: DestinationRule
    metadata:
      name: tls-foo
    spec:
      host: "*.foo.com"
      trafficPolicy:
        tls:
          mode: SIMPLE
  • 以下目標(biāo)規(guī)則將客戶端配置為在與ratings服務(wù)通信時(shí)使用Istio雙向TLS。

    展開(kāi)查看YAML示例

    apiVersion: networking.istio.io/v1beta1
    kind: DestinationRule
    metadata:
      name: ratings-istio-mtls
    spec:
      host: ratings.prod.svc.cluster.local
      trafficPolicy:
        tls:
          mode: ISTIO_MUTUAL

字段

類型

是否必選

說(shuō)明

mode

TLSmode

指定是使用TLS對(duì)此端口的連接進(jìn)行安全保護(hù)。該字段的值決定TLS的應(yīng)用方式。

clientCertificate

string

客戶端側(cè)TLS證書(shū)的文件路徑。

  • 如果modeMUTUAL,則此字段必選。

  • 如果modeISTIO_MUTUAL,則此字段為空。

privateKey

string

客戶端私鑰的文件路徑。

  • 如果modeMUTUAL,則此字段必選。

  • 如果modeISTIO_MUTUAL,則此字段為空。

caCertificates

string

用于驗(yàn)證證書(shū)的CA證書(shū)的文件路徑。

  • 如果省略,代理將不會(huì)驗(yàn)證服務(wù)器的證書(shū)。

  • 如果modeISTIO_MUTUAL,則此字段為空。

credentialName

string

保存包括CA證書(shū)在內(nèi)的客戶端TLS證書(shū)的密鑰的名稱。密鑰必須存在于使用證書(shū)的代理所在的相同名稱空間中。

支持generictls兩種密鑰類型。

  • 如果密鑰類型為generic,則應(yīng)包含以下鍵和值:key: <privateKey>, cert: <clientCert>, cacert: <CACertificate>CACertificate用于驗(yàn)證服務(wù)器證書(shū)。

  • 如果密鑰類型為tls,則應(yīng)包含客戶端證書(shū)和CA證書(shū)中的ca.crt鍵。只能同時(shí)指定以下任意一種。

    • clientCertificatecaCertificates

    • credentialName

說(shuō)明

只有DestinationRule中指定了工作負(fù)載的選擇器(workloadSelector)時(shí),本字段才會(huì)對(duì)Sidecar生效。否則本字段僅適用于網(wǎng)關(guān),Sidecar將繼續(xù)使用證書(shū)路徑。

subjectAltNames

string[]

用于驗(yàn)證證書(shū)中主體身份的備用名稱列表。

  • 如果指定,代理將驗(yàn)證服務(wù)器證書(shū)的主體備用名稱是否與指定值列表中任意值匹配,并且此列表會(huì)覆蓋ServiceEntry中subjectAltNames的值。

  • 如果未指定,當(dāng)VERIFY_CERTIFICATE_AT_CLIENTENABLE_AUTO_SNI環(huán)境變量設(shè)置為true時(shí),會(huì)根據(jù)下游HTTP Host或者Authority Header自動(dòng)驗(yàn)證上游呈現(xiàn)的證書(shū)。

sni

string

在TLS握手期間提供給服務(wù)器的SNI字符串。如果未指定,當(dāng)將ENABLE_AUTO_SNI環(huán)境變量設(shè)置為true時(shí),在簡(jiǎn)單TLS和相互TLS模式下,會(huì)基于下游HTTP Host或者Authority Header自動(dòng)設(shè)置SNI。

insecureSkipVerify

BoolValue

此字段指定代理是否跳過(guò)驗(yàn)證與主機(jī)對(duì)應(yīng)的服務(wù)器證書(shū)的CA簽名和SAN。默認(rèn)為false。

僅當(dāng)啟用全局CA簽名驗(yàn)證,并且將VerifyCertAtClient環(huán)境變量設(shè)置為true,但不希望對(duì)特定主機(jī)進(jìn)行驗(yàn)證時(shí),才應(yīng)設(shè)置此標(biāo)志。如果啟用InsecureSkipVerify,無(wú)論是否啟用VerifyCertAtClient,都將跳過(guò)CA簽名和SAN的驗(yàn)證。

LocalityLoadBalancerSetting

提供一個(gè)區(qū)域加權(quán)的負(fù)載均衡,使管理員能夠根據(jù)流量的源位置和終止位置來(lái)控制流量分配到端點(diǎn)的比例。區(qū)域信息可以使用任意標(biāo)簽指定。這些標(biāo)簽以{region}/{zone}/{sub-zone}形式指定區(qū)域的層次結(jié)構(gòu)。更多信息,請(qǐng)參見(jiàn)Locality Weight

  • 以下示例展示如何在整個(gè)網(wǎng)格中設(shè)置區(qū)域加權(quán)。假設(shè)有一個(gè)包含工作負(fù)載和服務(wù)的網(wǎng)格被部署到區(qū)域hangzhou/zone1/hangzhou/zone2/。本示例指定當(dāng)訪問(wèn)服務(wù)的流量源自hangzhou/zone1/的工作負(fù)載時(shí),80%的流量將被發(fā)送到hangzhou/zone1/中的端點(diǎn)(即同一區(qū)域),剩下的20%將被發(fā)送到hangzhou/zone2/中的端點(diǎn)。此設(shè)置優(yōu)先將流量路由到相同本地性的終點(diǎn)。對(duì)于源自hangzhou/zone2/的流量,也指定了類似的設(shè)置。

    展開(kāi)查看YAML示例

      distribute:
        - from: hangzhou/zone1/*
          to:
            "hangzhou/zone1/*": 80
            "hangzhou/zone2/*": 20
        - from: hangzhou/zone2/*
          to:
            "hangzhou/zone1/*": 20
            "hangzhou/zone2/*": 80
  • 如果您的目標(biāo)不是跨區(qū)域或可用區(qū)分配負(fù)載,而是限制故障轉(zhuǎn)移的區(qū)域性,則可以設(shè)置failover策略而不是distribute策略。

    以下示例設(shè)置區(qū)域故障轉(zhuǎn)移策略。假設(shè)服務(wù)駐留在杭州、北京和上海的區(qū)域中。此策略指定當(dāng)杭州的端點(diǎn)變?yōu)椴唤】禃r(shí),流量應(yīng)轉(zhuǎn)移到北京區(qū)域或子區(qū)域中的端點(diǎn)。同理,當(dāng)北京的端點(diǎn)變?yōu)椴唤】禒顟B(tài)時(shí),流量應(yīng)該轉(zhuǎn)移到上海的端點(diǎn)。

    展開(kāi)查看YAML示例

     failover:
       - from: hangzhou
         to: beijing
       - from: beijing
         to: shanghai

字段

類型

是否必選

說(shuō)明

distribute

Distribute[]

明確指定跨不同區(qū)域和地理位置的負(fù)載均衡權(quán)重。如果為空,則根據(jù)其中的端點(diǎn)數(shù)設(shè)置區(qū)域權(quán)重。更多信息,請(qǐng)參見(jiàn)Locality weighted load balancing

說(shuō)明

只能設(shè)置distributefailoverfailoverPriority三者中的任意一項(xiàng)。

failover

Failover[]

明確指定當(dāng)本地區(qū)域中的端點(diǎn)變?yōu)椴唤】禃r(shí),流量將轉(zhuǎn)移到哪個(gè)區(qū)域。該字段需要與OutlierDetection一起使用,以檢測(cè)不健康的端點(diǎn)。如果未指定OutlierDetection,此設(shè)置將不會(huì)生效。

說(shuō)明

只能設(shè)置distributefailoverfailoverPriority三者中的任意一項(xiàng)。

failoverPriority

string[]

一個(gè)有序的標(biāo)簽列表,用于對(duì)端點(diǎn)進(jìn)行排序以進(jìn)行基于優(yōu)先級(jí)的負(fù)載平衡。該字段用于支持跨不同端點(diǎn)組的流量故障轉(zhuǎn)移。該字段需要與OutlierDetection一起使用,以檢測(cè)不健康的端點(diǎn)。如果未指定OutlierDetection,此設(shè)置將不會(huì)生效。

假設(shè)一共指定了N個(gè)標(biāo)簽:

  1. 與客戶端代理匹配所有N個(gè)標(biāo)簽的端點(diǎn)具有優(yōu)先級(jí)P(0),即最高優(yōu)先級(jí)。

  2. 與客戶端代理匹配前N-1個(gè)標(biāo)簽的端點(diǎn)具有優(yōu)先級(jí)P(1),即第二高優(yōu)先級(jí)。

  3. 通過(guò)擴(kuò)展此邏輯,僅有第一個(gè)標(biāo)簽與客戶端代理匹配的端點(diǎn)具有優(yōu)先級(jí)P(N-1),即第二低的優(yōu)先級(jí)。

  4. 所有其他端點(diǎn)都具有優(yōu)先級(jí)P(N),即最低優(yōu)先級(jí)。

    說(shuō)明

    匹配的標(biāo)簽,其前的標(biāo)簽必須匹配,即只有前N-1個(gè)標(biāo)簽匹配時(shí),才會(huì)認(rèn)為第N個(gè)標(biāo)簽匹配。

此字段可以是在客戶端和服務(wù)端工作負(fù)載上指定的任何標(biāo)簽,并支持以下具有特殊語(yǔ)義的標(biāo)簽:

  • topology.istio.io/network:用于匹配端點(diǎn)的網(wǎng)絡(luò)元數(shù)據(jù),可以通過(guò)Pod或Namespace標(biāo)簽topology.istio.io/network,Sidecar環(huán)境變量ISTIO_META_NETWORK指定。

  • topology.istio.io/cluster:用于匹配端點(diǎn)的clusterID,可以通過(guò)Pod labeltopology.istio.io/cluster或Pod環(huán)境變量ISTIO_META_CLUSTER_ID指定。

  • topology.kubernetes.io/region:用于匹配端點(diǎn)的區(qū)域元數(shù)據(jù),映射到Kubernetes節(jié)點(diǎn)標(biāo)簽topology.kubernetes.io/region或棄用標(biāo)簽failure-domain.beta.kubernetes.io/region

  • topology.kubernetes.io/zone:用于匹配端點(diǎn)的可用區(qū)元數(shù)據(jù),映射到Kubernetes節(jié)點(diǎn)標(biāo)簽topology.kubernetes.io/zone或棄用標(biāo)簽failure-domain.beta.kubernetes.io/zone

  • topology.istio.io/subzone:用于匹配端點(diǎn)的子可用區(qū)元數(shù)據(jù),映射到Istio節(jié)點(diǎn)標(biāo)簽topology.istio.io/subzone

以下拓?fù)渑渲玫膬?yōu)先級(jí)說(shuō)明如下:

failoverPriority:
- "topology.istio.io/network"
- "topology.kubernetes.io/region"
- "topology.kubernetes.io/zone"
- "topology.istio.io/subzone"
  • 具有與客戶端代理相同的networkregionzonesubzone標(biāo)簽的端點(diǎn)為最高優(yōu)先級(jí)。

  • 與客戶端代理相同的networkregionzone標(biāo)簽但具有不同subzone標(biāo)簽的端點(diǎn)為第二高優(yōu)先級(jí)。

  • 與客戶端代理相同的networkregion標(biāo)簽但具有不同zone標(biāo)簽的端點(diǎn)為第三高優(yōu)先級(jí)。

  • 具有與客戶端代理不同的network標(biāo)簽的所有其他端點(diǎn)為最低優(yōu)先級(jí)。

說(shuō)明

只能設(shè)置distributefailoverfailoverPriority三者中的任意一項(xiàng)。

enabled

BoolValue

啟用區(qū)域負(fù)載均衡。該配置為DestinationRule級(jí)別,將完全覆蓋網(wǎng)格級(jí)別的設(shè)置。例如,該字段配置為true表示無(wú)論網(wǎng)格級(jí)別是什么設(shè)置,都為此DestinationRule開(kāi)啟區(qū)域負(fù)載均衡。

TrafficPolicy.PortTrafficPolicy

服務(wù)特定端口的流量策略。

字段

類型

是否必選

說(shuō)明

port

PortSelector

指定應(yīng)用此策略的目標(biāo)服務(wù)上的端口號(hào)。

loadBalancer

LoadBalancerSettings

控制負(fù)載均衡器算法。

connectionPool

ConnectionPoolSettings

控制與上游服務(wù)的連接量。

outlierDetection

OutlierDetection

控制從負(fù)載平衡池中排除不健康主機(jī)。

tls

ClientTLSSettings

與上游服務(wù)連接的TLS相關(guān)設(shè)置。

LoadBalancerSettings.ConsistentHashLB

Consistent Hash-based load balancing可用于提供基于HTTP頭部、Cookie或其他屬性的軟會(huì)話保持。一致性哈希在會(huì)話保持方面弱于傳統(tǒng)的基于HostName的會(huì)話保持。當(dāng)一個(gè)或多個(gè)主機(jī)被添加或刪除時(shí),使用一致性哈希算法的負(fù)載均衡會(huì)導(dǎo)致一小部分請(qǐng)求的會(huì)話保持失效。基于HostName的會(huì)話保持通常在Cookie中編碼特定目標(biāo),確保只要后端保持不變就會(huì)維持關(guān)聯(lián)。

一致性哈希的優(yōu)勢(shì)在于可以實(shí)現(xiàn)更好的負(fù)載均衡,對(duì)云上系統(tǒng)更加友好。

一致性哈希取決于每個(gè)代理?yè)碛幸恢碌亩它c(diǎn)視圖。當(dāng)啟用區(qū)域負(fù)載平衡時(shí),不保證每個(gè)代理?yè)碛幸恢碌亩它c(diǎn)視圖情況。區(qū)域負(fù)載平衡和一致性哈希只有在所有代理都在同一區(qū)域時(shí)才能一起生效,或者套一個(gè)更高層級(jí)的負(fù)載均衡去處理區(qū)域親和性。

字段

類型

是否必選

說(shuō)明

httpHeaderName

string

基于特定HTTP標(biāo)頭的哈希。 httpHeaderNamehttpCookieuseSourceIphttpQueryParameterName這四個(gè)參數(shù)只能填一個(gè)。

httpCookie

HTTPCookie

基于HTTP Cookie的哈希。

httpHeaderNamehttpCookieuseSourceIphttpQueryParameterName這四個(gè)參數(shù)只能填一個(gè)。

useSourceIp

bool

基于源IP地址的哈希,適用于TCP和HTTP連接。

httpHeaderNamehttpCookieuseSourceIphttpQueryParameterName這四個(gè)參數(shù)只能填一個(gè)。

httpQueryParameterName

string

基于指定HTTP查詢參數(shù)的哈希。

httpHeaderNamehttpCookieuseSourceIphttpQueryParameterName這四個(gè)參數(shù)只能填一個(gè)。

ringHash

RingHash

Ring或Modulo負(fù)載均衡器實(shí)現(xiàn)的對(duì)后端主機(jī)的一致性哈希。

ringHashmaglev這兩個(gè)參數(shù)只能填一個(gè),都不填默認(rèn)是ringHash

maglev

MagLev

Maglev負(fù)載均衡器實(shí)現(xiàn)的對(duì)后端主機(jī)的一致性哈希。

ringHashmaglev這兩個(gè)參數(shù)只能填一個(gè),都不填默認(rèn)是ringHash

ASM從1.16開(kāi)始支持maglev算法。

minimumRingSize

uint64

已棄用。請(qǐng)改用ringHash

LoadBalancerSettings.ConsistentHashLB.RingHash

字段

類型

是否必選

說(shuō)明

minimumRingSize

uint64

Ring算法的最小虛擬節(jié)點(diǎn)數(shù)。默認(rèn)為1024。較大的環(huán)會(huì)導(dǎo)致更細(xì)粒度的負(fù)載分布。如果負(fù)載均衡池中的主機(jī)數(shù)量大于環(huán)大小,則每臺(tái)主機(jī)將分配一個(gè)虛擬節(jié)點(diǎn)。

LoadBalancerSettings.ConsistentHashLB.MagLev

字段

類型

是否必選

說(shuō)明

tableSize

uint64

Maglev算法中散列表的大小,有助于控制當(dāng)后端主機(jī)發(fā)生變化時(shí)的干擾。增加表格大小可以減少干擾的程度。

LoadBalancerSettings.ConsistentHashLB.HTTPCookie

指定將被用作一致性哈希負(fù)載均衡器的哈希鍵。如果該Cookie不存在,則將生成該Cookie。

字段

類型

是否必選

說(shuō)明

name

string

這個(gè)cookie的內(nèi)容將會(huì)被用作Hash Key。如果這個(gè)cookie不存在并且下面的ttl沒(méi)有設(shè)置,將不會(huì)生成hash。

path

string

如果指定了,在這個(gè)Cookie不存在時(shí),將會(huì)生成一個(gè)帶有TTL的Cookie。如果TTL存在并且等于零,生成的Cookie將會(huì)作為Session Cookie。

ttl

Duration

Cookie的生命周期。

ConnectionPoolSettings.TCPSettings

HTTP和TCP上游連接通用的設(shè)置。

字段

類型

是否必選

說(shuō)明

maxConnections

int32

到目標(biāo)主機(jī)的最大HTTP1或TCP連接數(shù)。默認(rèn)為2^32-1

connectTimeout

Duration

TCP連接超時(shí)時(shí)長(zhǎng)。格式:1h/1m/1s/1ms。必須≥1毫秒。默認(rèn)為10秒。

tcpKeepalive

TcpKeepalive

如果設(shè)置,則在Socket上設(shè)置SO_KEEPALIVE以啟用TCP Keepalive。

maxConnectionDuration

Duration

連接的最長(zhǎng)持續(xù)時(shí)間。持續(xù)時(shí)間定義為自建立連接的時(shí)間間隔。如果未設(shè)置,則沒(méi)有最大持續(xù)時(shí)間。當(dāng)達(dá)到maxConnectionDuration時(shí),連接將被關(guān)閉。持續(xù)時(shí)間必須至少為1毫秒。

ConnectionPoolSettings.HTTPSettings

適用于HTTP1.1、HTTP2、GRPC連接的設(shè)置。

字段

類型

是否必選

說(shuō)明

http1MaxPendingRequests

int32

隊(duì)列中等待連接就緒的最大請(qǐng)求數(shù)。默認(rèn)為1024。此配置適用于HTTP/1.1和HTTP2。關(guān)于何時(shí)為HTTP2創(chuàng)建新連接,請(qǐng)參見(jiàn)circuit_breaking

http2MaxRequests

int32

發(fā)往一個(gè)目的地的最大活躍請(qǐng)求數(shù)。默認(rèn)為1024。此配置適用于HTTP/1.1和HTTP2。

maxRequestsPerConnection

int32

每個(gè)連接的最大請(qǐng)求數(shù)。此參數(shù)設(shè)置為1,將禁用HTTP Keepalive。默認(rèn)為0,表示無(wú)限制,最大為2^29。

maxRetries

int32

在給定時(shí)間對(duì)集群中所有主機(jī)可以進(jìn)行的最大重試次數(shù)。默認(rèn)為2^32-1。

idleTimeout

Duration

上游連接池連接的空閑超時(shí)時(shí)間。空閑超時(shí)時(shí)間指沒(méi)有活動(dòng)請(qǐng)求的時(shí)間段。如果未設(shè)置,則默認(rèn)為1小時(shí)。當(dāng)達(dá)到空閑超時(shí)時(shí)間時(shí),連接將被關(guān)閉。如果連接是HTTP/2連接,則在關(guān)閉連接之前將發(fā)送Drain Sequence。

基于請(qǐng)求的超時(shí)表明HTTP/2 PING不會(huì)使連接保持活動(dòng)狀態(tài)。該配置適用于HTTP1.1和HTTP2連接。

h2UpgradePolicy

H2UpgradePolicy

指定是否將連接到相應(yīng)目的地的HTTP1.1連接升級(jí)為HTTP2連接。

useClientProtocol

bool

如果設(shè)置為true,則在向后端發(fā)起連接時(shí)將保留客戶端使用的協(xié)議,Ah2UpgradePolicy將會(huì)無(wú)效,即客戶端連接不會(huì)升級(jí)到HTTP2。

ConnectionPoolSettings.TCPSettings.TcpKeepalive

TCP Keepalive的相關(guān)設(shè)置。

字段

類型

是否必選

說(shuō)明

probes

uint32

在確定連接已死之前要發(fā)送而沒(méi)有響應(yīng)的最大保活探測(cè)數(shù)。默認(rèn)使用操作系統(tǒng)級(jí)別的配置(除非被覆蓋)。Linux默認(rèn)為9。

time

Duration

在開(kāi)始發(fā)送保活探測(cè)之前連接需要空閑的持續(xù)時(shí)間。默認(rèn)使用操作系統(tǒng)級(jí)別的配置(除非被覆蓋)。Linux默認(rèn)為7200秒,即兩小時(shí)。

interval

Duration

保活探測(cè)之間的間隔時(shí)間。默認(rèn)使用操作系統(tǒng)級(jí)別的配置(除非被覆蓋)。Linux默認(rèn)為75秒。

google.protobuf.UInt32Value

uint32的包裝信息。

字段

類型

是否必選

說(shuō)明

value

uint32

uint32值。在JSON中UInt32Value需要表示成一個(gè)JSON數(shù)字值。

LoadBalancerSettings.SimpleLB

標(biāo)準(zhǔn)負(fù)載平衡算法。

字段

說(shuō)明

UNSPECIFIED

不指定負(fù)載均衡算法。Istio將選擇一個(gè)合適的默認(rèn)值。

RANDOM

隨機(jī)負(fù)載均衡算法隨機(jī)選擇一個(gè)健康的主機(jī)。如果沒(méi)有配置健康檢查策略,隨機(jī)負(fù)載均衡器通常比輪詢性能好。

PASSTHROUGH

此選項(xiàng)會(huì)將連接轉(zhuǎn)發(fā)到調(diào)用者請(qǐng)求的原始IP地址,而不進(jìn)行任何形式的負(fù)載均衡。此項(xiàng)屬于高級(jí)用法,請(qǐng)謹(jǐn)慎使用。更多信息,請(qǐng)參見(jiàn)Original destination

ROUND_ROBIN

基本的輪詢循環(huán)負(fù)載均衡策略。在許多場(chǎng)景(例如使用端點(diǎn)加權(quán)時(shí))不太安全,因?yàn)樗鼤?huì)使端點(diǎn)負(fù)擔(dān)過(guò)重。通常情況下,最好使用LEAST_REQUEST作為ROUND_ROBIN的替代方案。

LEAST_REQUEST

最少請(qǐng)求負(fù)載均衡在將負(fù)載分配給端點(diǎn)時(shí),會(huì)優(yōu)先考慮未完成請(qǐng)求最少的端點(diǎn)。通常更加安全,幾乎在所有情況下都優(yōu)于ROUND_ROBIN。建議使用LEAST_REQUEST作為ROUND_ROBIN的替代方案。

LEAST_CONN

已棄用。請(qǐng)改用LEAST_REQUEST

ConnectionPoolSettings.HTTPSettings.H2UpgradePolicy

將HTTP1.1連接升級(jí)到HTTP2的策略。

字段

說(shuō)明

DEFAULT

使用全局默認(rèn)值。

DO_NOT_UPGRADE

不將連接升級(jí)到HTTP2。

UPGRADE

將連接升級(jí)到HTTP2。

ClientTLSSettings.TLSmode

TLS連接模式。

字段

說(shuō)明

DISABLE

不建立與上游端點(diǎn)的TLS連接。

SIMPLE

建立與上游端點(diǎn)的TLS連接。

MUTUAL

通過(guò)提供客戶端證書(shū)進(jìn)行身份驗(yàn)證,使用雙向TLS保護(hù)與上游的連接。

ISTIO_MUTUAL

通過(guò)提供客戶端證書(shū)進(jìn)行身份驗(yàn)證,使用雙向TLS保護(hù)與上游的連接。與Mutual模式相比,該模式使用Istio自動(dòng)生成的證書(shū)進(jìn)行mTLS身份驗(yàn)證。使用此模式時(shí),ClientTLSSettings中所有其他字段都應(yīng)為空。