最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Istio?訪問外部服務(wù)流量控制最常用的5個技巧示例

 更新時間:2023年06月09日 08:33:37   作者:萬貓學(xué)社  
這篇文章主要介紹了Istio訪問外部服務(wù)流量控制最常用5個技巧示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

環(huán)境準備

5 個 Istio 訪問外部服務(wù)的流量控制常用例子,強烈建議收藏起來,以備不時之需。

部署 sleep 服務(wù),作為發(fā)送請求的測試源:

kubectl apply -f samples/sleep/sleep.yaml

在 Istio 外部,使用 Nginx 搭建 duckling 服務(wù)的v1和v2兩個版本,訪問時顯示簡單的文本:

> curl -s http://192.168.1.118/
This is the v1 version of duckling.
> curl -s http://192.168.1.119/
This is the v2 version of duckling.

訪問外部服務(wù)

執(zhí)行如下命名訪問外部服務(wù) httpbin.org :

export SLEEP_POD=$(kubectl get pods -l app=sleep -o 'jsonpath={.items[0].metadata.name}')
kubectl exec "$SLEEP_POD" -c sleep -- curl -s http://httpbin.org/headers

返回結(jié)果如下:

{
  "headers": {
    "Accept": "*/*", 
    "Host": "httpbin.org", 
    "User-Agent": "curl/7.81.0-DEV", 
    "X-Amzn-Trace-Id": "Root=1-62bbfa10-3237e3b9662c65ae005148ab", 
    "X-B3-Sampled": "0", 
    "X-B3-Spanid": "9e650093bf7ae862", 
    "X-B3-Traceid": "1da46d7fafa5d71c9e650093bf7ae862", 
    "X-Envoy-Attempt-Count": "1", 
    "X-Envoy-Peer-Metadata": "......", 
    "X-Envoy-Peer-Metadata-Id": "sidecar~......"
  }
}

此時的方法,沒有通過Service Entry,沒有 Istio 的流量監(jiān)控和控制特性。創(chuàng)建 Service Entry :

kubectl apply -f - <<EOF
apiVersion: networking.istio.io/v1alpha3
kind: ServiceEntry
metadata:
  name: httpbin-ext
spec:
  hosts:
  - httpbin.org
  ports:
  - number: 80
    name: http
    protocol: HTTP
  resolution: DNS
  location: MESH_EXTERNAL
EOF

再此次訪問,返回結(jié)果如下:

{
  "headers": {
    "Accept": "*/*", 
    "Host": "httpbin.org", 
    "User-Agent": "curl/7.81.0-DEV", 
    "X-Amzn-Trace-Id": "Root=1-62bbfbd6-254b05344b3cde2c0c41b3b8", 
    "X-B3-Sampled": "0", 
    "X-B3-Spanid": "307c0b106c8b262e", 
    "X-B3-Traceid": "f684a50776c088ac307c0b106c8b262e", 
    "X-Envoy-Attempt-Count": "1", 
    "X-Envoy-Decorator-Operation": "httpbin.org:80/*", 
    "X-Envoy-Peer-Metadata": "......", 
    "X-Envoy-Peer-Metadata-Id": "sidecar~......"
  }
}

可以發(fā)現(xiàn)由 Istio 邊車添加的請求頭:X-Envoy-Decorator-Operation。

設(shè)置請求超時

向外部服務(wù) httpbin.org 的 /delay 發(fā)出請求:

export SLEEP_POD=$(kubectl get pods -l app=sleep -o 'jsonpath={.items[0].metadata.name}')
kubectl exec "$SLEEP_POD" -c sleep -- time curl -o /dev/null -sS -w "%{http_code}\n" http://httpbin.org/delay/5

返回結(jié)果如下:

200
real    0m 5.69s
user    0m 0.00s
sys     0m 0.00s

請求大約在 5 秒后返回 200 (OK)。

創(chuàng)建虛擬服務(wù),訪問外部服務(wù) httpbin.org 時, 請求超時設(shè)置為 3 秒:

kubectl apply -f - <<EOF
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: httpbin-ext
spec:
  hosts:
    - httpbin.org
  http:
  - timeout: 3s
    route:
      - destination:
          host: httpbin.org
        weight: 100
EOF

再此次訪問,返回結(jié)果如下:

504
real    0m 3.01s
user    0m 0.00s
sys     0m 0.00s

可以看出,在 3 秒后出現(xiàn)了 504 (Gateway Timeout)。 Istio 在 3 秒后切斷了響應(yīng)時間為 5 秒的 httpbin.org 服務(wù)。

注入 HTTP 延遲故障

向外部服務(wù) httpbin.org 的 /get 發(fā)出請求:

export SLEEP_POD=$(kubectl get pods  -l app=sleep -o 'jsonpath={.items[0].metadata.name}')
kubectl exec "$SLEEP_POD" -c sleep -- time curl -o /dev/null -sS -w "%{http_code}\n" http://httpbin.org/get

返回結(jié)果如下:

200
real  0m 0.45s
user  0m 0.00s
sys 0m 0.00s

請求不到 1 秒就返回 200 (OK)。

創(chuàng)建虛擬服務(wù),訪問外部服務(wù) httpbin.org 時, 注入一個 3 秒的延遲:

kubectl apply -f - <<EOF
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: httpbin-ext
spec:
  hosts:
    - httpbin.org
  http:
    - fault:
        delay:
          fixedDelay: 3s
          percentage:
            value: 100
      route:
        - destination:
            host: httpbin.org
EOF

再此次訪問 httpbin.org 的 /get ,返回結(jié)果如下:

200
real  0m 3.43s
user  0m 0.00s
sys 0m 0.00s

可以看出,在 3 秒后出現(xiàn)了 200 (OK)。

流量轉(zhuǎn)移

訪問duckling服務(wù)時,所有流量都路由到v1版本,具體配置如下:

kubectl apply -f - <<EOF
apiVersion: networking.istio.io/v1alpha3
kind: ServiceEntry
metadata:
  name: duckling
spec:
  hosts:
  - duckling.com
  ports:
  - number: 80
    name: http
    protocol: HTTP
  location: MESH_EXTERNAL
  resolution: STATIC
  endpoints:
  - address: 172.24.29.118
    ports:
      http: 80
    labels:
      version: v1
  - address: 172.24.29.119
    ports:
      http: 80
    labels:
      version: v2
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: duckling
spec:
  hosts:
  - duckling.com
  http:
  - route:
    - destination:
        host: duckling.com
        subset: v1
---
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: duckling
spec:
  host: duckling.com
  subsets:
    - labels:
        version: v1
      name: v1
    - labels:
        version: v2
      name: v2
EOF

執(zhí)行如下命名訪問外部服務(wù) duckling.com :

export SLEEP_POD=$(kubectl get pods -l app=sleep -o 'jsonpath={.items[0].metadata.name}')
kubectl exec "$SLEEP_POD" -c sleep -- curl -s http://duckling.com/

多次訪問后,返回結(jié)果一直是:This is the v1 version of duckling.

訪問duckling服務(wù)時,把50%流量轉(zhuǎn)移到v2版本,具體配置如下:

kubectl apply -f - <<EOF
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: duckling
spec:
  hosts:
  - duckling.com
  http:
  - route:
    - destination:
        host: duckling.com
        subset: v1
      weight: 50
    - destination:
        host: duckling.com
        subset: v2
      weight: 50
EOF

多次訪問外部服務(wù) duckling.com ,有時返回This is the v1 version of duckling.,有時返回This is the v2 version of duckling.。

訪問duckling服務(wù)時,所有流量都路由到v2版本,具體配置如下:

kubectl apply -f - <<EOF
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: duckling
spec:
  hosts:
  - duckling.com
  http:
  - route:
    - destination:
        host: duckling.com
        subset: v2
EOF

多次訪問外部服務(wù) duckling.com ,一直返回This is the v2 version of duckling.。

基于請求頭的路由

請求頭end-user為OneMore的所有流量都路由到v2版本,其他流量都路由到v1版本,具體配置如下:

kubectl apply -f - <<EOF
apiVersion: networking.istio.io/v1alpha3
kind: ServiceEntry
metadata:
  name: duckling
spec:
  hosts:
  - duckling.com
  ports:
  - number: 80
    name: http
    protocol: HTTP
  location: MESH_EXTERNAL
  resolution: STATIC
  endpoints:
  - address: 172.24.29.118
    ports:
      http: 80
    labels:
      version: v1
  - address: 172.24.29.119
    ports:
      http: 80
    labels:
      version: v2
---
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: duckling
spec:
  hosts:
  - duckling.com
  http:
  - match:
    - headers:
        end-user:
          exact: OneMore
    route:
    - destination:
        host: duckling.com
        subset: v2
  - route:
    - destination:
        host: duckling.com
        subset: v1
---
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: duckling
spec:
  host: duckling.com
  subsets:
    - labels:
        version: v1
      name: v1
    - labels:
        version: v2
      name: v2
EOF

執(zhí)行如下命名訪問外部服務(wù) duckling.com :

export SLEEP_POD=$(kubectl get pods -l app=sleep -o 'jsonpath={.items[0].metadata.name}')
kubectl exec "$SLEEP_POD" -c sleep -- curl -s http://duckling.com/

多次訪問的返回結(jié)果一直是:This is the v1 version of duckling.

設(shè)置請求頭end-user為OneMore,訪問外部服務(wù) duckling.com :

kubectl exec "$SLEEP_POD" -c sleep -- curl -H "end-user:OneMore" -s http://duckling.com/

多次訪問的返回結(jié)果一直是:This is the v2 version of duckling.

以上就是5個 Istio 訪問外部服務(wù)流量控制最常用的例子的詳細內(nèi)容,更多關(guān)于Istio 訪問外部服務(wù)流量控制的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Matlab實現(xiàn)新冠病毒傳播模擬效果

    Matlab實現(xiàn)新冠病毒傳播模擬效果

    2022年4月11日報道,日本NEC公司8日宣布已開始利用最尖端的人工智能(AI)技術(shù)開發(fā)新冠疫苗,本文給大家?guī)砹薓atlab實現(xiàn)新冠病毒傳播模擬效果,需要的朋友可以參考下
    2022-04-04
  • Git查看已刪除文件歷史記錄的方法

    Git查看已刪除文件歷史記錄的方法

    文件不見了,第一反應(yīng)是翻 commit 記錄,翻了半天沒找到,即使翻到了也很費功夫——其實 git log 就可以解決,所以本文給大家介紹了Git查看已刪除文件歷史記錄的方法,需要的朋友可以參考下
    2026-04-04
  • sublime text 添加到鼠標右鍵功能

    sublime text 添加到鼠標右鍵功能

    這篇文章主要介紹了sublime text 添加到鼠標右鍵功能,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-08-08
  • 詳解git使用小結(jié)(本地分支與遠程分支、git命令)

    詳解git使用小結(jié)(本地分支與遠程分支、git命令)

    這篇文章主要介紹了git使用小結(jié)(本地分支與遠程分支、git命令),本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-08-08
  • GitHub倉庫權(quán)限更改方式

    GitHub倉庫權(quán)限更改方式

    文章指導(dǎo)如何在GitHub上設(shè)置倉庫權(quán)限,通過網(wǎng)站、CLI、API或移動端App切換公開/私有狀態(tài),并強調(diào)隱私保護需注意敏感信息檢查、定期權(quán)限審計及分支保護規(guī)則,確保代碼安全與合規(guī)
    2025-09-09
  • 使用cache加快編譯速度的命令詳解

    使用cache加快編譯速度的命令詳解

    這篇文章主要介紹了使用cache加快編譯速度的方法,主要講解在Ubuntu 安裝ccache,使用libzmq測試ccache的相關(guān)知識,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07
  • VsCode的jsconfig配置文件說明詳解

    VsCode的jsconfig配置文件說明詳解

    這篇文章主要介紹了VsCode的jsconfig配置文件說明詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • 如何解決vscode中ESLint和prettier沖突問題

    如何解決vscode中ESLint和prettier沖突問題

    這篇文章主要給大家介紹了關(guān)于如何解決vscode中ESLint和prettier沖突問題的相關(guān)資料,ESLint和Prettier之間可能會發(fā)生沖突,因為它們都是用于代碼規(guī)范化的工具,但它們的規(guī)則和格式化方式可能不同,需要的朋友可以參考下
    2023-11-11
  • 使用Git Hook技術(shù)定義和校驗代碼提交模板方式

    使用Git Hook技術(shù)定義和校驗代碼提交模板方式

    這篇文章主要介紹了使用Git Hook技術(shù)定義和校驗代碼提交模板方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • Wireshark零基礎(chǔ)使用超詳細教程

    Wireshark零基礎(chǔ)使用超詳細教程

    Wireshark是應(yīng)用最普遍的一款開源抓包軟件,常用來檢測收集成績、攻打溯源、或許剖析底層通訊機制,本文給大家講解Wireshark零基礎(chǔ)使用超詳細教程,感興趣的朋友一起看看吧
    2023-08-08

最新評論

旺苍县| 秦安县| 乌鲁木齐县| 岳普湖县| 杂多县| 思茅市| 旅游| 乌恰县| 本溪市| 鹰潭市| 盐城市| 常熟市| 凉城县| 哈尔滨市| 西充县| 行唐县| 无锡市| 清流县| 宁化县| 盐边县| 湖口县| 马鞍山市| 固阳县| 武定县| 张家港市| 喀喇| 准格尔旗| 水富县| 舟山市| 宿松县| 南漳县| 麦盖提县| 威宁| 东丽区| 廉江市| 石泉县| 绥芬河市| 寻乌县| 吕梁市| 桦南县| 漯河市|