备考ICA----Istio实验8---请求超时 Request Timeouts 实验

备考ICA----Istio实验8---请求超时 Request Timeouts 实验

1. 重置bookinfo环境

bash 复制代码
kubectl delete all --all --now
kubectl delete dr --all
kubectl delete vs --all
kubectl delete gw --all
kubectl apply -f istio/samples/bookinfo/platform/kube/bookinfo.yaml
kubectl apply -f istio/samples/bookinfo/networking/bookinfo-gateway.yaml

将环境恢复到刷新随机到3个不同版本的reviews上

v1

v2

v3

流量随机分配到3个版本

2. 通过subnet进行流量调度

2.1 给3个版本都打上subnet子集标签

istio/samples/bookinfo/networking

/destination-rule-all.yam

yaml 复制代码
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: productpage
spec:
  host: productpage
  subsets:
  - name: v1
    labels:
      version: v1
---
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: reviews
spec:
  host: reviews
  subsets:
  - name: v1
    labels:
      version: v1
  - name: v2
    labels:
      version: v2
  - name: v3
    labels:
      version: v3
---
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: ratings
spec:
  host: ratings
  subsets:
  - name: v1
    labels:
      version: v1
  - name: v2
    labels:
      version: v2
  - name: v2-mysql
    labels:
      version: v2-mysql
  - name: v2-mysql-vm
    labels:
      version: v2-mysql-vm
---
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: details
spec:
  host: details
  subsets:
  - name: v1
    labels:
      version: v1
  - name: v2
    labels:
      version: v2

部署使它生效

bash 复制代码
kubectl apply -f istio/samples/bookinfo/networking
/destination-rule-all.yam

此时任然是随机在3个版本上调度

2.2 通过subnet将所有流量调度到v1

bash 复制代码
kubectl apply -f istio/samples/bookinfo/networking/virtual-service-all-v1.yaml

2.3 将所有流量调度给v2并加入2秒延迟

2.3.1 所有流量调度到v2

timeout/timeout-vs-reviews.yaml

yaml 复制代码
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: reviews
spec:
  hosts:
  - reviews
  http:
  - route:
    - destination:
        host: reviews
        subset: v2

部署yaml

bash 复制代码
kubectl apply -f timeout/timeout-vs-reviews.yaml

此时不管如何刷新都是到v2版本

2.3.2 对 ratings 服务的调用添加 2 秒延迟 ratings

timeout/timeout-vs-ratings.yaml

yaml 复制代码
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: ratings
spec:
  hosts:
  - ratings
  http:
  - fault:
      delay:
        percent: 100
        fixedDelay: 2s
    route:
    - destination:
        host: ratings
        subset: v1

部署生效

bash 复制代码
kubectl apply -f timeout/timeout-vs-ratings.yaml

部署后v2任然能被正确访问,但会有2s的延迟

2.3.3 将reviews的超时时间改为0.5s

timeout/timeout-vs-reviews-05.yaml

yaml 复制代码
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: reviews
spec:
  hosts:
  - reviews
  http:
  - route:
    - destination:
        host: reviews
        subset: v2
    timeout: 0.5s

部署生效

bash 复制代码
kubectl apply -f timeout/timeout-vs-reviews-05.yaml

由于reviews的超时时间为0.5s,当遇到rating 2秒等待,在1次超时1次重试后就出现以下报错: Sorry, product reviews are currently unavailable for this book.

2.3.4 将reviews的超时时间设置为2.5秒

timeout/timeout-vs-reviews-25.yaml

yaml 复制代码
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: reviews
spec:
  hosts:
  - reviews
  http:
  - route:
    - destination:
        host: reviews
        subset: v2
    timeout: 2.5s

配置生效

bash 复制代码
kubectl apply -f timeout/timeout-vs-reviews-25.yaml

只要把timeout调到2以上即可2秒延迟,浏览v2版本

reviews如果timeout值小于等于rating的延迟,则无法正常访问到reviews内容.

至此,请求超时 Request Timeouts 实验

相关推荐
会飞的小蛮猪1 小时前
K8s-1.29.2二进制安装-第一章
云原生·容器·kubernetes
平行云6 小时前
实时云渲染支持在网页上运行UE5开发的3A大作Lyra项目
unity·云原生·ue5·webgl·虚拟现实·实时云渲染·像素流送
阿里云云原生6 小时前
AI 原生落地成果获认可,阿里云云原生多项案例入选信通院「AI 云」典型示范
云原生
阿里云云原生7 小时前
阿里云可观测 2025 年 11 月产品动态
阿里云·云原生·云计算·可观测
阿里云云原生11 小时前
LoongSuite:解决 WebSocket 全链路可观测性难题,赋能 AI 应用的实时链路追踪
人工智能·websocket·网络协议·阿里云·云原生·可观测
眠りたいです11 小时前
基于脚手架微服务的视频点播系统-服务端开发部分(补充)文件子服务问题修正
c++·微服务·云原生·架构
2501_9240641112 小时前
2025年微服务全链路性能瓶颈分析平台对比与最佳实践
微服务·云原生·性能优化·架构
可爱又迷人的反派角色“yang”14 小时前
zookeeper概念与部署
分布式·zookeeper·云原生
嘻哈baby14 小时前
当云原生遇见VMware:容器化改造与混合部署实战
云原生
g***B73814 小时前
Java 服务端架构的本质:从单体到云原生的演进与思维模式变革
java·云原生·架构