istio 服务跟踪和流量管理

2024-06-04 22:48

本文主要是介绍istio 服务跟踪和流量管理,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

创建目标规则和默认路由

使用Istio来管理这两个服务的流量

定义一个名称为nginx-web的DestinationRule 目标规则,

利用Pod标签把nginx-web服务分成两个subset, 分别命名为v1和v2

# nginx-destinationRule.yaml 
apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:name: nginx-web
spec:host: nginx-websubsets:- name: v1labels:version: v1- name: v2labels:version: v2#### 部署到集群上kubectl apply -f nginx-destinationRule.yaml          
创建默认的路由规则VirtualService 不论是否进行进一步的流量控制,都建议为网格中的服务创建默认的路由规则

定义一个VirtualService对象,它负责接管对 “nginx-web”这一主机名的访问,
将流量都转发到DestinationRule定义的v2 subset上

# cat nginx-virtual-service-reviews-v2.yaml 
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:name: nginx-web-v2
spec:hosts:- nginx-webhttp:- route: - destination: host: nginx-websubset: v2#### 部署到集群上
kubectl apply -f nginx-virtual-service-reviews-v2.yaml 

再次进入客户端Pod, 看看新定义的流量管理规则是否生效

### 结果可以看出,访问只返回 v2 版本
# kubectl exec -it sleep-7995b95fdb-8vzmx sh
Defaulting container name to sleep.
Use 'kubectl describe pod/sleep-7995b95fdb-8vzmx -n default' to see all of the containers in this pod.
/ # while true; do curl http://nginx-web:80 ; sleep 1; done
<h1>Welcome to V2 !</h1>
<h1>Welcome to V2 !</h1>
<h1>Welcome to V2 !</h1>
<h1>Welcome to V2 !</h1>

金丝雀部署

金丝雀(Canary)部署指的是让少量用户使用应用新版本的一个过程,
借助这一过程能够验证新版本是否存在问题,然后能够确保以更高的质量发布给更多的受众
将 20% 的用户发送至带有缺陷的 v2 版本(这就是金丝雀发布),
并将 80% 的用户发送至正常的服务 v1 版本
这可以通过如下的 VirtualService 来实现

# cat nginx-virtual-service-reviews-80-20.yaml
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:name: nginx-web
spec:hosts:- nginx-webhttp:- route: - destination: host: nginx-websubset: v1weight: 80- destination: host: nginx-websubset: v2weight: 20#### 部署到集群上
kubectl apply -f nginx-virtual-service-reviews-80-20.yaml

再次进入客户端Pod, 看看新定义的流量管理规则是否生效

### 结果可以看出,大部分结果返回 v1 版本
# kubectl exec -it sleep-7995b95fdb-8vzmx sh
Defaulting container name to sleep.
Use 'kubectl describe pod/sleep-7995b95fdb-8vzmx -n default' to see all of the containers in this pod.
/ # while true; do curl http://nginx-web ; sleep 1; done
<h1>Welcome to V1 !</h1>
<h1>Welcome to V1 !</h1>
<h1>Welcome to V1 !</h1>
<h1>Welcome to V1 !</h1>
<h1>Welcome to V2 !</h1>
<h1>Welcome to V1 !</h1>
<h1>Welcome to V1 !</h1>
<h1>Welcome to V1 !</h1>
<h1>Welcome to V1 !</h1>
<h1>Welcome to V1 !</h1>
<h1>Welcome to V1 !</h1>
<h1>Welcome to V1 !</h1>
<h1>Welcome to V2 !</h1>

带有缺陷的服务版本会有三分之一的概率在生成响应时耗费过长的时间,
三分之一的概率遇到服务器内部错误,其余的请求均能正常完成。

为了降低这些缺陷的影响并给用户带来更好的用户体验,我们会采取如下的措施:

  • 如果服务耗时超过了 8 秒钟,将会超时;
  • 对于失败的请求进行重试。
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:name: nginx-web
spec:hosts:- nginx-webhttp:- route: - destination: host: nginx-websubset: v1weight: 80- destination: host: nginx-websubset: v2weight: 20timeout: 8sretries:attempts: 3perTryTimeout: 3s

这篇关于istio 服务跟踪和流量管理的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1031343

相关文章

SQL Server跟踪自动统计信息更新实战指南

《SQLServer跟踪自动统计信息更新实战指南》本文详解SQLServer自动统计信息更新的跟踪方法,推荐使用扩展事件实时捕获更新操作及详细信息,同时结合系统视图快速检查统计信息状态,重点强调修... 目录SQL Server 如何跟踪自动统计信息更新:深入解析与实战指南 核心跟踪方法1️⃣ 利用系统目录

在macOS上安装jenv管理JDK版本的详细步骤

《在macOS上安装jenv管理JDK版本的详细步骤》jEnv是一个命令行工具,正如它的官网所宣称的那样,它是来让你忘记怎么配置JAVA_HOME环境变量的神队友,:本文主要介绍在macOS上安装... 目录前言安装 jenv添加 JDK 版本到 jenv切换 JDK 版本总结前言China编程在开发 Java

Spring Boot Actuator应用监控与管理的详细步骤

《SpringBootActuator应用监控与管理的详细步骤》SpringBootActuator是SpringBoot的监控工具,提供健康检查、性能指标、日志管理等核心功能,支持自定义和扩展端... 目录一、 Spring Boot Actuator 概述二、 集成 Spring Boot Actuat

MySQL多实例管理如何在一台主机上运行多个mysql

《MySQL多实例管理如何在一台主机上运行多个mysql》文章详解了在Linux主机上通过二进制方式安装MySQL多实例的步骤,涵盖端口配置、数据目录准备、初始化与启动流程,以及排错方法,适用于构建读... 目录一、什么是mysql多实例二、二进制方式安装MySQL1.获取二进制代码包2.安装基础依赖3.清

Spring Boot 与微服务入门实战详细总结

《SpringBoot与微服务入门实战详细总结》本文讲解SpringBoot框架的核心特性如快速构建、自动配置、零XML与微服务架构的定义、演进及优缺点,涵盖开发环境准备和HelloWorld实战... 目录一、Spring Boot 核心概述二、微服务架构详解1. 微服务的定义与演进2. 微服务的优缺点三

RabbitMQ消息总线方式刷新配置服务全过程

《RabbitMQ消息总线方式刷新配置服务全过程》SpringCloudBus通过消息总线与MQ实现微服务配置统一刷新,结合GitWebhooks自动触发更新,避免手动重启,提升效率与可靠性,适用于配... 目录前言介绍环境准备代码示例测试验证总结前言介绍在微服务架构中,为了更方便的向微服务实例广播消息,

Spring Boot集成Druid实现数据源管理与监控的详细步骤

《SpringBoot集成Druid实现数据源管理与监控的详细步骤》本文介绍如何在SpringBoot项目中集成Druid数据库连接池,包括环境搭建、Maven依赖配置、SpringBoot配置文件... 目录1. 引言1.1 环境准备1.2 Druid介绍2. 配置Druid连接池3. 查看Druid监控

关于DNS域名解析服务

《关于DNS域名解析服务》:本文主要介绍关于DNS域名解析服务,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录DNS系统的作用及类型DNS使用的协议及端口号DNS系统的分布式数据结构DNS的分布式互联网解析库域名体系结构两种查询方式DNS服务器类型统计构建DNS域

Knife4j+Axios+Redis前后端分离架构下的 API 管理与会话方案(最新推荐)

《Knife4j+Axios+Redis前后端分离架构下的API管理与会话方案(最新推荐)》本文主要介绍了Swagger与Knife4j的配置要点、前后端对接方法以及分布式Session实现原理,... 目录一、Swagger 与 Knife4j 的深度理解及配置要点Knife4j 配置关键要点1.Spri

Linux中SSH服务配置的全面指南

《Linux中SSH服务配置的全面指南》作为网络安全工程师,SSH(SecureShell)服务的安全配置是我们日常工作中不可忽视的重要环节,本文将从基础配置到高级安全加固,全面解析SSH服务的各项参... 目录概述基础配置详解端口与监听设置主机密钥配置认证机制强化禁用密码认证禁止root直接登录实现双因素