istio初步了解

news/2024/4/26 1:26:36/文章来源:https://blog.csdn.net/weixin_47677347/article/details/129151025

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一致,则可以实现对外部服务的访问规则设置

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

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

相关文章

C++项目——高并发内存池(3)--central cache整体设计

1.central cache的介绍 1.1框架思想 1.1.1哈希映射 centralcache其实也是哈希桶结构的,并且central cache和thread cacha的哈希映射关系是一致的。目的为了,当thread cache某一个哈希桶下没有内存块时,可以利用之前编写的SizeClass::Index…

RPC编程:RPC概述和架构演变

RPC编程系列文章第一篇一:引言1:本系列文章的目标2:RPC的概念二:架构的演变过程1:单体架构1):概念2):特点3):优缺点2:单体架构水平扩展1):水平拓展的含义2)&a…

整车电源的几种模式:OFF/ACC/RUN/CRANK

本文框架1.前言2. 四种电源模式2.1 OFF模式2.2 ACC模式2.3 ON模式2.4 CRANK模式3. KL15/KL301.前言 在诊断或者网络管理相关模块开发对客户的需求进行梳理时,经常会看到客户对不同车辆模式下处理策略的需求,如果前期没接触过这几种模式,可能…

【C++】初识CC++内存管理

前言 我们都知道C&C是非常注重性能的语言,因此对于C&C的内存管理是每一个C/C学习者必须重点掌握的内容,本章我们并不是深入讲解C&C内存管理,而是介绍C&C内存管理的基础知识,为我们以后深入理解C&C内存管理做铺…

【RecBole-GNN/源码】RecBole-GNN中lightGCN源码解析

如果觉得我的分享有一定帮助,欢迎关注我的微信公众号 “码农的科研笔记”,了解更多我的算法和代码学习总结记录。或者点击链接扫码关注【RecBole-GNN/源码】RecBole-GNN中lightGCN源码解析 【RecBole-GNN/源码】RecBole-GNN中lightGCN源码解析 原文&…

Ardiuno-交通灯

LED交通灯实验实验器件:■ 红色LED灯:1 个■ 黄色LED灯:1 个■ 绿色LED灯:1 个■ 220欧电阻:3 个■ 面包板:1 个■ 多彩杜邦线:若干实验连线1.将3个发光二极管插入面包板,2.用杜邦线…

【JUC2022】第二章 多线程锁

【JUC2022】第二章 多线程锁 文章目录【JUC2022】第二章 多线程锁一、乐观锁与悲观锁1.悲观锁2.乐观锁二、八锁案例1.标准情况,有a、b两个线程,请问先打印邮件还是短信【结果:邮件】2.sendEmail方法中加入暂停3秒钟,请问先打印邮件…

华为OD机试 - 最小传递延迟(C++) | 附带编码思路 【2023】

刷算法题之前必看 参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过率才会高。 华为 OD 清单查看地址:https://blog.csdn.net/hihell/category_12199283.html 华为OD详细说明:https://dream.blog.csdn.net/article/details/128980730 华为OD机试题…

随机数与蒙特卡洛方法及Python实现

0 建议学时 4学时 1 引入 1.1 随机数与采样 客观世界的某些行为,结果具有随机性: 掷骰子、投硬币; 等待公交车的时间; 种子发芽的比例; … 1.2 随机数函数 1.2.1 random模块 Python的random模块中提供了若干生成…

RFID盘点软件为企业提供RFID固定资产管理方案

随着科技的发展,固定资产管理系统也经过了一些变革,从刚开始的单机版逐渐发展成SaaS版本,物联网版本等。从刚开始只支持条形码到支持二维码、RFID码。RFID固定资产管理系统上线后,通过给每个实物资产绑定一个RFID码标签后&#xf…

接口测试流程是怎样的?

接口测试流程是怎样的?总所周知,接口测试流程是怎样的?总所周知接口测试在软件测试中是一个非常重要的一部分,其主要目的是测试应用程序的接口是否能够按照规范要求与其他系统或组件进行交互,以及在不同负载条件下接口…

推荐一款新的自动化测试框架:DrissionPage

今天给大家推荐一款基于Python的网页自动化工具:DrissionPage。这款工具既能控制浏览器,也能收发数据包,甚至能把两者合而为一,简单来说:集合了WEB浏览器自动化的便利性和 requests 的高效率。 一、DrissionPage产生背…

vue3-element-admin搭建

vue3-element-admin 是基于 vue-element-admin 升级的 Vue3 Element Plus 版本的后台管理前端解决方案,是 有来技术团队 继 youlai-mall 全栈开源商城项目的又一开源力作功能清单技术栈清单技术栈 描述官网Vue3 渐进式 JavaScript 框架 https://v3.cn.vuejs.org/Ty…

经纬度坐标点和距离之间的转换

1.纬度相同,经度不同 在纬度相同的情况下: 经度每隔0.00001度,距离相差约1米; 每隔0.0001度,距离相差约10米; 每隔0.001度,距离相差约100米; 每隔0.01度,距离相差约1000米…

基于龙芯 2K1000 的嵌入式 Linux 系统移植和驱动程序设计(一)

2.1 需求分析 本课题以龙芯 2K1000 处理器为嵌入式系统的处理器,需要实现一个完成的嵌入式软件系统,系统能够正常启动并可以稳定运行嵌入式 Linux。设计网络设备驱 动,可以实现板卡与其他网络设备之间的网络连接和文件传输。设计 PCIE 设备驱…

我的 System Verilog 学习记录(1)

引言 技多不压身,准备开始学一些 System Verilog 的东西,充实一下自己,这个专栏的博客就记录学习、找资源的一个过程,希望可以给后来者一些借鉴吧,IC找工作的都加把油! 本文是准备先简单介绍一下环境搭建…

洛谷P1125 [NOIP2008 提高组] 笨小猴 C语言/C++

[NOIP2008 提高组] 笨小猴 题目描述 笨小猴的词汇量很小,所以每次做英语选择题的时候都很头疼。但是他找到了一种方法,经试验证明,用这种方法去选择选项的时候选对的几率非常大! 这种方法的具体描述如下:假设 maxn\…

JAVA集合之并发集合

从Java 5 开始,在java.util.concurrent 包下提供了大量支持高效并发访问的集合接口和实现类,如下图所示: 以CopyOnWrite开头的集合即写时复制的容器。通俗的理解是当我们往一个容器添加元素的时候,不直接往容器添加,而…

直播预告 | 嵌入式BI如何将数据分析真正融入业务流程

在信息化高速发展的今天,数据成为企业最有价值的资产之一。而数据本身很难直接传递有价值的信息,只有通过对数据进行挖掘、分析,才能让数据真正成为生产力。 商业智能(BI)应运而生,可以帮助企业更好地从数…

Julia 交互式命令窗口

执行 julia 命令可以直接进入交互式命令窗口: $ julia __ _ _(_)_ | Documentation: https://docs.julialang.org(_) | (_) (_) |_ _ _| |_ __ _ | Type "?" for help, "]?" for Pkg help.| | | | | | |/ _ | || |…