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

devtools/2024/9/21 18:18:51/

文章目录

  • 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_51">第一步 下载istio

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

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

istio_60">第二步 安装istio环境

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

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

istio_72">第三部 安装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.ppmy.cn/devtools/42155.html

相关文章

JavaScript非表单元素的属性操作方式

JavaScript可以用来操作非表单元素的属性&#xff0c;包括元素的样式、内容、属性等。 以下是一些常见的非表单元素属性操作方式的代码示例&#xff1a; 1. 操作元素样式&#xff08;style&#xff09;属性&#xff1a; // 获取元素 var element document.getElementById(m…

ijkplayer定制化编译

目录 一&#xff0c;背景介绍 1.1 编译环境 1.2 工具安装 2&#xff0c;编译定制 2.1 代码下载 2.2 初始化 2.3 编译openssl 2.4 编译ffmpeg 2.5 编译 ijkplayer 一&#xff0c;背景介绍 ijkplayer是一款由哔哩哔哩公司开发的基于FFmpeg的播放器SDK开源架构&#xff…

怎么删除pdf中的某一页?五种高效删除方法

怎么删除pdf中的某一页&#xff1f;PDF文件是我们在工作中经常需要处理的一类文件&#xff0c;它的格式很稳定&#xff0c;不易修改。但是&#xff0c;有时候我们可能需要对PDF文件进行编辑&#xff0c;比如删除其中的某一页。本文将为你介绍五种高效的方法&#xff0c;帮助你轻…

政务热线系统:传递民生温度

一、引言 在信息化、网络化的今天&#xff0c;政务服务方式正在发生深刻变革。政务热线系统作为政府联系群众的重要桥梁&#xff0c;承担着政策解读、民意收集、问题解决等多重功能。它不仅体现了政府的服务效率和水平&#xff0c;更是政府传递民生温度、体现为民情怀的重要渠…

浅析扩散模型与图像生成【应用篇】(二十五)——Plug-and-Play

25. Plug-and-Play: Diffusion Features for Text-Driven Image-to-Image Translation 该文提出一种文本驱动的图像转换方法&#xff0c;输入一张图像和一个目标文本描述&#xff0c;按照文本描述对输入图像进行转换&#xff0c;得到目标图像。图像转换任务其实本质上属于图像编…

【智能算法】清道夫优化算法(CFO)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献5.代码获取 1.背景 2024年&#xff0c;W Zhang受到清道夫自然行为启发&#xff0c;提出了清道夫优化算法&#xff08;Cleaner Fish Optimization Algorithm, CFO&#xff09;。 2.算法原理 2.1算法思想 CF…

SVDD(Singing Voice Deepfake Detection,歌声深度伪造检测)挑战2024

随着AI生成的歌声快速进步&#xff0c;现在能够逼真地模仿自然人类的歌声并与乐谱无缝对接&#xff0c;这引起了艺术家和音乐产业的高度关注。歌声与说话声不同&#xff0c;由于其音乐性质和强烈的背景音乐存在&#xff0c;检测伪造的歌声成为了一个特殊的领域。 SVDD挑战是首个…

【Python】语句与众所周知【自我维护版】

各位大佬好 &#xff0c;这里是阿川的博客 &#xff0c; 祝您变得更强 个人主页&#xff1a;在线OJ的阿川 大佬的支持和鼓励&#xff0c;将是我成长路上最大的动力 阿川水平有限&#xff0c;如有错误&#xff0c;欢迎大佬指正 本篇博客是在之前的基础上进行的维护 目录 条…