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


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完成

相关推荐

  1. 服务治理服务安全详解

    2024-05-16 07:44:09       31 阅读
  2. 服务服务治理(Nacos注册中心)

    2024-05-16 07:44:09       10 阅读
  3. Istio 部署 Spring Coud 服务应用

    2024-05-16 07:44:09       17 阅读
  4. 服务治理服务治理中的服务回退机制

    2024-05-16 07:44:09       29 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-05-16 07:44:09       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-05-16 07:44:09       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-05-16 07:44:09       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-05-16 07:44:09       20 阅读

热门阅读

  1. uni-app 路由跳转方式

    2024-05-16 07:44:09       16 阅读
  2. uniapp外部scss文件使用scss语法不生效.

    2024-05-16 07:44:09       9 阅读
  3. K8S搭建

    K8S搭建

    2024-05-16 07:44:09      13 阅读
  4. 命令模式(命令)

    2024-05-16 07:44:09       10 阅读
  5. 关于数据结构的整理

    2024-05-16 07:44:09       11 阅读
  6. android之instrumentation的简单记录

    2024-05-16 07:44:09       11 阅读
  7. OpenAI 推出 GPT-4o,慢其实是快

    2024-05-16 07:44:09       12 阅读