掌握 Istio:部署完成后如何运用?

简介: 本文介绍了在Ubuntu 20.04单机环境下使用Istio服务网格的配置与测试过程。主要内容包括:1. **环境准备**:使用一台IP为10.9.2.83的机器。2. **Istio简介**:Istio简化了Kubernetes集群中的服务间通信、流量管理、安全性和可观测性。3. **部署Bookinfo示例**: - 创建命名空间`istio-demo`并启用自动注入功能。 - 部署Bookinfo应用,包含四个微服务,并验证其正常运行。

一、环境情况

环境:Ubuntu20.04

机器数量:单机1台

IP:10.9.2.83

二、准备知识

为什么使用 Istio?

Istio提供了一种更高级别的服务网格解决方案,它可以简化和加强 Kubernetes 集群中的服务间通信、流量管理、安全性和可观测性。使用 Istio,你可以减少依赖大量的 Ingress 资源和 Service 对象来处理网络的路由和代理。

三、利用bookinfo示例测试istio

在搭建好的istio环境中进行以下的部署步骤:

  • 创建bookinof示例

kubectl create ns istio-demo kubectl create -f samples/bookinfo/platform/kube/bookinfo.yaml --namespace=istio-demo

  • 为命名空间添加 istio-injection=enabled 的标签,以启用 istio 的自动注入功能。
  • 使用 kubectl label 命令为 istio-demo 命名空间添加 istio-injection=enabled 的标签,这样在部署应用时,istio 会自动为每个 pod 注入 sidecar 代理。

kubectl label namespace istio-demo istio-injection=enabled

  • 部署 bookinfo.yaml 文件,该文件包含了 bookinfo 应用的四个微服务和相关的服务和部署资源。
  • 使用 kubectl apply 命令部署 bookinfo.yaml 文件,该文件位于 istio 的 /usr/local/istio/samples/bookinfo/platform/kube 目录下。

kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml --namespace=istio-demo

  • 检查 bookinfo 应用是否正常运行,可以通过 kubectl exec 命令访问 productpage 服务,或者通过 istioctl dashboard 命令打开 kiali 或 grafana 等可视化工具。
  • 使用 kubectl get 命令查看服务和 pod 的状态,确保所有的 pod 都处于 Running 状态,并且有两个容器(一个是应用容器,一个是 sidecar 代理)。

kubectl get pods  -n istio-demo


添加图片注释,不超过 140 字(可选)


kubectl get services -n istio-demo


添加图片注释,不超过 140 字(可选)


  • 使用 kubectl exec 命令访问 productpage 服务,该服务的端口号是 9080

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


添加图片注释,不超过 140 字(可选)


到目前bookinfo服务也就正常运行了,如何需要从k8s集群外部访问应用程序,此时Istio网关就能起作用了

创建入口网关:

kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml  -n istio-demo

查看网关创建情况:

kubectl get gateway  -n istio-demo


添加图片注释,不超过 140 字(可选)


查看网关信息

kubectl get svc istio-ingressgateway -n istio-system


添加图片注释,不超过 140 字(可选)


http://192.168.49.2:30485/productpage 其中192.168.49.2就是minikube ip


添加图片注释,不超过 140 字(可选)


下面就可以通过dashboard观察服务之间的调用情况。

  • 使用 istioctl dashboard 命令打开 kiali 或 grafana 等可视化工具,查看服务网格的拓扑和指标。这些命令会在本地启动一个代理,并打开浏览器访问相应的界面。如果机器里没有kiali或grafana可以在istio的安装目录里找到kiali的yaml文件进行安装,安装命令:kubectl apply -f  ./samples/addons/kiali.yaml。

istioctl dashboard kiali

主界面


添加图片注释,不超过 140 字(可选)


bookinfo应用拓扑图


添加图片注释,不超过 140 字(可选)


  • 进行一些测试,例如使用 istioctl 命令为 bookinfo 应用添加路由规则,或者使用 kubectl 命令为 bookinfo 应用注入故障等。

reviews微服务有3个版本:

  • 版本v1不会调用该ratings服务。
  • 版本v2调用该ratings服务,并将每个评级显示为1到5个黑色星。
  • 版本v3调用该ratings服务,并将每个评级显示为1到5个红星。


  • 使用 istioctl 命令为 bookinfo 应用添加路由规则,使得所有的请求都被路由到 reviews 服务的 v1 版本,该版本不会显示评分信息。路由规则的定义文件位于 istio 的 samples/bookinfo/networking 目录下。

istioctl apply -f samples/bookinfo/networking/virtual-service-all-v1.yaml -n istio-demo


添加图片注释,不超过 140 字(可选)


  • 如果是jason登录,那么就路由给reviews的v2

kubectl apply -f samples/bookinfo/networking/virtual-service-reviews-test-v2.yaml -n istio-demo

此时非jason登录还是v1版本,如果是jason登录的用户访问到的就是v2版本


添加图片注释,不超过 140 字(可选)


  • 使用 kubectl 命令为 bookinfo 应用注入故障,使得访问 ratings 服务时有 50% 的概率返回错误。故障注入的定义文件位于 istio 的 samples/bookinfo/networking 目录下。

kubectl apply -f samples/bookinfo/networking/virtual-service-ratings-test-abort.yaml

  • 使用 kubectl delete 命令删除路由规则或故障注入的定义文件,恢复正常的服务行为。

kubectl delete -f samples/bookinfo/networking/virtual-service-all-v1.yaml -n istio-demo kubectl delete -f samples/bookinfo/networking/virtual-service-reviews-test-v2.yaml -n istio-demo kubectl delete -f samples/bookinfo/networking/virtual-service-ratings-test-abort.yaml


目录
相关文章
|
4天前
|
调度 云计算 芯片
云超算技术跃进,阿里云牵头制定我国首个云超算国家标准
近日,由阿里云联合中国电子技术标准化研究院主导制定的首个云超算国家标准已完成报批,不久后将正式批准发布。标准规定了云超算服务涉及的云计算基础资源、资源管理、运行和调度等方面的技术要求,为云超算服务产品的设计、实现、应用和选型提供指导,为云超算在HPC应用和用户的大范围采用奠定了基础。
179561 18
|
11天前
|
存储 运维 安全
云上金融量化策略回测方案与最佳实践
2024年11月29日,阿里云在上海举办金融量化策略回测Workshop,汇聚多位行业专家,围绕量化投资的最佳实践、数据隐私安全、量化策略回测方案等议题进行深入探讨。活动特别设计了动手实践环节,帮助参会者亲身体验阿里云产品功能,涵盖EHPC量化回测和Argo Workflows量化回测两大主题,旨在提升量化投研效率与安全性。
云上金融量化策略回测方案与最佳实践
|
13天前
|
人工智能 自然语言处理 前端开发
从0开始打造一款APP:前端+搭建本机服务,定制暖冬卫衣先到先得
通义灵码携手科技博主@玺哥超carry 打造全网第一个完整的、面向普通人的自然语言编程教程。完全使用 AI,再配合简单易懂的方法,只要你会打字,就能真正做出一个完整的应用。
9157 23
|
17天前
|
Cloud Native Apache 流计算
资料合集|Flink Forward Asia 2024 上海站
Apache Flink 年度技术盛会聚焦“回顾过去,展望未来”,涵盖流式湖仓、流批一体、Data+AI 等八大核心议题,近百家厂商参与,深入探讨前沿技术发展。小松鼠为大家整理了 FFA 2024 演讲 PPT ,可在线阅读和下载。
4841 12
资料合集|Flink Forward Asia 2024 上海站
|
17天前
|
自然语言处理 数据可视化 API
Qwen系列模型+GraphRAG/LightRAG/Kotaemon从0开始构建中医方剂大模型知识图谱问答
本文详细记录了作者在短时间内尝试构建中医药知识图谱的过程,涵盖了GraphRAG、LightRAG和Kotaemon三种图RAG架构的对比与应用。通过实际操作,作者不仅展示了如何利用这些工具构建知识图谱,还指出了每种工具的优势和局限性。尽管初步构建的知识图谱在数据处理、实体识别和关系抽取等方面存在不足,但为后续的优化和改进提供了宝贵的经验和方向。此外,文章强调了知识图谱构建不仅仅是技术问题,还需要深入整合领域知识和满足用户需求,体现了跨学科合作的重要性。
|
25天前
|
人工智能 自动驾驶 大数据
预告 | 阿里云邀您参加2024中国生成式AI大会上海站,马上报名
大会以“智能跃进 创造无限”为主题,设置主会场峰会、分会场研讨会及展览区,聚焦大模型、AI Infra等热点议题。阿里云智算集群产品解决方案负责人丛培岩将出席并发表《高性能智算集群设计思考与实践》主题演讲。观众报名现已开放。
|
13天前
|
人工智能 容器
三句话开发一个刮刮乐小游戏!暖ta一整个冬天!
本文介绍了如何利用千问开发一款情侣刮刮乐小游戏,通过三步简单指令实现从单个功能到整体框架,再到多端优化的过程,旨在为生活增添乐趣,促进情感交流。在线体验地址已提供,鼓励读者动手尝试,探索编程与AI结合的无限可能。
三句话开发一个刮刮乐小游戏!暖ta一整个冬天!
|
13天前
|
消息中间件 人工智能 运维
12月更文特别场——寻找用云高手,分享云&AI实践
我们寻找你,用云高手,欢迎分享你的真知灼见!
990 66