91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Istio服務(wù)網(wǎng)格的核心原理與部署實(shí)戰(zhàn)

馬哥Linux運(yùn)維 ? 來(lái)源:馬哥Linux運(yùn)維 ? 2026-02-26 09:49 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一、概述

1.1 背景介紹

微服務(wù)拆分之后,服務(wù)間調(diào)用關(guān)系變得復(fù)雜。一個(gè)請(qǐng)求從網(wǎng)關(guān)進(jìn)來(lái),經(jīng)過(guò)認(rèn)證服務(wù)、用戶服務(wù)、訂單服務(wù)、庫(kù)存服務(wù)、支付服務(wù),鏈路長(zhǎng)達(dá)5-6跳。每個(gè)環(huán)節(jié)都可能出問(wèn)題:超時(shí)、重試、熔斷、限流、mTLS加密、灰度發(fā)布——這些功能如果每個(gè)服務(wù)自己實(shí)現(xiàn),代碼侵入嚴(yán)重,而且Java、Go、Python各語(yǔ)言的SDK不統(tǒng)一。

Istio通過(guò)Sidecar代理(Envoy)把這些網(wǎng)絡(luò)層面的功能從業(yè)務(wù)代碼中剝離出來(lái),下沉到基礎(chǔ)設(shè)施層。業(yè)務(wù)代碼只管處理業(yè)務(wù)邏輯,流量管理、安全、可觀測(cè)性全部由Istio的數(shù)據(jù)平面處理。

1.2 技術(shù)特點(diǎn)

流量管理:基于權(quán)重的灰度發(fā)布、基于Header的路由、故障注入、超時(shí)重試熔斷,全部通過(guò)YAML配置實(shí)現(xiàn),不改業(yè)務(wù)代碼

安全:自動(dòng)mTLS加密服務(wù)間通信,基于SPIFFE身份的授權(quán)策略,證書自動(dòng)輪換,零信任網(wǎng)絡(luò)架構(gòu)

可觀測(cè)性:自動(dòng)生成請(qǐng)求級(jí)別的指標(biāo)(QPS、延遲、錯(cuò)誤率)、分布式鏈路追蹤、服務(wù)拓?fù)鋱D,不需要業(yè)務(wù)代碼埋點(diǎn)

Sidecar模式:每個(gè)Pod注入一個(gè)Envoy代理容器,攔截所有進(jìn)出流量。額外資源開(kāi)銷約每Pod 50-100MB內(nèi)存、0.1-0.2核CPU,P99延遲增加2-5ms

1.3 適用場(chǎng)景

微服務(wù)架構(gòu)下需要統(tǒng)一的流量管理能力(灰度發(fā)布、A/B測(cè)試、金絲雀發(fā)布)

需要服務(wù)間mTLS加密但不想改業(yè)務(wù)代碼

需要全鏈路可觀測(cè)性(指標(biāo)、追蹤、日志關(guān)聯(lián))

多語(yǔ)言微服務(wù)混合部署,無(wú)法統(tǒng)一SDK

1.4 環(huán)境要求

組件 版本要求 說(shuō)明
Kubernetes 1.26+ Istio 1.22要求K8s 1.26-1.30
Istio 1.22.x 當(dāng)前穩(wěn)定版本,生產(chǎn)環(huán)境推薦
節(jié)點(diǎn)資源 每節(jié)點(diǎn)至少4核8G istiod控制平面需要2核2G,每個(gè)Sidecar約100MB
Helm 3.12+ 推薦用Helm安裝Istio,比istioctl更適合GitOps
集群規(guī)模 至少3個(gè)Worker節(jié)點(diǎn) Sidecar會(huì)占用額外資源,節(jié)點(diǎn)太少容易資源不足

二、詳細(xì)步驟

2.1 準(zhǔn)備工作

2.1.1 系統(tǒng)檢查

# 確認(rèn)K8s版本
kubectl version --short

# 檢查集群節(jié)點(diǎn)資源
kubectl top nodes

# 確認(rèn)沒(méi)有已安裝的Istio(避免版本沖突)
kubectl get ns istio-system 2>/dev/null &&echo"Istio已安裝"||echo"Istio未安裝"

# 檢查是否有其他服務(wù)網(wǎng)格(Linkerd等)
kubectl get ns linkerd 2>/dev/null &&echo"警告:已安裝Linkerd,不要同時(shí)運(yùn)行兩個(gè)服務(wù)網(wǎng)格"

2.1.2 安裝istioctl

# 下載Istio 1.22.1
curl -L https://istio.io/downloadIstio | ISTIO_VERSION=1.22.1 sh -

# 移動(dòng)到PATH
sudo cp istio-1.22.1/bin/istioctl /usr/local/bin/

# 驗(yàn)證
istioctl version

# 運(yùn)行安裝前檢查
istioctl x precheck
# 輸出 "No issues found when checking the cluster" 表示可以安裝

2.1.3 選擇安裝Profile

Istio提供多個(gè)預(yù)置Profile,區(qū)別在于組件和配置不同:

Profile 組件 適用場(chǎng)景
default istiod + ingress gateway 生產(chǎn)環(huán)境推薦
demo istiod + ingress + egress + 高日志級(jí)別 學(xué)習(xí)和演示
minimal 僅istiod 只需要流量管理,不需要網(wǎng)關(guān)
ambient ztunnel + waypoint(無(wú)Sidecar) Ambient模式,不注入Sidecar

2.2 核心配置

2.2.1 使用istioctl安裝Istio

# 生產(chǎn)環(huán)境推薦用default profile
istioctl install --setprofile=default -y

# 驗(yàn)證安裝
kubectl get pods -n istio-system
# NAME                  READY  STATUS  RESTARTS  AGE
# istiod-5f4c75b7d-xxxxx         1/1   Running  0     60s
# istio-ingressgateway-6b7b4f5d-xxxxx  1/1   Running  0     55s

# 驗(yàn)證Istio組件健康狀態(tài)
istioctl verify-install

生產(chǎn)環(huán)境建議通過(guò)IstioOperator自定義資源配置:

# istio-operator.yaml
apiVersion:install.istio.io/v1alpha1
kind:IstioOperator
metadata:
name:istio-production
namespace:istio-system
spec:
profile:default
meshConfig:
 # 訪問(wèn)日志輸出到stdout,方便日志采集
 accessLogFile:/dev/stdout
 accessLogFormat:|
   [%START_TIME%] "%REQ(:METHOD)% %REQ(X-ENVOY-ORIGINAL-PATH?:PATH)% %PROTOCOL%"
   %RESPONSE_CODE% %RESPONSE_FLAGS% %BYTES_RECEIVED% %BYTES_SENT%
   %DURATION% %RESP(X-ENVOY-UPSTREAM-SERVICE-TIME)%
   "%REQ(X-FORWARDED-FOR)%" "%REQ(USER-AGENT)%"
   "%REQ(X-REQUEST-ID)%" "%REQ(:AUTHORITY)%"
 # 默認(rèn)開(kāi)啟mTLS
 defaultConfig:
  holdApplicationUntilProxyStarts:true
 enableAutoMtls:true
 # 鏈路追蹤采樣率,生產(chǎn)環(huán)境1%就夠了,100%會(huì)產(chǎn)生大量數(shù)據(jù)
 defaultConfig:
  tracing:
   sampling:1.0
components:
 pilot:
  k8s:
   resources:
    requests:
     cpu:500m
     memory:1Gi
    limits:
     cpu:2
     memory:2Gi
   # istiod高可用:2副本
   replicaCount:2
   hpaSpec:
    minReplicas:2
    maxReplicas:5
 ingressGateways:
 -name:istio-ingressgateway
  enabled:true
  k8s:
   resources:
    requests:
     cpu:500m
     memory:512Mi
    limits:
     cpu:2
     memory:1Gi
   replicaCount:2
   hpaSpec:
    minReplicas:2
    maxReplicas:10
   service:
    type:LoadBalancer
    # 保留客戶端真實(shí)IP
    externalTrafficPolicy:Local
 egressGateways:
 -name:istio-egressgateway
  enabled:false
values:
 global:
  # Sidecar代理資源限制
  proxy:
   resources:
    requests:
     cpu:100m
     memory:128Mi
    limits:
     cpu:500m
     memory:256Mi
  # 代理并發(fā)數(shù),0表示使用所有CPU核心
  proxy_init:
   resources:
    requests:
     cpu:10m
     memory:10Mi
    limits:
     cpu:100m
     memory:50Mi
# 使用自定義配置安裝
istioctl install -f istio-operator.yaml -y

2.2.2 啟用Sidecar自動(dòng)注入

# 給namespace打標(biāo)簽,開(kāi)啟自動(dòng)注入
kubectl label namespace default istio-injection=enabled

# 驗(yàn)證標(biāo)簽
kubectl get ns default --show-labels

# 已有的Pod需要重啟才能注入Sidecar
kubectl rollout restart deployment -n default

注意:Sidecar注入后每個(gè)Pod會(huì)多一個(gè)istio-proxy容器和一個(gè)istio-init初始化容器。Pod的READY列會(huì)從1/1變成2/2。如果看到1/2,說(shuō)明Sidecar沒(méi)啟動(dòng)成功,查看istio-proxy容器日志排查。

2.2.3 部署示例應(yīng)用Bookinfo

# 部署B(yǎng)ookinfo示例應(yīng)用
kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.22/samples/bookinfo/platform/kube/bookinfo.yaml

# 等待所有Pod就緒(每個(gè)Pod應(yīng)該是2/2)
kubectl get pods -w
# NAME               READY  STATUS  RESTARTS  AGE
# details-v1-xxx          2/2   Running  0     60s
# productpage-v1-xxx        2/2   Running  0     60s
# ratings-v1-xxx          2/2   Running  0     60s
# reviews-v1-xxx          2/2   Running  0     60s
# reviews-v2-xxx          2/2   Running  0     60s
# reviews-v3-xxx          2/2   Running  0     60s

# 驗(yàn)證應(yīng)用可訪問(wèn)
kubectlexec"$(kubectl get pod -l app=ratings -o jsonpath='{.items[0].metadata.name}')"
 -c ratings -- curl -sS productpage:9080/productpage | grep -o".*"
# <a  target="_blank"><u>Sim</u></a>ple Bookstore App

2.2.4 配置Istio Gateway和VirtualService

# bookinfo-gateway.yaml
apiVersion:networking.istio.io/v1
kind:Gateway
metadata:
name:bookinfo-gateway
namespace:default
spec:
selector:
 istio:ingressgateway
servers:
-port:
  number:80
  name:http
  protocol:HTTP
 hosts:
 -"bookinfo.example.com"
---
apiVersion:networking.istio.io/v1
kind:VirtualService
metadata:
name:bookinfo
namespace:default
spec:
hosts:
-"bookinfo.example.com"
gateways:
-bookinfo-gateway
http:
-match:
 -uri:
   exact:/productpage
 -uri:
   prefix:/static
 -uri:
   exact:/login
 -uri:
   exact:/logout
 -uri:
   prefix:/api/v1/products
 route:
 -destination:
   host:productpage
   port:
    number:9080
kubectl apply -f bookinfo-gateway.yaml

# 獲取Ingress Gateway的外部IP
exportINGRESS_HOST=$(kubectl -n istio-system get service istio-ingressgateway 
 -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
exportINGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway 
 -o jsonpath='{.spec.ports[?(@.name=="http2")].port}')

echo"訪問(wèn)地址: http://$INGRESS_HOST:$INGRESS_PORT/productpage"

# 測(cè)試訪問(wèn)
curl -s -o /dev/null -w"%{http_code}""http://$INGRESS_HOST:$INGRESS_PORT/productpage"
 -H"Host: bookinfo.example.com"
# 200

2.2.5 流量管理——灰度發(fā)布配置

# destination-rule.yaml - 定義服務(wù)的子集(版本)
apiVersion:networking.istio.io/v1
kind:DestinationRule
metadata:
name:reviews
namespace:default
spec:
host:reviews
trafficPolicy:
 connectionPool:
  tcp:
   maxConnections:100
  http:
   h2UpgradePolicy:DEFAULT
   http1MaxPendingRequests:100
   http2MaxRequests:1000
 outlierDetection:
  consecutive5xxErrors:5
  interval:10s
  baseEjectionTime:30s
  maxEjectionPercent:50
subsets:
-name:v1
 labels:
  version:v1
-name:v2
 labels:
  version:v2
-name:v3
 labels:
  version:v3
# reviews-canary.yaml - 金絲雀發(fā)布:90%流量到v1,10%到v2
apiVersion:networking.istio.io/v1
kind:VirtualService
metadata:
name:reviews
namespace:default
spec:
hosts:
-reviews
http:
-route:
 -destination:
   host:reviews
   subset:v1
  weight:90
 -destination:
   host:reviews
   subset:v2
  weight:10
kubectl apply -f destination-rule.yaml
kubectl apply -f reviews-canary.yaml

# 驗(yàn)證流量分配(發(fā)100個(gè)請(qǐng)求,大約10個(gè)會(huì)到v2)
foriin$(seq 1 100);do
 curl -s"http://$INGRESS_HOST:$INGRESS_PORT/productpage"
  -H"Host: bookinfo.example.com"| grep -c"glyphicon-star">> /tmp/star-count.txt
done
# v1沒(méi)有星星(0),v2有黑色星星,v3有紅色星星

2.3 啟動(dòng)和驗(yàn)證

2.3.1 驗(yàn)證Istio組件狀態(tài)

# 檢查控制平面狀態(tài)
istioctl proxy-status
# NAME                 CLUSTER  CDS  LDS  EDS  RDS  ECDS  ISTIOD
# details-v1-xxx.default        K8s    SYNCED SYNCED SYNCED SYNCED    istiod-xxx
# productpage-v1-xxx.default      K8s    SYNCED SYNCED SYNCED SYNCED    istiod-xxx

# 所有狀態(tài)應(yīng)該是SYNCED,如果是STALE說(shuō)明配置下發(fā)有延遲

# 檢查Sidecar配置是否正確
istioctl analyze
# 如果有配置問(wèn)題會(huì)輸出警告或錯(cuò)誤

2.3.2 驗(yàn)證mTLS

# 查看mTLS狀態(tài)
istioctl x describe pod $(kubectl get pod -l app=productpage -o jsonpath='{.items[0].metadata.name}')

# 驗(yàn)證服務(wù)間通信是否加密
kubectlexec"$(kubectl get pod -l app=ratings -o jsonpath='{.items[0].metadata.name}')"
 -c istio-proxy -- openssl s_client -connect productpage:9080 -alpn istio 2>/dev/null | head -5
# 應(yīng)該能看到TLS握手信息

# 查看PeerAuthentication策略
kubectl get peerauthentication -A

2.3.3 安裝可觀測(cè)性組件

# 安裝Kiali(服務(wù)拓?fù)淇梢暬?kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.22/samples/addons/kiali.yaml

# 安裝Prometheus(指標(biāo)采集)
kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.22/samples/addons/prometheus.yaml

# 安裝Grafana(指標(biāo)展示)
kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.22/samples/addons/grafana.yaml

# 安裝Jaeger(鏈路追蹤)
kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.22/samples/addons/jaeger.yaml

# 等待所有組件就緒
kubectl rollout status deployment kiali -n istio-system
kubectl rollout status deployment prometheus -n istio-system

# 訪問(wèn)Kiali Dashboard
istioctl dashboard kiali
# 瀏覽器打開(kāi) http://localhost:20001

三、示例代碼和配置

3.1 完整配置示例

3.1.1 生產(chǎn)級(jí)VirtualService——基于Header的路由

# 文件路徑:/opt/istio/config/reviews-routing.yaml
# 場(chǎng)景:內(nèi)部測(cè)試人員通過(guò)特定Header訪問(wèn)v3版本,普通用戶訪問(wèn)v1
apiVersion:networking.istio.io/v1
kind:VirtualService
metadata:
name:reviews
namespace:default
spec:
hosts:
-reviews
http:
# 規(guī)則1:測(cè)試用戶走v3(帶紅色星星的版本)
-match:
 -headers:
   x-test-user:
    exact:"true"
 route:
 -destination:
   host:reviews
   subset:v3
# 規(guī)則2:灰度用戶走v2(10%流量)
-match:
 -headers:
   x-canary:
    exact:"true"
 route:
 -destination:
   host:reviews
   subset:v2
# 規(guī)則3:默認(rèn)走v1
-route:
 -destination:
   host:reviews
   subset:v1
 timeout:3s
 retries:
  attempts:3
  perTryTimeout:1s
  retryOn:5xx,reset,connect-failure,retriable-4xx

3.1.2 超時(shí)、重試、熔斷完整配置

# 文件路徑:/opt/istio/config/resilience.yaml
# DestinationRule:連接池和熔斷配置
apiVersion:networking.istio.io/v1
kind:DestinationRule
metadata:
name:productpage
namespace:default
spec:
host:productpage
trafficPolicy:
 connectionPool:
  tcp:
   maxConnections:200
   connectTimeout:5s
  http:
   http1MaxPendingRequests:100
   http2MaxRequests:500
   maxRequestsPerConnection:10
   maxRetries:3
 # 熔斷:異常檢測(cè)
 outlierDetection:
  # 連續(xù)5個(gè)5xx錯(cuò)誤就熔斷
  consecutive5xxErrors:5
  # 每10秒檢測(cè)一次
  interval:10s
  # 熔斷后最少隔離30秒
  baseEjectionTime:30s
  # 最多隔離50%的后端實(shí)例
  maxEjectionPercent:50
  # 即使只有1個(gè)實(shí)例也執(zhí)行熔斷
  minHealthPercent:0
 loadBalancer:
  simple:LEAST_REQUEST
subsets:
-name:v1
 labels:
  version:v1
 trafficPolicy:
  connectionPool:
   http:
    http2MaxRequests:1000
---
# VirtualService:超時(shí)和重試配置
apiVersion:networking.istio.io/v1
kind:VirtualService
metadata:
name:productpage
namespace:default
spec:
hosts:
-productpage
http:
-route:
 -destination:
   host:productpage
   subset:v1
 # 請(qǐng)求超時(shí)3秒
 timeout:3s
 retries:
  # 最多重試2次
  attempts:2
  # 每次重試超時(shí)1秒
  perTryTimeout:1s
  # 觸發(fā)重試的條件
  retryOn:5xx,reset,connect-failure
 fault:
  delay:
   # 給1%的請(qǐng)求注入2秒延遲(用于混沌測(cè)試)
   percentage:
    value:1.0
   fixedDelay:2s

3.1.3 mTLS和授權(quán)策略

# 文件路徑:/opt/istio/config/security.yaml
# 全局嚴(yán)格mTLS
apiVersion:security.istio.io/v1
kind:PeerAuthentication
metadata:
name:default
namespace:istio-system
spec:
mtls:
 mode:STRICT
---
# 授權(quán)策略:只允許productpage訪問(wèn)reviews
apiVersion:security.istio.io/v1
kind:AuthorizationPolicy
metadata:
name:reviews-policy
namespace:default
spec:
selector:
 matchLabels:
  app:reviews
action:ALLOW
rules:
-from:
 -source:
   principals:["cluster.local/ns/default/sa/bookinfo-productpage"]
 to:
 -operation:
   methods:["GET"]
   paths:["/reviews/*"]
---
# 拒絕所有未授權(quán)訪問(wèn)(兜底策略)
apiVersion:security.istio.io/v1
kind:AuthorizationPolicy
metadata:
name:deny-all
namespace:default
spec:
{}

注意:AuthorizationPolicy的生效順序是DENY > ALLOW > 兜底策略。如果同時(shí)存在ALLOW和DENY策略,DENY優(yōu)先。配置錯(cuò)誤會(huì)導(dǎo)致服務(wù)間調(diào)用全部403,改之前先在測(cè)試環(huán)境驗(yàn)證。

3.2 輔助腳本

3.2.1 Istio配置診斷腳本

#!/bin/bash
# 文件名:istio-diagnose.sh
# 功能:一鍵診斷Istio常見(jiàn)問(wèn)題

echo"========== Istio診斷報(bào)告 =========="
echo"時(shí)間:$(date '+%Y-%m-%d %H:%M:%S')"
echo""

# 1. 控制平面狀態(tài)
echo"--- 控制平面狀態(tài) ---"
kubectl get pods -n istio-system -o wide
echo""

# 2. 檢查Sidecar注入狀態(tài)
echo"--- 未注入Sidecar的namespace ---"
fornsin$(kubectl get ns -o jsonpath='{.items[*].metadata.name}');do
  label=$(kubectl get ns"$ns"-o jsonpath='{.metadata.labels.istio-injection}'2>/dev/null)
 if["$label"!="enabled"];then
    pod_count=$(kubectl get pods -n"$ns"--no-headers 2>/dev/null | wc -l)
   if["$pod_count"-gt 0 ];then
     echo" $ns(pods:$pod_count, injection:${label:-disabled})"
   fi
 fi
done
echo""

# 3. 檢查配置同步狀態(tài)
echo"--- 代理同步狀態(tài) ---"
istioctl proxy-status 2>/dev/null | grep -v"SYNCED.*SYNCED.*SYNCED.*SYNCED"| grep -v"^NAME"
if[ $? -ne 0 ];then
 echo" 所有代理配置已同步"
fi
echo""

# 4. 配置分析
echo"--- 配置分析 ---"
istioctl analyze -A 2>&1
echo""

# 5. mTLS狀態(tài)
echo"--- PeerAuthentication策略 ---"
kubectl get peerauthentication -A 2>/dev/null ||echo" 無(wú)PeerAuthentication策略"
echo""

echo"========== 診斷完成 =========="

3.2.2 灰度發(fā)布流量切換腳本

#!/bin/bash
# 文件名:canary-shift.sh
# 功能:逐步將流量從v1切換到v2
# 用法:./canary-shift.sh    

SERVICE=${1:?"用法: $0    "}
NAMESPACE=${2:-"default"}
STEP=${3:-10}
INTERVAL=${4:-300}

echo"開(kāi)始灰度發(fā)布:$SERVICE(步長(zhǎng)${STEP}%, 間隔${INTERVAL}秒)"

forv2_weightin$(seq$STEP$STEP100);do
  v1_weight=$((100 - v2_weight))
 echo"[$(date '+%H:%M:%S')] 切換流量: v1=${v1_weight}% v2=${v2_weight}%"

  kubectl apply -n"$NAMESPACE"-f - <

3.3 實(shí)際應(yīng)用案例

案例一:基于用戶身份的A/B測(cè)試

場(chǎng)景描述:電商平臺(tái)要測(cè)試新的推薦算法。VIP用戶(請(qǐng)求Header中帶x-user-tier: vip)走新版本v2,普通用戶走v1。同時(shí)對(duì)v2版本設(shè)置更嚴(yán)格的超時(shí)控制,一旦新算法響應(yīng)慢就快速失敗。

實(shí)現(xiàn)代碼

# ab-test-recommendation.yaml
apiVersion:networking.istio.io/v1
kind:VirtualService
metadata:
name:recommendation-svc
namespace:production
spec:
hosts:
-recommendation-svc
http:
-match:
 -headers:
   x-user-tier:
    exact:"vip"
 route:
 -destination:
   host:recommendation-svc
   subset:v2
 timeout:2s
 retries:
  attempts:1
  perTryTimeout:1s
-route:
 -destination:
   host:recommendation-svc
   subset:v1
 timeout:5s
 retries:
  attempts:3
  perTryTimeout:2s

運(yùn)行結(jié)果

# VIP用戶請(qǐng)求(帶Header)
curl -H"x-user-tier: vip"http://recommendation-svc:8080/recommend
# 路由到v2,超時(shí)2秒

# 普通用戶請(qǐng)求
curl http://recommendation-svc:8080/recommend
# 路由到v1,超時(shí)5秒

案例二:故障注入測(cè)試——驗(yàn)證服務(wù)韌性

場(chǎng)景描述:上線前需要驗(yàn)證訂單服務(wù)在庫(kù)存服務(wù)故障時(shí)的表現(xiàn)。通過(guò)Istio故障注入模擬庫(kù)存服務(wù)50%請(qǐng)求返回503、30%請(qǐng)求延遲3秒。

實(shí)現(xiàn)代碼

# fault-injection-test.yaml
apiVersion:networking.istio.io/v1
kind:VirtualService
metadata:
name:inventory-svc
namespace:staging
spec:
hosts:
-inventory-svc
http:
-fault:
  abort:
   percentage:
    value:50.0
   httpStatus:503
  delay:
   percentage:
    value:30.0
   fixedDelay:3s
 route:
 -destination:
   host:inventory-svc
   subset:v1
# 應(yīng)用故障注入
kubectl apply -f fault-injection-test.yaml -n staging

# 發(fā)送測(cè)試請(qǐng)求觀察結(jié)果
foriin$(seq 1 20);do
 code=$(curl -s -o /dev/null -w"%{http_code},%{time_total}"
  http://inventory-svc.staging:8080/stock/check)
echo"請(qǐng)求$i: HTTP狀態(tài)=$code"
done

# 預(yù)期輸出:約50%返回503,30%延遲超過(guò)3秒,剩余正常
# 檢查訂單服務(wù)是否正確處理了這些異常(降級(jí)、重試、熔斷)

# 測(cè)試完成后刪除故障注入
kubectl delete vs inventory-svc -n staging

踩坑經(jīng)驗(yàn):故障注入只在staging環(huán)境做,千萬(wàn)別在production namespace里apply。見(jiàn)過(guò)有人把故障注入的YAML誤提交到生產(chǎn)環(huán)境的GitOps倉(cāng)庫(kù),導(dǎo)致線上50%請(qǐng)求報(bào)錯(cuò)。建議在YAML文件名和注釋中明確標(biāo)注"僅限測(cè)試環(huán)境"。

四、最佳實(shí)踐和注意事項(xiàng)

4.1 最佳實(shí)踐

4.1.1 性能優(yōu)化

Sidecar資源配置:默認(rèn)Sidecar的proxy資源requests是100m CPU和128Mi內(nèi)存。高流量服務(wù)(QPS > 5000)建議調(diào)到200m CPU和256Mi內(nèi)存,否則Envoy處理不過(guò)來(lái)會(huì)增加延遲。通過(guò)annotation給單個(gè)Pod定制:

metadata:
annotations:
 sidecar.istio.io/proxyCPU:"200m"
 sidecar.istio.io/proxyMemory:"256Mi"
 sidecar.istio.io/proxyCPULimit:"1"
 sidecar.istio.io/proxyMemoryLimit:"512Mi"

限制Sidecar的配置范圍:默認(rèn)每個(gè)Sidecar會(huì)接收整個(gè)網(wǎng)格的服務(wù)發(fā)現(xiàn)信息。集群有500個(gè)Service,每個(gè)Envoy都要維護(hù)500個(gè)Service的路由表,內(nèi)存和CPU開(kāi)銷很大。用Sidecar資源限制每個(gè)Pod只關(guān)心它需要訪問(wèn)的服務(wù):

apiVersion:networking.istio.io/v1
kind:Sidecar
metadata:
name:productpage-sidecar
namespace:default
spec:
workloadSelector:
 labels:
  app:productpage
egress:
-hosts:
 # 只關(guān)心default和istio-system命名空間的服務(wù)
 -"default/*"
 -"istio-system/*"

實(shí)測(cè)效果:500個(gè)Service的集群,配置Sidecar范圍限制后,每個(gè)Envoy內(nèi)存從120MB降到40MB。

關(guān)閉不需要的協(xié)議檢測(cè):Istio默認(rèn)會(huì)對(duì)所有端口做協(xié)議嗅探(HTTP/TCP/gRPC),這會(huì)增加延遲。明確聲明Service的協(xié)議可以跳過(guò)嗅探:

apiVersion:v1
kind:Service
metadata:
name:my-service
spec:
ports:
# 端口名以協(xié)議開(kāi)頭,Istio會(huì)跳過(guò)協(xié)議嗅探
-name:http-web
 port:8080
-name:grpc-api
 port:9090
-name:tcp-db
 port:3306

4.1.2 安全加固

全局強(qiáng)制mTLS:在istio-system命名空間創(chuàng)建STRICT模式的PeerAuthentication,所有服務(wù)間通信強(qiáng)制加密。不要用PERMISSIVE模式上生產(chǎn),PERMISSIVE允許明文通信,等于沒(méi)加密。

apiVersion:security.istio.io/v1
kind:PeerAuthentication
metadata:
name:default
namespace:istio-system
spec:
mtls:
 mode:STRICT

最小權(quán)限授權(quán)策略:先創(chuàng)建deny-all兜底策略,再逐個(gè)放開(kāi)需要的訪問(wèn)路徑。不要反過(guò)來(lái)——先全部放開(kāi)再逐個(gè)禁止,容易遺漏。

# 第一步:deny-all
apiVersion:security.istio.io/v1
kind:AuthorizationPolicy
metadata:
name:deny-all
namespace:production
spec:
{}
---
# 第二步:逐個(gè)放開(kāi)
apiVersion:security.istio.io/v1
kind:AuthorizationPolicy
metadata:
name:allow-productpage-to-reviews
namespace:production
spec:
selector:
 matchLabels:
  app:reviews
action:ALLOW
rules:
-from:
 -source:
   principals:["cluster.local/ns/production/sa/productpage"]

Gateway TLS配置:Ingress Gateway必須配置TLS終止,不要用HTTP暴露到公網(wǎng)。

apiVersion:networking.istio.io/v1
kind:Gateway
metadata:
name:production-gateway
spec:
selector:
 istio:ingressgateway
servers:
-port:
  number:443
  name:https
  protocol:HTTPS
 tls:
  mode:SIMPLE
  credentialName:production-tls-cert
 hosts:
 -"*.example.com"
-port:
  number:80
  name:http
  protocol:HTTP
 tls:
  httpsRedirect:true
 hosts:
 -"*.example.com"

4.1.3 高可用配置

istiod多副本:生產(chǎn)環(huán)境istiod至少2個(gè)副本,配合PDB。istiod掛了不影響已有的數(shù)據(jù)平面流量(Envoy會(huì)用緩存的配置繼續(xù)工作),但新的配置變更無(wú)法下發(fā),新Pod也無(wú)法注入Sidecar。

Ingress Gateway多副本+反親和:至少2個(gè)副本,分布在不同節(jié)點(diǎn)上。

spec:
components:
 ingressGateways:
 -name:istio-ingressgateway
  k8s:
   replicaCount:3
   affinity:
    podAntiAffinity:
     preferredDuringSchedulingIgnoredDuringExecution:
     -weight:100
      podAffinityTerm:
       labelSelector:
        matchLabels:
         istio:ingressgateway
       topologyKey:kubernetes.io/hostname

備份策略:所有Istio配置(VirtualService、DestinationRule、Gateway、AuthorizationPolicy等)必須納入Git版本管理。用kubectl get導(dǎo)出的YAML包含status和metadata.resourceVersion等運(yùn)行時(shí)字段,不適合直接存Git,建議維護(hù)干凈的聲明式Y(jié)AML。

4.2 注意事項(xiàng)

4.2.1 配置注意事項(xiàng)

警告:Istio配置錯(cuò)誤可能導(dǎo)致全網(wǎng)格流量中斷,以下幾點(diǎn)務(wù)必注意。

VirtualService的hosts必須和Service名匹配:hosts寫錯(cuò)了流量規(guī)則不生效,但不會(huì)報(bào)錯(cuò),排查起來(lái)很痛苦。用istioctl analyze可以檢測(cè)出這類問(wèn)題。

DestinationRule的subset必須先創(chuàng)建再引用:VirtualService引用了不存在的subset會(huì)導(dǎo)致503。先apply DestinationRule,再apply VirtualService。

holdApplicationUntilProxyStarts設(shè)為true:默認(rèn)應(yīng)用容器和Sidecar同時(shí)啟動(dòng),如果應(yīng)用啟動(dòng)比Sidecar快,應(yīng)用發(fā)出的請(qǐng)求會(huì)因?yàn)镾idecar還沒(méi)Ready而失敗。這個(gè)參數(shù)讓應(yīng)用等Sidecar Ready后再啟動(dòng)。

4.2.2 常見(jiàn)錯(cuò)誤

錯(cuò)誤現(xiàn)象 原因分析 解決方案
Pod一直1/2 Running Sidecar注入失敗或啟動(dòng)失敗 kubectl describe pod 查看istio-init和istio-proxy容器事件
服務(wù)間調(diào)用返回503 DestinationRule的subset不存在或后端Pod不健康 檢查subset標(biāo)簽是否匹配Pod標(biāo)簽,檢查Pod是否Ready
服務(wù)間調(diào)用返回403 AuthorizationPolicy拒絕了請(qǐng)求 檢查source principal和目標(biāo)服務(wù)的授權(quán)策略
Ingress Gateway返回404 VirtualService的hosts或Gateway配置不匹配 確認(rèn)Gateway的hosts和VirtualService的hosts一致
延遲增加10ms以上 Sidecar資源不足或Envoy配置過(guò)大 調(diào)大Sidecar資源,配置Sidecar范圍限制
istiod OOM重啟 集群Service數(shù)量過(guò)多,istiod內(nèi)存不夠 調(diào)大istiod內(nèi)存limits,清理無(wú)用Service

4.2.3 兼容性問(wèn)題

版本兼容:Istio每個(gè)版本只支持特定范圍的K8s版本。升級(jí)K8s前先確認(rèn)Istio是否兼容,升級(jí)Istio前先確認(rèn)K8s版本是否在支持范圍內(nèi)。Istio版本升級(jí)只支持跨一個(gè)小版本(1.20→1.21→1.22),不能跳版本升級(jí)。

平臺(tái)兼容:各云廠商的托管Istio(ASM、Anthos Service Mesh)和開(kāi)源Istio有差異,配置方式可能不同。遷移時(shí)注意API版本差異。

組件依賴:Istio的鏈路追蹤依賴應(yīng)用傳遞trace header(x-request-id、x-b3-traceid等)。如果應(yīng)用不傳遞這些header,鏈路追蹤會(huì)斷裂。這不是Istio的bug,是設(shè)計(jì)如此——Sidecar只能在單跳內(nèi)注入header,跨服務(wù)需要應(yīng)用轉(zhuǎn)發(fā)。

五、故障排查和監(jiān)控

5.1 故障排查

5.1.1 日志查看

# 查看istiod控制平面日志
kubectl logs -n istio-system -l app=istiod -f --tail=100

# 查看特定Pod的Sidecar日志
kubectl logs  -c istio-proxy -f

# 查看Ingress Gateway日志
kubectl logs -n istio-system -l app=istio-ingressgateway -f

# 查看Envoy訪問(wèn)日志(需要開(kāi)啟accessLogFile)
kubectl logs  -c istio-proxy | grep"HTTP"

# 過(guò)濾5xx錯(cuò)誤
kubectl logs  -c istio-proxy | grep'"5[0-9][0-9]"'

5.1.2 常見(jiàn)問(wèn)題排查

問(wèn)題一:Sidecar注入后應(yīng)用無(wú)法啟動(dòng)

# 查看Pod事件
kubectl describe pod 

# 查看istio-init容器日志(負(fù)責(zé)iptables規(guī)則設(shè)置)
kubectl logs  -c istio-init

# 常見(jiàn)原因:istio-init需要NET_ADMIN權(quán)限
# 如果用了PodSecurityPolicy或OPA限制了權(quán)限,需要放開(kāi)

解決方案

確認(rèn)namespace有istio-injection=enabled標(biāo)簽

確認(rèn)istiod正在運(yùn)行且webhook配置正確

檢查是否有PodSecurityPolicy阻止了istio-init的權(quán)限

問(wèn)題二:服務(wù)間調(diào)用超時(shí)或503

# 檢查目標(biāo)服務(wù)的Envoy配置
istioctl proxy-config cluster  | grep 

# 檢查路由配置
istioctl proxy-config route  --name 

# 檢查endpoint是否健康
istioctl proxy-config endpoint  | grep 
# 狀態(tài)應(yīng)該是HEALTHY,如果是UNHEALTHY說(shuō)明被熔斷了

解決方案

endpoint狀態(tài)UNHEALTHY → 檢查outlierDetection配置,可能誤觸發(fā)熔斷

沒(méi)有endpoint → 檢查Service selector是否匹配Pod標(biāo)簽

路由不存在 → 檢查VirtualService和DestinationRule配置

問(wèn)題三:mTLS握手失敗,服務(wù)間調(diào)用報(bào)"connection reset"

癥狀:服務(wù)A調(diào)用服務(wù)B返回upstream connect error or disconnect/reset before headers

排查

# 檢查兩個(gè)服務(wù)的mTLS模式是否一致
istioctl x describe pod 
istioctl x describe pod 

# 檢查PeerAuthentication策略
kubectl get peerauthentication -A

# 如果一個(gè)namespace是STRICT,另一個(gè)是PERMISSIVE,跨namespace調(diào)用會(huì)失敗

解決:統(tǒng)一所有namespace的mTLS模式,建議全局STRICT

5.1.3 調(diào)試模式

# 提高特定Pod的Envoy日志級(jí)別
istioctl proxy-configlog --level debug

# 只提高特定模塊的日志級(jí)別(減少日志量)
istioctl proxy-configlog --level connection:debug,router:debug

# 查看Envoy管理接口(端口15000)
kubectl port-forward  15000:15000
# 瀏覽器訪問(wèn) http://localhost:15000 查看Envoy dashboard

# 查看Envoy配置dump
kubectlexec -c istio-proxy -- curl -s localhost:15000/config_dump | jq .

# 恢復(fù)日志級(jí)別
istioctl proxy-configlog --level warning

5.2 性能監(jiān)控

5.2.1 關(guān)鍵指標(biāo)監(jiān)控

# 查看Istio控制平面指標(biāo)
kubectl port-forward -n istio-system svc/istiod 15014:15014
# 訪問(wèn) http://localhost:15014/metrics

# 查看網(wǎng)格整體流量
istioctl dashboard kiali

# 查看特定服務(wù)的指標(biāo)
istioctl dashboard grafana
# 打開(kāi) "Istio Service Dashboard"

5.2.2 監(jiān)控指標(biāo)說(shuō)明

指標(biāo)名稱 正常范圍 告警閾值 說(shuō)明
istio_requests_total(QPS) 視業(yè)務(wù)而定 突增200%以上 請(qǐng)求總數(shù),按response_code分組可看錯(cuò)誤率
istio_request_duration_milliseconds(P99延遲) < 100ms > 500ms 包含Sidecar處理時(shí)間,比應(yīng)用自身延遲高2-5ms
pilot_xds_pushes_total < 100/min > 1000/min istiod配置推送次數(shù),過(guò)高說(shuō)明配置變更頻繁
pilot_proxy_convergence_time < 1s > 10s 配置從istiod推送到Envoy的時(shí)間
envoy_server_memory_allocated < 200MB/pod > 500MB/pod Envoy內(nèi)存使用,過(guò)高需要配置Sidecar范圍限制
istiod CPU使用率 < 50% > 80% istiod CPU過(guò)高說(shuō)明集群規(guī)模超出單實(shí)例處理能力

5.2.3 監(jiān)控告警配置

# Prometheus告警規(guī)則:istio-alerts.yaml
apiVersion:monitoring.coreos.com/v1
kind:PrometheusRule
metadata:
name:istio-alerts
namespace:monitoring
spec:
groups:
-name:istio.rules
 rules:
 # 服務(wù)5xx錯(cuò)誤率超過(guò)5%
 -alert:IstioHighErrorRate
  expr:|
    sum(rate(istio_requests_total{response_code=~"5.*"}[5m])) by (destination_service_name, namespace)
    /
    sum(rate(istio_requests_total[5m])) by (destination_service_name, namespace)
    > 0.05
  for:5m
  labels:
   severity:critical
  annotations:
   summary:"服務(wù){(diào){ $labels.destination_service_name }}5xx錯(cuò)誤率超過(guò)5%"

 # P99延遲超過(guò)1秒
 -alert:IstioHighLatency
  expr:|
    histogram_quantile(0.99,
     sum(rate(istio_request_duration_milliseconds_bucket[5m])) by (le, destination_service_name, namespace)
    ) > 1000
  for:5m
  labels:
   severity:warning
  annotations:
   summary:"服務(wù){(diào){ $labels.destination_service_name }}P99延遲超過(guò)1秒"

 # istiod不可用
 -alert:IstiodDown
  expr:|
    absent(up{job="istiod"} == 1)
  for:2m
  labels:
   severity:critical
  annotations:
   summary:"istiod控制平面不可用,新配置無(wú)法下發(fā)"

 # Envoy配置推送延遲過(guò)高
 -alert:IstioConfigPushDelay
  expr:|
    histogram_quantile(0.99,
     sum(rate(pilot_proxy_convergence_time_bucket[5m])) by (le)
    ) > 30
  for:5m
  labels:
   severity:warning
  annotations:
   summary:"Istio配置推送P99延遲超過(guò)30秒"

5.3 備份與恢復(fù)

5.3.1 備份策略

#!/bin/bash
# 文件名:backup-istio-config.sh
# 功能:備份所有Istio CRD資源

BACKUP_DIR="/opt/istio/backup/$(date +%Y%m%d-%H%M%S)"
mkdir -p"$BACKUP_DIR"

# 備份所有Istio網(wǎng)絡(luò)配置
forresourceinvirtualservices destinationrules gateways serviceentries sidecars envoyfilters;do
 echo"備份$resource..."
  kubectl get"$resource"-A -o yaml >"$BACKUP_DIR/$resource.yaml"2>/dev/null
done

# 備份安全配置
forresourceinpeerauthentications requestauthentications authorizationpolicies;do
 echo"備份$resource..."
  kubectl get"$resource"-A -o yaml >"$BACKUP_DIR/$resource.yaml"2>/dev/null
done

# 備份IstioOperator配置
kubectl get istiooperator -n istio-system -o yaml >"$BACKUP_DIR/istiooperator.yaml"2>/dev/null

echo"備份完成:$BACKUP_DIR"
ls -la"$BACKUP_DIR"

5.3.2 恢復(fù)流程

停止變更:通知團(tuán)隊(duì)暫停所有Istio配置變更

恢復(fù)配置:kubectl apply -f /opt/istio/backup/20260208-100000/

驗(yàn)證配置同步:istioctl proxy-status確認(rèn)所有代理SYNCED

驗(yàn)證流量:檢查Kiali服務(wù)拓?fù)鋱D,確認(rèn)流量正常

六、總結(jié)

6.1 技術(shù)要點(diǎn)回顧

Sidecar模式:Envoy代理攔截所有進(jìn)出流量,業(yè)務(wù)代碼零侵入。額外開(kāi)銷約每Pod 50-100MB內(nèi)存、2-5ms延遲

流量管理三件套:Gateway(入口)+ VirtualService(路由規(guī)則)+ DestinationRule(目標(biāo)策略),掌握這三個(gè)資源就能覆蓋90%的流量管理場(chǎng)景

安全零信任:全局STRICT mTLS + deny-all兜底 + 逐個(gè)放開(kāi)AuthorizationPolicy,這是生產(chǎn)環(huán)境的標(biāo)準(zhǔn)安全姿勢(shì)

可觀測(cè)性免費(fèi)午餐:Sidecar自動(dòng)生成請(qǐng)求級(jí)指標(biāo)和訪問(wèn)日志,不需要業(yè)務(wù)代碼埋點(diǎn)。但鏈路追蹤需要應(yīng)用轉(zhuǎn)發(fā)trace header

6.2 進(jìn)階學(xué)習(xí)方向

Istio Ambient模式:無(wú)Sidecar的服務(wù)網(wǎng)格方案,用ztunnel(L4)和waypoint proxy(L7)替代Sidecar,資源開(kāi)銷更低

文檔:https://istio.io/latest/docs/ambient/

實(shí)踐建議:Ambient模式在Istio 1.22已GA,新集群可以直接用Ambient模式

EnvoyFilter高級(jí)定制:當(dāng)VirtualService和DestinationRule無(wú)法滿足需求時(shí),用EnvoyFilter直接修改Envoy配置

實(shí)踐建議:EnvoyFilter是最后手段,維護(hù)成本高,Istio升級(jí)時(shí)容易出兼容性問(wèn)題

多集群服務(wù)網(wǎng)格:跨集群的服務(wù)發(fā)現(xiàn)和流量管理

文檔:https://istio.io/latest/docs/setup/install/multicluster/

實(shí)踐建議:先搞定單集群,多集群的網(wǎng)絡(luò)打通和證書管理復(fù)雜度高很多

6.3 參考資料

Istio官方文檔- 最權(quán)威的參考

Envoy官方文檔- 理解數(shù)據(jù)平面的底層原理

Istio GitHub- 源碼和Issue跟蹤

Kiali官方文檔- 服務(wù)網(wǎng)格可視化

附錄

A. 命令速查表

# 安裝和管理
istioctl install --setprofile=default -y  # 安裝Istio
istioctl verify-install           # 驗(yàn)證安裝
istioctl version               # 查看版本
istioctl upgrade               # 升級(jí)Istio
istioctl uninstall --purge          # 完全卸載

# Sidecar注入
kubectl label ns  istio-injection=enabled # 開(kāi)啟自動(dòng)注入
kubectl label ns  istio-injection-     # 關(guān)閉自動(dòng)注入
istioctl kube-inject -f deployment.yaml | kubectl apply -f - # 手動(dòng)注入

# 診斷和調(diào)試
istioctl analyze -A             # 分析所有namespace的配置問(wèn)題
istioctl proxy-status            # 查看所有代理同步狀態(tài)
istioctl proxy-config cluster      # 查看Pod的集群配置
istioctl proxy-config route       # 查看Pod的路由配置
istioctl proxy-config endpoint      # 查看Pod的端點(diǎn)配置
istioctl proxy-config listener      # 查看Pod的監(jiān)聽(tīng)器配置
istioctl proxy-configlog --level debug# 開(kāi)啟調(diào)試日志
istioctl x describe pod         # 查看Pod的Istio配置摘要

# Dashboard
istioctl dashboard kiali           # 打開(kāi)Kiali
istioctl dashboard grafana          # 打開(kāi)Grafana
istioctl dashboard jaeger          # 打開(kāi)Jaeger
istioctl dashboard prometheus        # 打開(kāi)Prometheus

B. 配置參數(shù)詳解

VirtualService關(guān)鍵參數(shù)

參數(shù) 說(shuō)明
hosts 路由規(guī)則應(yīng)用的目標(biāo)主機(jī),可以是K8s Service名或外部域名
gateways 關(guān)聯(lián)的Gateway,不指定則只對(duì)網(wǎng)格內(nèi)部流量生效
http[].match 匹配條件:uri、headers、queryParams、method等
http[].route[].weight 流量權(quán)重,所有route的weight之和必須為100
http[].timeout 請(qǐng)求超時(shí)時(shí)間
http[].retries 重試策略:attempts(次數(shù))、perTryTimeout(單次超時(shí))、retryOn(觸發(fā)條件)
http[].fault 故障注入:delay(延遲)、abort(中斷)

DestinationRule關(guān)鍵參數(shù)

參數(shù) 說(shuō)明
host 目標(biāo)服務(wù)名
trafficPolicy.connectionPool 連接池配置:maxConnections、http1MaxPendingRequests等
trafficPolicy.outlierDetection 熔斷配置:consecutive5xxErrors、interval、baseEjectionTime
trafficPolicy.loadBalancer 負(fù)載均衡算法:ROUND_ROBIN、LEAST_REQUEST、RANDOM、PASSTHROUGH
subsets 服務(wù)子集定義,通過(guò)labels區(qū)分不同版本

C. 術(shù)語(yǔ)表

術(shù)語(yǔ) 英文 解釋
服務(wù)網(wǎng)格 Service Mesh 處理服務(wù)間通信的基礎(chǔ)設(shè)施層,通常以Sidecar代理形式實(shí)現(xiàn)
數(shù)據(jù)平面 Data Plane 由Envoy Sidecar代理組成,負(fù)責(zé)實(shí)際的流量轉(zhuǎn)發(fā)和策略執(zhí)行
控制平面 Control Plane istiod組件,負(fù)責(zé)配置管理、證書簽發(fā)、服務(wù)發(fā)現(xiàn)
金絲雀發(fā)布 Canary Release 將少量流量(如5%)導(dǎo)向新版本,驗(yàn)證無(wú)問(wèn)題后逐步增加比例
熔斷 Circuit Breaking 當(dāng)目標(biāo)服務(wù)異常時(shí)自動(dòng)停止向其發(fā)送請(qǐng)求,防止級(jí)聯(lián)故障
異常檢測(cè) Outlier Detection 通過(guò)監(jiān)控錯(cuò)誤率自動(dòng)識(shí)別并隔離不健康的服務(wù)實(shí)例
雙向TLS Mutual TLS (mTLS) 通信雙方互相驗(yàn)證證書,確保身份可信且通信加密
流量鏡像 Traffic Mirroring 將生產(chǎn)流量的副本發(fā)送到測(cè)試環(huán)境,不影響生產(chǎn)響應(yīng)

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • JAVA
    +關(guān)注

    關(guān)注

    20

    文章

    3001

    瀏覽量

    116412
  • 網(wǎng)格
    +關(guān)注

    關(guān)注

    0

    文章

    151

    瀏覽量

    16619
  • python
    +關(guān)注

    關(guān)注

    57

    文章

    4876

    瀏覽量

    90019

原文標(biāo)題:一文入門 Istio:服務(wù)網(wǎng)格核心原理與部署實(shí)戰(zhàn)

文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    rancher2試玩安裝istio和bookinfo示例

    rancher2試玩istio,安裝部署官方示例bookinfo體驗(yàn)
    發(fā)表于 03-14 12:29

    服務(wù)網(wǎng)關(guān)gateway的相關(guān)資料推薦

    目錄微服務(wù)網(wǎng)關(guān) gateway 概述[路由器網(wǎng)關(guān) Zuul 概述]嵌入式 Zuul 反向代理微服務(wù)網(wǎng)關(guān) gateway 概述1、想象一下一個(gè)購(gòu)物應(yīng)用程序的產(chǎn)品詳情頁(yè)面展示了指定商品的信息:2、若是
    發(fā)表于 12-23 08:19

    如何在Arm上利用Istio搭建一個(gè)基于Kubernetes的Service Mesh平臺(tái)

    ,另一方面,又通過(guò)Service Function Chain將各個(gè)服務(wù)有機(jī)的連接在一起,從而組合實(shí)現(xiàn)復(fù)雜的功能。在這篇文章中,我們將介紹如何在Arm平臺(tái)上,利用Istio,搭建一個(gè)
    發(fā)表于 03-30 10:59

    Service Mesh服務(wù)網(wǎng)格新生代

    )? Service Mesh是專用的基礎(chǔ)設(shè)施層,輕量級(jí)高性能網(wǎng)絡(luò)代理。提供安全的、快速的、可靠地服務(wù)間通訊,與實(shí)際應(yīng)用部署一起,但對(duì)應(yīng)用透明。 為了幫助理解, 下圖展示了服務(wù)網(wǎng)格的典型邊車
    發(fā)表于 09-27 11:15 ?0次下載
    Service Mesh<b class='flag-5'>服務(wù)網(wǎng)格</b>新生代

    華為云國(guó)內(nèi)首發(fā)Istio服務(wù)網(wǎng)格

    華為云國(guó)內(nèi)首家推出了Istio服務(wù)網(wǎng)格產(chǎn)品,該產(chǎn)品與CCE容器引擎深度整合,提供非侵入、智能流量治理的應(yīng)用全生命周期管理方案,增強(qiáng)了華為云容器服務(wù)全棧能力。 華為EBG中國(guó)區(qū)行業(yè)云拓展部部長(zhǎng)胡維琦做
    的頭像 發(fā)表于 09-08 09:36 ?4372次閱讀

    這幾個(gè)要素將幫助DevOps團(tuán)隊(duì)確定適合其特定情況的服務(wù)網(wǎng)格

    服務(wù)網(wǎng)格是近年來(lái)火熱的技術(shù)之一,并且格局在不斷變化中。可選擇的服務(wù)網(wǎng)格選項(xiàng)也不少。但總要根據(jù)自己的需求來(lái)進(jìn)行選擇,本文會(huì)提到一些要素,來(lái)幫助DevOps團(tuán)隊(duì)確定最適合其特定情況的服務(wù)網(wǎng)格
    的頭像 發(fā)表于 08-26 15:20 ?2401次閱讀
    這幾個(gè)要素將幫助DevOps團(tuán)隊(duì)確定適合其特定情況的<b class='flag-5'>服務(wù)網(wǎng)格</b>

    9種主流的用以支撐微服務(wù)開(kāi)發(fā)的服務(wù)網(wǎng)格框架及應(yīng)用場(chǎng)景

    哪種服務(wù)網(wǎng)格最適合你的企業(yè)?近年來(lái),Kubernetes服務(wù)網(wǎng)格框架數(shù)量增加迅速,使得這成為一個(gè)棘手的問(wèn)題。
    的頭像 發(fā)表于 10-21 16:01 ?3937次閱讀

    服務(wù)網(wǎng)格對(duì)數(shù)據(jù)中心網(wǎng)絡(luò)的特點(diǎn)和重要性

    服務(wù)類型的應(yīng)用程序依靠快速,可靠的網(wǎng)絡(luò)基礎(chǔ)結(jié)構(gòu)來(lái)快速可靠地做出響應(yīng),并且服務(wù)網(wǎng)格可以成為強(qiáng)大的推動(dòng)者。
    的頭像 發(fā)表于 11-01 11:51 ?2470次閱讀

    Spring Cloud Gateway服務(wù)網(wǎng)關(guān)的部署與使用詳細(xì)教程

    一、為什么需要服務(wù)網(wǎng)關(guān): 1、什么是服務(wù)網(wǎng)關(guān): 2、服務(wù)網(wǎng)關(guān)的基本功能: 3、流量網(wǎng)關(guān)與服務(wù)網(wǎng)關(guān)的區(qū)別: 二、服務(wù)網(wǎng)關(guān)的
    的頭像 發(fā)表于 10-11 17:46 ?3078次閱讀

    基于Traefik自研的微服務(wù)網(wǎng)關(guān)

    數(shù)據(jù)平面主要功能是接入用戶的HTTP請(qǐng)求和微服務(wù)被拆分后的聚合。使用微服務(wù)網(wǎng)關(guān)統(tǒng)一對(duì)外暴露后端服務(wù)的API和契約,路由和過(guò)濾功能正是網(wǎng)關(guān)的核心能力模塊。另外,微
    的頭像 發(fā)表于 04-16 11:08 ?4277次閱讀

    既然有了Kubernetes,為什么還需要Istio

    Envoy 引入了 xDS 協(xié)議,該協(xié)議受到各種開(kāi)源軟件的支持,例如Istio、MOSN等。Envoy 將 xDS 貢獻(xiàn)給服務(wù)網(wǎng)格或云原生基礎(chǔ)設(shè)施。Envoy 本質(zhì)上是一個(gè)現(xiàn)代版本的代理,可以通過(guò)
    的頭像 發(fā)表于 12-11 17:28 ?1660次閱讀
    既然有了Kubernetes,為什么還需要<b class='flag-5'>Istio</b>?

    服務(wù)網(wǎng)格DPU卸載解決方案

    服務(wù)網(wǎng)格(Service Mesh)是微服務(wù)架構(gòu)中的一種重要技術(shù),它主要處理服務(wù)之間的通信,為服務(wù)間的信息交換提供更安全、更快速且更可靠的基礎(chǔ)設(shè)施層。
    的頭像 發(fā)表于 09-20 16:25 ?1364次閱讀
    <b class='flag-5'>服務(wù)網(wǎng)格</b>DPU卸載解決方案

    云存儲(chǔ)部署k8s實(shí)用工具集合,效率翻倍!

    容器化應(yīng)用。CI/CD工具如Jenkins和GitLabCI/CD實(shí)現(xiàn)自動(dòng)化構(gòu)建、測(cè)試和部署。監(jiān)控和日志工具如Prometheus和ELKStack提供實(shí)時(shí)監(jiān)控和性能分析。服務(wù)網(wǎng)格工具如Istio和Linkerd增強(qiáng)
    的頭像 發(fā)表于 02-08 15:41 ?813次閱讀

    華納云VPS容器服務(wù)網(wǎng)格流量管理:實(shí)現(xiàn)微服務(wù)高效路由

    在云計(jì)算和微服務(wù)架構(gòu)日益普及的今天,華納云香港VPS憑借其優(yōu)越的地緣優(yōu)勢(shì)和網(wǎng)絡(luò)自由,成為眾多企業(yè)部署容器化應(yīng)用的熱門選擇。復(fù)雜的微服務(wù)架構(gòu)帶來(lái)了流量管理的巨大挑戰(zhàn)。本文將深入探討如何利用容器
    的頭像 發(fā)表于 10-16 17:09 ?527次閱讀

    Istio服務(wù)網(wǎng)格生產(chǎn)環(huán)境性能調(diào)優(yōu)的最佳實(shí)踐

    隨著微服務(wù)架構(gòu)的普及,服務(wù)間通信的復(fù)雜度呈指數(shù)級(jí)增長(zhǎng)。傳統(tǒng)的應(yīng)用層負(fù)載均衡和服務(wù)發(fā)現(xiàn)方案已經(jīng)無(wú)法滿足現(xiàn)代云原生應(yīng)用的需求。Istio作為目前最成熟的
    的頭像 發(fā)表于 01-20 15:40 ?203次閱讀