【Kubenetes】微服务治理:服务网格Istio安装搭建体验

文章目录

  • ServiceMesh介绍
  • Istio解决方案
  • 安装Istio
    • 第一步 下载istio
    • 第二步 安装istio环境
    • 第三部 安装istio应用
    • 第四部 暴露到外部流量
    • 然后再下一步 把dashboard弄好


ServiceMesh介绍

扯淡环节

  • 什么是服务网格?–服务间通信,可扩展性和灵活性
  • 服务网格的工作原理 --Sidecars处理从服务中抽象出来的任务
  • 为什么采用服务网格?–分离和管理服务间通信
    在这里插入图片描述
    颜色代表的含义
  • 绿色部分:业务代码
  • 蓝色部分:应用流量的入口和出口

服务网格的好处
随着微服务数量的增加,服务网格的优势变得愈加明显。然而,服务网格的发展滞后于 Kubernetes 和容器技术的发展。目前,只有少数企业在使用服务网格,因为大部分功能已经能通过中间件实现。

服务网格的主要特性

  • 可靠性:通过 Sidecar 提高了服务的隔离性、透明性和动态性(例如动态路由、流量控制和故障恢复)。
  • 可观测性:提供监控、追踪和日志功能,例如使用 Prometheus 和 Jaeger 等工具。
  • 安全性:支持加密通信、访问控制和身份验证,但这些功能一般在内部服务中不常使用。

服务网格的优点和缺点

优点

  • 简化微服务之间的通信。
  • 更容易诊断通讯错误,因为错误会发生在服务网格的基础设施层上。
  • 支持加密、认证和授权等安全特性。

缺点

  • 增加复杂性、性能开销等

Istio解决方案

Istio架构设计图:
在这里插入图片描述

服务网格建立在微服务之上

在这里插入图片描述

安装Istio

官网:https://istio.io/latest/docs/setup/getting-started/

在这里插入图片描述
官网给出了4个步骤

第一步 下载istio

脚本里的url有github的 国内有的访问不到
所以直接去github下载最新版
https://github.com/istio/istio/releases

bin/istioctl复制到环境里/usr/local/bin/
查看istio版本:istioctl version
目前是没有运行的

第二步 安装istio环境

在这里插入图片描述
执行官网给的命令
istioctl install --set profile=demo -y
在这里插入图片描述
下载完成

接着给default命名空间打一个label
官方是为了区分
在这里插入图片描述
kubectl label namespace default istio-injection=enabled

第三部 安装istio应用

回到下载istio的目录
在这里插入图片描述
执行官网给出的命令
在这里插入图片描述
kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml

创建完成之后看一下pod
在这里插入图片描述
等待变成Running

验证是否已经部署成功
在这里插入图片描述

kubectl exec "$(kubectl get pod -l app=ratings -o jsonpath='{.items[0].metadata.name}')" -c ratings -- curl -sS productpage:9080/productpage | grep -o "<title>.*</title>"

这样就是部署成功了
在这里插入图片描述

第四部 暴露到外部流量

在这里插入图片描述
接着官网的步骤做: 安装gateway
kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml

验证一下
在这里插入图片描述
下一步是把ip:port找到 然后访问
在这里插入图片描述
有两种方式 minikube或其他平台
应该都是其他平台

在这里插入图片描述
执行:kubectl get svc istio-ingressgateway -n istio-system

在这里插入图片描述
这里是LoadBalancer需要改写为node port来访问
kubectl edit svc istio-ingressgateway -n istio-system
跳到最下面 把type: LoadBalancer改为:type: NodePort
在这里插入图片描述
再看一下就是nodeport了
在这里插入图片描述
通过任意一个节点的ip 加上nodeport就可以访问到
ip:32184

然后发现找不到
在这里插入图片描述
看一下创建的gateway
vim samples/bookinfo/networking/bookinfo-gateway.yaml

找到VirtualService
在这里插入图片描述
官方创建的gateway是绑定了VirtualService 匹配的路径的

在这里插入图片描述
加上后缀/productpage正常访问

不断刷新发现访问的可能不一样 是因为负载均衡

然后再下一步 把dashboard弄好

在这里插入图片描述
执行安装插件:kubectl apply -f samples/addons

等待插件的pod都启动起来
在这里插入图片描述
然后把kiali暴露出来

官方给了张图 可以看到清晰的流量链路 调用情况
kiali就做这个事情
在这里插入图片描述

官网给了一个模拟流量的命令
在这里插入图片描述
其实可以不执行这个
直接疯狂刷新ip:pord/productpage来搞流量

现在访问不到kiali 是因为kiali的svc是ClusterIP
在这里插入图片描述

需要改写为NodePort

kubectl edit svc kiali -n istio-system
跳到最下面 把type: LoadBalancer改为:type: NodePort
在这里插入图片描述
再看一下svc 就是NodePort了 同时映射了一个端口 这边是30795
在这里插入图片描述

打开任意一个节点+port 访问
在这里插入图片描述
去看一下Graph里 筛选ns 看到流量没有联系 右上角是15s匹配一次
再拼一次手速 单身20年手速 疯狂访问ip:pord/productpage

在这里插入图片描述

再看一下 和官网的图就类似了
在这里插入图片描述
完成

补充一下gatewayvirtualservice的原理
在这里插入图片描述
gateway入口
进一个gateway看一下 它是istio定义的一个资源

在这里插入图片描述

virtualservice是虚拟服务和这个gateway绑定在了一起
意思是 通过gateway进入之后 会给virtualservice虚拟服务一个匹配关系
在这里插入图片描述
virtualservice在k8s中有一个抽象的管理层
太麻烦了不说了 ok完成

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【js刷题:数据结构链表之设计链表】

设计链表 一、题目二、题解 一、题目 二、题解 // 定义节点类&#xff0c;每个节点都有一个值和一个指向下一个节点的引用 class LinkNode{constructor(val,next){ // 构造函数&#xff0c;接收节点值和下一个节点的引用this.valval // 节点的值this.nextnext // 指…

接口文档编写注意事项

接口文档编写注意事项 字段方面 ①不需要的字段、逻辑中固定值的字段&#xff08;可写死的字段&#xff09;不提供 ②逻辑上可以合并的字段合并 例如&#xff1a;当一个互斥条件下&#xff0c;分别返回了两个字段&#xff0c;这个时候就可以在这个基础上将两个字段合并成一个…

Linux连接文件那点事

什么是连接文件 将一个文件和另一个文件建立联系&#xff0c;分为硬链接和软连接&#xff08;符号连接&#xff09;。 硬链接 Linux中&#xff0c;所有的文件都有一个inode&#xff0c;这个东西就是文件的ID号&#xff0c;硬链接的方式就是通过这个inode来产生新的文件名来建…

Stable Diffusion入门使用技巧及个人试用实例分享--生成稳定人物及姿势篇

上节我们主要讲解了SD提示词的实践篇及ControlNet常用模型篇&#xff0c;本节主要想给大家分享一下如何在不自己单独训练lora的情况下尽量稳定的控制生成的人物的脸及姿势。欢迎阅读。 一、如何稳定生成相同的人物&#xff08;脸部&#xff09; 1、瞎编名字法&#xff1a; d…

ICode国际青少年编程竞赛- Python-6级训练场-多重递归

ICode国际青少年编程竞赛- Python-6级训练场-多重递归 1、 def move(a, b):if a > 12:returnDev.step(a)Dev.turnRight()if b < 4:move(a, b1)else:move(a2, 1) move(2, 1)2、 def move(a, b):if a < 2:returnif b 1: Spaceship.step(2)Dev.step(a)Dev.turnRight()De…

智能AI数字人直播带货软件系统,支持所有平台直播可带货,引流私域,同城团购 带源代码包

系统概述 智能AI数字人直播带货软件系统是一款基于人工智能技术的创新产品&#xff0c;该系统集成了深度学习、自然语言处理、图像识别等多项前沿技术&#xff0c;能够模拟真实主播的行为和表情&#xff0c;实现高度智能化的直播带货体验。该系统支持所有主流直播平台&#xf…

IDEA的妙用

IDEA 安装破解 复制JetbrainsIdesCrack-4.2.jar到安装目录下 修改安装目录下的bin目录的idea64.exe.vmoptions&#xff1a; 最后一行添加&#xff1a;-javaagent:E:\develop\JetBrains\IntelliJ IDEA 2018.3.5\bin\JetbrainsIdesCrack-4.2.jar(注意&#xff1a;使用自己的路…

Vue.js 详细介绍

文章目录 一、Vue.js 简介1.1 什么是 Vue.js&#xff1f;1.2 Vue.js 的特点 二、快速上手 Vue.js2.1 安装 Vue.js使用 CDN使用 npm 或 yarn 2.2 创建一个 Vue 实例2.3 Vue.js 项目结构 三、Vue.js 核心概念3.1 数据绑定3.2 指令&#xff08;Directives&#xff09;3.3 组件&…

MATLAB车辆动力学建模 ——《控制系统现代开发技术》

引言 在上这门课之前&#xff0c;我已经用过CasADi 去做过最优化的相关实践&#xff0c;其中每一步迭代主要就是由&#xff1a;对象系统优化求解两部分组成的。这里我们重点介绍 “对象系统”如何去描述 &#xff0c;因为它是每一步迭代中重要的一环——“优化求解”会获得控制…

Linux系统中pts和tty会话删除

一、背景 一台CentOS6.7主机存在iscsi盘&#xff0c;为了正常卸载此iscsi盘&#xff0c;需要先将所有相关会话退出使用该iscsi盘。 检查发现存在多个系统用户登录的情况。 二、问题 无法使用kill -9删除linux会话&#xff0c;提示信息为“-bash: kill: (16680) - Operation not…

java项目之企业资产管理系统(springboot+vue+mysql)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的企业资产管理系统。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; 管理员功能有个人中心&…

【全开源】JAVA红娘婚恋相亲交友系统源码支持微信小程序+微信公众号+H5+APP

红娘婚恋相亲交友系统&#xff1a;遇见你的命中注定 在快节奏的现代生活中&#xff0c;许多单身男女都在寻找一个平台&#xff0c;希望能遇见那个能与自己携手共度一生的伴侣。红娘婚恋相亲交友系统正是为了满足这一需求而诞生的&#xff0c;它旨在为广大单身男女提供一个安全…

咒语和药水的成功对数

题目链接 咒语和药水的成功对数 题目描述 注意点 一个咒语和药水的能量强度相乘如果大于等于 success &#xff0c;那么它们视为一对成功的组合 解答思路 先将药水进行排序&#xff0c;然后二分查找找到某个咒语i和药水的能量强度相乘大于等于success的左边界left&#xf…

A股股息率最高的十个行业,哪些高股息可持续?

2023年以来&#xff0c;银行不断调低存款利率。目前&#xff0c;六大行5年定期存款&#xff08;整存整取&#xff09;挂牌利率约为2%。随着存款收益下降&#xff0c;那些股息率较高的上市公司和行业受到了关注。 数据分析显示&#xff0c;一部分行业的高股息可以持续&#xff…

JAVA云HIS医院管理系统源码 云HIS系统源码 SaaS模式 采用Java+Spring,SpringBoot开发的云HIS医院管理系统

云HIS采用JavaSpring&#xff0c;SpringBoot&#xff0c;SpringMVC&#xff0c;SpringSecurity&#xff0c;MyBatisPlus技术开发。可满足诊所业务中预约、看诊、收费、发药、药库管理、经营分析等多环节的工作需要。和传统医院系统相比&#xff0c;云HIS的操作简单&#xff0c;…

【Python】使用requests采集数据存入mysql或文件

一、什么是requests requests包是一个使用Python编写的HTTP请求库&#xff0c;使得发送HTTP请求和处理HTTP响应变得更加简单。以下是对requests包的详细介绍&#xff1a; 用途&#xff1a; requests包主要用于与HTTP交互&#xff0c;能够发送HTTP请求和处理HTTP响应。它支持处…

uni-app:音频播放 uni.createInnerAudioContext()

uni.createInnerAudioContext() 创建并返回内部 audio 上下文 innerAudioContext 对象 简单实现音频播放&#xff1a; let innerAudioContext uni.createInnerAudioContext(); innerAudioContext.src ../../../../static/ok.MP3;//音频地址 innerAudioContext.play(); inn…

SL3038 48V/60V电动车里程增程器电源驱动芯片 大电流3A

在电动车领域中&#xff0c;电池续航能力一直是制约其广泛应用的关键因素之一。为了提高电动车的续航能力和使用效率&#xff0c;各大厂商纷纷投入研发&#xff0c;寻求更为先进的电源驱动芯片解决方案。其中&#xff0c;SL3038 48V/60V电动车里程增程器电源驱动芯片以其卓越的…

我是如何利用AI提高内容生产效率的

文章目录 如何利用AI提高内容生产效率?自动化内容生成内容推荐与个性化数据分析与内容优化自动化编辑与翻译虚拟助手与自动化排版智能内容管理与版本控制情感分析与内容优化实时反馈与即时调整跨平台内容适配智能内容生成工具总结 如何利用AI提高内容生产效率? 简介&#xff…

JAVA二手车交易二手车市场系统源码支持微信小程序+微信公众号+H5+APP

二手车交易二手车市场系统&#xff1a;重塑购车新体验 随着汽车消费市场的日益成熟&#xff0c;二手车交易逐渐成为消费者购车的新选择。为了提供更加便捷、透明、安全的二手车交易环境&#xff0c;我们推出了“二手车交易二手车市场系统”&#xff0c;旨在为买卖双方搭建一个…