【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.hqwc.cn/news/702679.html

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

相关文章

GMV ES6直流变频多联空调机组室外机工作原理

GMV ES6直流变频多联空调机组室外机工作原理如下&#xff1a; 内机为制冷模式运行时&#xff0c;室外机根据室内机的运行负荷需求启动运行&#xff0c;室外换热器作为系统的冷凝器&#xff0c;各制冷室内机的换热器并联作为系统的蒸发器&#xff0c;通过室内机的送回风循环实现…

推荐网站(8)iconfinder图标网站,包含大量图标

今天推荐网站iconfinder&#xff0c;他是一个包含大量图标网站&#xff0c;你可以找到自己想要的图标在里面&#xff0c;各种图标任你选择。 比如搜索appple图标 链接直达&#xff1a;https://www.iconfinder.com

通义千问模型升级:2.5正式上线的使用体验

个人对比各AI大模型的使用体会 正在用的国内的AI大模型主要有“通义千问”、“文心一言”、“讯飞星火”&#xff0c;还有国外的"ChatGPT"和"Copilot"&#xff0c;我觉得"通义千问"进步神速&#xff0c;因此现在我最常使用的就是"通义千问&…

Java逐层解析JSON的内存占用分析

哈喽&#xff0c;大家好&#xff0c;我是木头左&#xff01; 在当今的软件开发世界中&#xff0c;JSON&#xff08;JavaScript Object Notation&#xff09;已经成为了数据传输和存储的事实标准。由于其轻量级且易于人类阅读的特点&#xff0c;JSON被广泛用于Web服务、移动应用…

代码随想录打卡day27day28

回溯算法 回溯法解决的问题都可以抽象为树形结构&#xff0c;是的&#xff0c;我指的是所有回溯法的问题都可以抽象为树形结构&#xff01; 因为回溯法解决的都是在集合中递归查找子集&#xff0c;集合的大小就构成了树的宽度&#xff0c;递归的深度就构成了树的深度。 递归…

数据库管理-第190期 备份堪比生死(20240515)

数据库管理190期 2024-05-15 数据库管理-第190期 备份堪比生死&#xff08;20240515&#xff09;1 DDL误操作2 强大的RMAN3 ZDLRA总结 数据库管理-第190期 备份堪比生死&#xff08;20240515&#xff09; 作者&#xff1a;胖头鱼的鱼缸&#xff08;尹海文&#xff09; Oracle A…

【制作100个unity游戏之26】unity2d横版卷轴动作类游戏4(附带项目源码)

最终效果 系列导航 文章目录 最终效果系列导航前言添加敌人受击动画第一种 配置闪烁动画第二种 受伤击退效果人物死亡源码完结 前言 欢迎来到【制作100个Unity游戏】系列&#xff01;本系列将引导您一步步学习如何使用Unity开发各种类型的游戏。在这第26篇中&#xff0c;我们将…

照片误删如何恢复?这些方法帮你重拾回忆!

手机照片是我们记录美好时刻的重要工具。但有时我们会因为不小心或者错误操作而导致珍贵照片的丢失。那些与家人、朋友共度的美好时刻、旅途中的风景、重要的纪念日&#xff0c;一旦删除&#xff0c;就如同从记忆中抹去&#xff0c;令人惋惜不已。幸运的是&#xff0c;随着科技…

【NR学习一】NR中的带宽、子载波间隔、PRB数量、FFT点数与采样率之间的关系

NR中的带宽、子载波间隔、PRB数量、FFT点数与采样率之间的运算关系 在5G NR&#xff08;New Radio&#xff09;系统设计中&#xff0c;带宽&#xff08;Bandwidth&#xff09;、子载波间隔&#xff08;Subcarrier Spacing, SCS&#xff09;、资源块&#xff08;Resource Block…

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

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

值得推荐的10+REST API 测试工具 - CSDN 博客

什么是 API&#xff1f; API 是一个软件解决方案&#xff0c;作为中介&#xff0c;使两个应用程序能够相互交互。以下一些特征让 API 变得更加有用和有价值&#xff1a; 遵守 REST 和 HTTP 等易于访问、广泛理解和开发人员友好的标准。API 不仅仅是几行代码&#xff1b;这些是…

安全教育就是生命教育,江门海事局走进省实小学进行宣教活动

随着炎炎夏日来临&#xff0c;为进一步提高未成年人的水上安全意识&#xff0c;增强学生遵守水上交通安全规则、科学防溺水的能力&#xff0c;5月9-13日&#xff0c;江门海事局在江门省实学校小学部开展了“水上交通安全知识进校园”系列活动&#xff0c;通过开展一周知识展板展…