当前位置: 首页 > news >正文

istio初步了解

istio

控制平面:

  • Pilot:管理和配置部署在特定istio服务网格中的所有sidecar代理实例,管理sidecar代理之间的路由流量规则,并配置故障恢复功能,如超时、重试、熔断。

  • Citadel:istio中负责身份认证和证书管理的核心安全组件,1.5之后的版本取消啦其独立进程,作为模块整合进istiod

    • 证书签发机构(CA),SDS服务器:负责密钥和证书管理
    • API服务器将安全配置分发给数据平面(将证书以secret的形式挂载到命名空间)
    • 客户端、服务端通过代理进行安全通信
    • Envoy代理管理遥测和审计
  • Galley:早版本只负责配置验证,1.1之后升级为整个控制平面的配置管理中心,不仅提供配置验证,还负责配置管理和分发。通过网格配置协议和其他组件进行配置交互。

数据平面:

服务发现、健康检测、流量路由、负载均衡、身份认证和授权、链路追踪

  • 手动sidecar注入:istioctl kube-inject -f ${yaml_file} | kubectl apply -f -
  • 单命名空间注入:kubectl label namespace ${namespace_name} istio-injection=enabled
  • 全局注入:kubectl edit mutatingwebhookconfiguration istio-sidecar-injector(修改namespaceSelector配置,如果某个命名空间不想自动注入,则加上istio-injection=disabled标签即可)
istio注入过程:
  • init容器isto-init:用于设置pod中的iptables端口的转发
    sidecar容器istio-proxy:运行sidecar代理,如envoy或Mosn

  • sidecar(envoy启动配置)
    查看:kubectl exec -it ${pod_name} -c istio-proxy – bash

    • 初始化配置文件:/etc/istio/proxy/envoy-rev0.json

      • node区域:包含envoy所在节点的相关信息,ID、所属集群、IP
      • admin区域:Envoy的日志路径及管理端口
      • dynamic_resources:动态资源,来自xDS服务器下发的配置
      • static_resources:静态资源,包括预制的Listener和Cluster
      • tracing:分布式调用追踪的配置
    • 全局配置:curl http:127.0.0.1:15000/config_dump

      • BootstrapConfigDump:即为上述初始化配置文件内容
      • ClusterConfigDump:集群配置,包括对应于外部服务的Outbound Cluster和自身所在节点服务的Inbound
      • ListenersConfigDump:监听器配置,包括用于堆外业务请求的Outbound Listener,处理入栈业务请求的Inbound Listener,以及作为流量处理入口的Virtual Listener
      • RoutesConfigDump:路由配置,用于HTTP请求的路由配置
      • SecretConfigDump:TLS双向认证的配置,包括自身的证书,以及用于验证请求方的CA根证书
实现流量控制的自定义资源
  • VirtualService:用于控制流量转发规则及api粒度治理功能(配置timeout和retry实现超时、重试,配置fault实现故障注入)
  • DestinationRule:定义路由的目标服务和流量策略(在此资源的Traffic Policy中设置熔断、健康检查配置)
  • ServiceEntry:注册外部服务到网格内
  • Gateway:用来控制进出网格的流量,包括入口和出口网关
  • Sidercar:用sidecar代理进行整体设置
  • WorkloadEntry/WorkloadGroup:将虚拟机接入网格。

istio的安装

  • 基于已有的K8S环境
  • 下载istio
    • 最新版本:curl -L https://istio.io/downloadIstio | sh -
    • 指定版本:curl -L https://istio.io/downloadIstio | ISTIO_version=1.6.8 TARGET_ARCH=x86_64 sh -
  • 添加环境变量:export PATH=PATH:PATH:PATH:(pwd)/istio-1.11.2/bin
  • demo配置安装istio:istioctl install --set=demo -y
  • 验证相关服务:kubectl get all -n istio-system

istio的升级

  • 金丝雀升级:
    • 安装canary版本控制平面:istioctl install --set revision=canary
    • 确定当前istiod pod情况:kubectl get pod -n istio-system
    • 确认新版的sidecar inject:kubectl get mutatingwebhookconfigurations
    • 数据平面升级:kubectl label namespace default istio-injection- istio.io/rev=canary(先去除istio-injection标签,因为此标签优先级高于canary)
    • 重新注入sidecar:kubectl rollout restart deployment -n default
    • 验证当前控制平面:istioctl proxy-config endpoints ${pod_name}.default --cluster xds-grpc -ojson | grep hostname

注意事项:
1、不建议一次性跨越多个版本升级
2、使用金丝雀升级,让新老版本istiod同时存在
3、只安装canary版本的控制平面不会对现有代理产生影响

  • 热升级:

1、确认k8s集群环境:kubectl config view
2、执行命令升级:istio upgrade(安装时使用-f,升级也要用,安装时使用–set,升级时也要用同样标志。)
3、重新注入sidecar:kubectl rollout restart deployment -n default

注意事项:
1、istioctl upgrade升级当检测到版本间配置有变化会提醒用户
2、只支持istioctl安装的istio
3、升级过程中,服务可能会发生中断,保证除citadel以外组件至少两个副本在运行

  • 相关资源之间联系
    • gateway中的spec.server.port与ingressgateway的svc的port对应
    • gateway中的spec.selector与标签选中的ingressgateway的pod联系(设置下发代理)
    • vituralservice中的spec.gateways 与对应的gateway联系
    • DestinationRule中的spec.subsets(子集)定义啦vitualservice中的spec.http.route.destination.subset
    • DestinationRule在vitualservice路由规则生效后使用,应用于真实的目标地址
    • DestinationRule中的subsets通过标签匹配pod
      virtualservice的spec.hosts和serviceEntry的spec.hosts一致,则可以实现对外部服务的访问规则设置

相关文章:

istio初步了解

istio 控制平面: Pilot:管理和配置部署在特定istio服务网格中的所有sidecar代理实例,管理sidecar代理之间的路由流量规则,并配置故障恢复功能,如超时、重试、熔断。 Citadel:istio中负责身份认证和证书管…...

【模板】用HTML编写邮件正文 | 各大邮箱几乎都会过滤css样式、js脚本等效果,如何用基础HTML编写?

用HTML编写邮件正文 文档 编码格式utf-8(使用记事本或其他工具打开,在文件->另存为,编缉选择UTF-8格式) 文档大小在15kb以内 样式 页面宽度:600px~800px 尽量用特殊元素以及元素属性代替样式 样式全部写为内联样式…...

华为云计算之双活容灾

双活(HyperMetro)本地双活:距离≤10km同城双活:距离>10km没有主备之分,只有本端数据中心和远端数据中心。当一个数据中心的设备故障或数据中心故障,业务会自动切换到另一个数据中心继续运行&…...

ASEMI高压MOS管ASE20N65SE体积,ASE20N65SE大小

编辑-Z ASEMI高压MOS管ASE20N65SE参数: 型号:ASE20N65SE 漏极-源极电压(VDS):650V 栅源电压(VGS):30V 漏极电流(ID):20A 功耗(P…...

resp连接redis服务器

修改redis的配置文件使得windows的图形界面客户端可以连接redis服务器 resp安装好以后,可以在linux端打开redis.conf中做以下操作,使得windows的图形界面客户端可以连接redis服务器 方法一: 1,在redis.conf文件中添加bind 在文件…...

七天实现一个分布式缓存

目录教程来源目的思路缓存淘汰(失效)算法:FIFO,LFU 和 LRUFIFO(First In First Out)LFU(Least Frequently Used)LRU(Least Recently Used)实现Lru查找功能删除新增/修改测试单机并发缓存主体结构 Group回调 GetterGroup 的定义Group 的 Get 方法HTTP 服务…...

电子招标采购系统源码功能清单

一、立项管理 1、招标立项申请 功能点:招标类项目立项申请入口,用户可以保存为草稿,提交。 2、非招标立项申请 功能点:非招标立项申请入口、用户可以保存为草稿、提交。 3、采购立项列表 功能点:对草稿进行编辑&#x…...

mysql数据库基础知识

一.mysql基本命令 1.基础常用命令 mysql -uroot -p密码;(也可以不带密码,之后输入) 本地登录 mysql -h 登录ip -p 端口(通常3306) -uroot -p密码; 远程登录 desc 表名;查看表的各个字段的属性,以及自增键 mysqldump -u用户 -p 数据库名 >…...

CAN总线通信

CAN总线通信 CAN 是控制器局域网络(Controller Area Network) 的缩写,是 ISO 国际标准化的串行通信协议。 CAN是半双工通信 CAN总线特点 (1) 多主控制 在总线空闲时,所有的单元都可开始发送消息(多主控制&#xf…...

MATLAB/Simulink 通信原理及仿真学习(二)

文章目录MATLAB/Simulink 通信原理及仿真学习(二)simulink仿真常用的Simulink库1. 信号源模块库2. 数序运算模块3. 信号输出模块库4.仿真搭建5.搭建自己的库6.S-函数编写MATLAB/Simulink 通信原理及仿真学习(二) simulink仿真 交…...

CentOS7 防火墙(firewall)的操作命令

CentOS7 防火墙(firewall)的操作命令 安装:yum install firewalld 1、firewalld的基本使用 启动: systemctl start firewalld 查看状态: systemctl status firewalld 禁用,禁止开机启动: s…...

文献工具汇总:论文查找、文献管理、文献翻译

科研人员论文哪里找?文献如何管理?本文给推荐一些提高论文阅读写作效率的一些资料,包括查找论文、文献管理、文献翻译等方面。 一、查找文献 PMC(Pubmed Cenral) Pubmed官方系统中,将免费的全文集中在此&#xff0c…...

SQL零基础入门学习(三)

SQL零基础入门学习(二) SQL WHERE 子句 WHERE 子句用于提取那些满足指定条件的记录。 SQL WHERE 语法 SELECT column1, column2, ... FROM table_name WHERE condition;参数说明: column1, column2, …:要选择的字段名称&…...

苹果手机如何快速的直接从相册里面的图片提取文字?

//在线工具地址https://ocr.bytedance.zj.cn/image/ImageText在当今信息爆炸的时代,图文并茂已经成为了一个广告宣传的常用方式。然而,图片中的文字信息往往难以获取,尤其对于那些需要快速获取信息的人们来说,阅读图片中的文字会是…...

【go】函数调用

程序中编写的函数在编译阶段会被编译成一段段的指令存放在可执行文件中,在程序运行阶段这些内存会加载到虚拟地址空间的代码段。 当函数A调用了函数B的时候,对应的会生成一条call指令,程序在运行到call指令时就会跳转到对应的B函数的代码段的…...

Linux系统之Uboot、Kernel、Busybox思考之四

目录 三 内核的运行 9 设备树: 1) 设备树产生缘由 2) 设备树方案的流程 3) 有了上述概念,为了支撑整个设备树的工程实现,内核实现以下内容 4) 内核解析设备树 5) 入口分析 6) 解析处理。 10 udev devfs sysfs 11 系统中的USB设备 12 网…...

为什么要经常阅读和分析计算机SCI期刊论文? - 易智编译EaseEditing

训练阅读与分析期刊论文的能力,可以增加中长期的学术竞争力。 只要能够充分掌握阅读与分析期刊论文的技巧,就可以水到渠成地轻松进行「创新」的工作。 所以,只要深入掌握到阅读与分析期刊论文的技巧,就可以掌握到大学生不曾研习过…...

Shiro框架详解

1.Shiro简介 1.1.基本功能点 Shiro 可以非常容易的开发出足够好的应用,其不仅可以用在 JavaSE 环境,也可以用在 JavaEE 环境。Shiro 可以帮助我们完成:认证、授权、加密、会话管理、与 Web 集成、缓存等。 Authentication:身份…...

redhawk:GSC file与STA file

1.GSC file redhawk做lowpower分析时需要GSC&#xff08;Global Switching Configuration&#xff09;file指导block/instance/power domain的开关状态。 Syntax&#xff08;in GSR file&#xff09;: GSC_FILES <gsc_FilePathName> Syntax&#xff08;in GSC file&a…...

【Python学习笔记】46.Python3 math 模块和requests 模块

前言 本章介绍Python的math 模块和requests 模块。 Python math 模块 Python math 模块提供了许多对浮点数的数学运算函数。 math 模块下的函数&#xff0c;返回值均为浮点数&#xff0c;除非另有明确说明。 如果你需要计算复数&#xff0c;请使用 cmath 模块中的同名函数…...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动

一、前言说明 在2011版本的gb28181协议中&#xff0c;拉取视频流只要求udp方式&#xff0c;从2016开始要求新增支持tcp被动和tcp主动两种方式&#xff0c;udp理论上会丢包的&#xff0c;所以实际使用过程可能会出现画面花屏的情况&#xff0c;而tcp肯定不丢包&#xff0c;起码…...

【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)

服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...

QT: `long long` 类型转换为 `QString` 2025.6.5

在 Qt 中&#xff0c;将 long long 类型转换为 QString 可以通过以下两种常用方法实现&#xff1a; 方法 1&#xff1a;使用 QString::number() 直接调用 QString 的静态方法 number()&#xff0c;将数值转换为字符串&#xff1a; long long value 1234567890123456789LL; …...

优选算法第十二讲:队列 + 宽搜 优先级队列

优选算法第十二讲&#xff1a;队列 宽搜 && 优先级队列 1.N叉树的层序遍历2.二叉树的锯齿型层序遍历3.二叉树最大宽度4.在每个树行中找最大值5.优先级队列 -- 最后一块石头的重量6.数据流中的第K大元素7.前K个高频单词8.数据流的中位数 1.N叉树的层序遍历 2.二叉树的锯…...

基于matlab策略迭代和值迭代法的动态规划

经典的基于策略迭代和值迭代法的动态规划matlab代码&#xff0c;实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...

Typeerror: cannot read properties of undefined (reading ‘XXX‘)

最近需要在离线机器上运行软件&#xff0c;所以得把软件用docker打包起来&#xff0c;大部分功能都没问题&#xff0c;出了一个奇怪的事情。同样的代码&#xff0c;在本机上用vscode可以运行起来&#xff0c;但是打包之后在docker里出现了问题。使用的是dialog组件&#xff0c;…...

蓝桥杯 冶炼金属

原题目链接 &#x1f527; 冶炼金属转换率推测题解 &#x1f4dc; 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V&#xff0c;是一个正整数&#xff0c;表示每 V V V 个普通金属 O O O 可以冶炼出 …...

08. C#入门系列【类的基本概念】:开启编程世界的奇妙冒险

C#入门系列【类的基本概念】&#xff1a;开启编程世界的奇妙冒险 嘿&#xff0c;各位编程小白探险家&#xff01;欢迎来到 C# 的奇幻大陆&#xff01;今天咱们要深入探索这片大陆上至关重要的 “建筑”—— 类&#xff01;别害怕&#xff0c;跟着我&#xff0c;保准让你轻松搞…...

【Linux系统】Linux环境变量:系统配置的隐形指挥官

。# Linux系列 文章目录 前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变量的生命周期 四、环境变量的组织方式五、C语言对环境变量的操作5.1 设置环境变量&#xff1a;setenv5.2 删除环境变量:unsetenv5.3 遍历所有环境…...

QT开发技术【ffmpeg + QAudioOutput】音乐播放器

一、 介绍 使用ffmpeg 4.2.2 在数字化浪潮席卷全球的当下&#xff0c;音视频内容犹如璀璨繁星&#xff0c;点亮了人们的生活与工作。从短视频平台上令人捧腹的搞笑视频&#xff0c;到在线课堂中知识渊博的专家授课&#xff0c;再到影视平台上扣人心弦的高清大片&#xff0c;音…...