【09】ServiceEntry使用案例

案例背景
  • 为了便于测试,我们用非网格化的名称空间中运行的应用来模拟运行于VM/萝服务上的外部服务,假设:
    1. 在网格外部运行nginx服务,有2个实例
      • Nginx2001:监听地址为172.29.1.201:8091,nginx版本为1.20
      • nginx2002:监听地址为172.29.1.202:8091,nginx版本为1.20、
    2. 网格内部default名称空间中的pods/client作为客户端访问该服务
  • 请求测试
    • 未启用serviceEntry,客户端的请求目标在网格中不存匹配的listener等,因此将由sidercar Envoy通过tcp proxy透传到指定的外部服务
    • 这种透传机制,依赖于Sidercar Envoy的默认策略为ALLOW_ANY
案例环境设置
  • 环境设置

    k8s-master 192.168.170.134 
    node01 192.168.170.136
    node02 192.168.170.133
    nginx 192.168.170.137
    
  • nginx采用docker-compose部署,必须在nginx机器的ens33网卡上绑定几个ip

    192.168.170.100
    192.168.170.101
    192.168.170.102
    
环境部署

首先将nginx部署在nginx机器,部署方式为docker-compose

version: '3.3'services:nginx2001:image: nginx:1.20-alpinevolumes:- ./html/nginx2001:/usr/share/nginx/html/networks:envoymesh:ipv4_address: 172.31.201.11aliases:- nginxexpose:- "80"ports:- "192.168.170.100:8091:80"nginx2002:image: nginx:1.20-alpinevolumes:- ./html/nginx2002:/usr/share/nginx/html/networks:envoymesh:ipv4_address: 172.31.201.12aliases:- nginxexpose:- "80"ports:- "192.168.170.101:8091:80"nginx2101:image: nginx:1.21-alpinevolumes:- ./html/nginx2101:/usr/share/nginx/html/networks:envoymesh:ipv4_address: 172.31.201.13aliases:- nginx- canaryexpose:- "80"ports:- "192.168.170.102:8091:80"networks:envoymesh:driver: bridgeipam:config:- subnet: 172.31.201.0/24

启动

docker-compose up

在这里插入图片描述

  1. 创建VirtualService和DestinationRule,为ServiceEntry的流量配置高级路由规则

    apiVersion: networking.istio.io/v1beta1
    kind: VirtualService
    metadata:name: nginx-external
    spec:hosts:- nginx.icloud2native.comhttp:- name: falut-injectionmatch:- headers:X-Testing:exact: "true"route:- destination:host: nginx.icloud2native.comfault:delay:percentage:value: 5fixedDelay: 2sabort:percentage:value: 5httpStatus: 555- name: nginx-externalroute:- destination:host: nginx.icloud2native.com
    
    apiVersion: networking.istio.io/v1beta1
    kind: DestinationRule
    metadata:name: nginx-external
    spec:host: nginx.icloud2native.comtrafficPolicy:loadBalancer:consistentHash:httpHeaderName: X-UserconnectionPool:tcp:maxConnections: 10000connectTimeout: 10mstcpKeepalive:time: 7200sinterval: 75shttp:http2MaxRequests: 1000maxRequestsPerConnection: 10outlierDetection:maxEjectionPercent: 50consecutive5xxErrors: 5interval: 2mbaseEjectionTime: 1mminHealthPercent: 40
    
测试

进入到sleep这个容器进行访问

while true; do curl -H 'host: nginx.icloud2native.com' 192.168.170.100:8091;sleep 0.$RANDOM; done

在这里插入图片描述

 while true; do curl -H 'host: nginx.icloud2native.com' -H "X-Testing: true" 192.168.170.100:8091;sleep 0.$RANDOM; done

会发现定义的vs规则生效,有一部分已经注入故障,在kiali上查看:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/286593.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c语言编写http服务器(Linux下运行)

参考文章&#xff1a;https://blog.csdn.net/baixingyubxy/article/details/125964986?spm1001.2014.3001.5506 上面是详细讲解&#xff0c;我这篇是总结了他的代码&#xff0c;因为他没给整体代码 所有代码&#xff1a; #include <stdio.h> #include <stdlib.h&g…

DDD领域驱动设计

DDD 领域驱动实践 业务初期由于业务简单 只要简单的crud就可以满足。这个时候系统功能是清晰的。但是随着疯狂的迭代 不断的业务演化。业务逻辑越来越复杂。系统也越来越冗余。模块彼此关联。资深业务开发也很难说清楚这一块会涉及到什么功能。这个时候要基于这个版本去做迭代…

【深度学习目标检测】九、基于yolov5的路标识别(python,目标检测)

YOLOv5是目标检测领域一种非常优秀的模型&#xff0c;其具有以下几个优势&#xff1a; 1. 高精度&#xff1a;YOLOv5相比于其前身YOLOv4&#xff0c;在目标检测精度上有了显著的提升。YOLOv5使用了一系列的改进&#xff0c;如更深的网络结构、更多的特征层和更高分辨率的输入图…

金融数据可视化大屏,开启数字时代的金融新篇章

随着数字化时代的到来&#xff0c;金融行业的数据量正在迅速增长。如何有效处理、分析和呈现这些数据&#xff0c;成为了一个亟待解决的问题。而金融数据可视化大屏的出现&#xff0c;正是为了解决这一问题&#xff0c;让金融行业的数据处理和分析更加直观、高效。 一、金融数据…

网络的发展历史,ip地址

TCP/IP 是获得最广泛支持的通信协议集合 包含了大量internet应用的标准协议 -支持跨网络架构&#xff0c;跨操作系统平台的通信 主机与主机之间通信的三个要素 1.ip地址(ip address) 2.子网掩码(subent mask) 3.ip路由(ip router) ip地址&#xff1a; 作用&#xff1a;用…

实时时钟(RTC)的选择与设计:内置晶体与外置晶体的优缺点对比

实时时钟(RTC)作为一种具备独立计时和事件记录功能的设备&#xff0c;现已广泛应用于许多电子产品中&#xff0c;并对时钟的精度要求越来越高。根据封装尺寸、接口方式、附加功能、时钟精度和待机功耗等因素进行分类&#xff0c;市场上有各种种类的RTC产品可供选择。 而在设计…

webpack知识点总结(基础应用篇)

一、为什么需要webpack 1.为什么使用webpack ①传统的书写方式&#xff0c;加载太多脚本会导致网络瓶颈&#xff0c;如不小心改变JavaScript文件加载顺序&#xff0c;项目会崩溃&#xff0c;还会导致作用域问题、js文件太大无法做到按需加载、可读性和可维护性太低的问题。 ②…

node.js mongoose中间件(middleware)

目录 简介 定义模型 注册中间件 创建doc实例&#xff0c;并进行增删改查 方法名和注册的中间件名相匹配 执行结果 分析 错误处理中间件 手动抛出错误 注意点 简介 在mongoose中&#xff0c;中间件是一种允许在执行数据库操作前&#xff08;pre&#xff09;或后&…

数据结构(Chapter Two -02)—顺序表基本操作实现

在前一部分我们了解线性表和顺序表概念&#xff0c;如果有不清楚可以参考下面的博客&#xff1a; 数据结构(Chapter Two -01)—线性表及顺序表-CSDN博客 首先列出线性表的数据结构&#xff1a; #define MaxSize 50 //定义顺序表最大长度 typedef struct{ElemType data…

Next.js 学习笔记(三)——路由

路由 路由基础知识 每个应用程序的骨架都是路由。本页将向你介绍互联网路由的基本概念以及如何在 Next.js 中处理路由。 术语 首先&#xff0c;你将在整个文档中看到这些术语的使用情况。以下是一个快速参考&#xff1a; 树&#xff08;Tree&#xff09;&#xff1a;用于可…

制造企业可以通过哪些措施改善设备OEE

设备综合效率OEE&#xff08;Overall Equipment Effectiveness&#xff09;是制造企业衡量设备效率的关键指标之一。高效的设备运行对于提高生产效率、降低成本和实现竞争优势至关重要。然而&#xff0c;实现高水平的设备OEE并不是一项简单的任务。本文将介绍一些制造企业可以采…

QT绘图类 QPixmap、QImage、QPicture、QBitmap

前言 绘图设备是指继承 QPaintDevice 的子类&#xff0c;你可以使用 QPainter 直接在其上面绘制图形&#xff0c;Qt 一共提供了四个这样继承 QPaintDevice 的绘图设备类&#xff0c;分别是&#xff1a;QPixmap、QBitmap、QImage和 QPicture。其中&#xff1a; QPixmap是为在屏…