当前位置: 首页 > article >正文

Istio基本概念及部署

一、Istio架构及组件

Istio服务网格在逻辑上分为数据平面和控制平面。

  • 控制平面:使用全新的部署模式:Istiod,这个组件负责处理Sidecar注入,证书颁发,配置管理等功能,替代原有组件,降低复杂度,提高易用性。

       - Polit:策略组件,为proxy提供服务发现、智能路由、错误处理等

       - Citadel:安全组件,提供证书下发、加密通信、控制访问

       - Galley:配置管理、验证、分发

  • 数据平面: 有一组proxy组成,这些proxy 负责所有微服务网络通信,实现高效转发和策略。使用envoy实现,envoy是一个基于C++实现的L4/L7proxy转发器,是Istio在数据平面唯一的组件。

二、Istio基本概念

istio有四个配置资源,落地所有流量管理需求:

  • VirtualService(虚拟服务):实现服务请求路由规则的功能
  • DestinationRule(目标规则):实现目标服务的负载均衡、服务发现、故障处理和故障注入的功能。
  • Gateway(网关):让服务网格内的服务,可以被全世界看到。
  • ServiceEntry(服务入口):允许管理网格外的服务流量

三、 Istioctl下载

Istio 1.23 支持以下这些 Kubernetes 版本: 1.27, 1.28, 1.29, 1.30。

1.21-1.23.2之间貌似有bug,Sidercar创建pod会失败:

官网地址:Istio

下载地址:https://github.com/istio/istio/releases

经过测试:k8s-1.28.1 匹配istio1.20.0最合适。

最新版下载:

# curl -L https://istio.io/downloadIstio | sh -
下载指定版本:

# curl -L https://istio.io/downloadIstio | ISTIO_VERSION=1.20.0 TARGET_ARCH=x86_64 sh -

# cp /opt/istio-1.20.0/bin/istioctl /usr/bin

也可以设置变量:

# export PATH="$PATH:/opt/istio-1.20.0/bin"

四、查看配置文件使用的名称

#Ambient 配置文件旨在帮助您开始使用 Ambient 模式。
    ambient
#根据 IstioOperator API 的默认设置来启用组件。 建议用于生产部署和多集群网格 中的主集群。
    default
#这一配置具有适度的资源需求,旨在展示 Istio 的功能。 它适合运行 Bookinfo 应用程序和相关任务
    demo
#不部署任何内容。可以作为自定义配置的基本配置文件。
    empty
#与默认配置文件相同,但只安装了控制平面组件。 它允许您使用单独的配置文件 配置控制平面和数据平面组件
    minimal
    openshift
#预览文件包含的功能都属于实验性阶段。该配置文件是为了探索 Istio 的新功能。 确保稳定性、安全性和性能(使用风险需自负)。
    preview
#用于配置一个从集群, 这个从集群由外部控制平面管理, 或者由多集群网格的 主集群中的控制平面管理
    remote

    stable

#说明
https://istio.io/latest/zh/docs/setup/additional-setup/config-profiles/#:~:text=%E6%9C%AC%E9%A1%B5%E9%9D%A2%E6%8F%8F%E8%BF%B0%E4%BA%86%E5%9C%A8%20%E5%AE%89%E8%A3%85%20Istio%20%E6%97%B6%E6%89%80%E8%83%BD%E5%A4%9F%E4%BD%BF%E7%94%A8%E7%9A%84%E5%86%85%E7%BD%AE%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E3%80%82%20%E8%BF%99%E4%BA%9B%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E6%8F%90%E4%BE%9B%E4%BA%86%E5%AF%B9%20Istio%20%E6%8E%A7%E5%88%B6%E5%B9%B3%E9%9D%A2%E5%92%8C%20Istio,%E6%95%B0%E6%8D%AE%E5%B9%B3%E9%9D%A2%20Sidecar%20%E7%9A%84%E5%AE%9A%E5%88%B6%E5%86%85%E5%AE%B9%E3%80%82%20%E6%82%A8%E5%8F%AF%E4%BB%A5%E4%BB%8E%E5%85%B6%E4%B8%AD%E4%B8%80%E4%B8%AA%20Istio%20%E5%86%85%E7%BD%AE%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E5%BC%80%E5%A7%8B%E5%85%A5%E6%89%8B%EF%BC%8C%20%E7%84%B6%E5%90%8E%E6%A0%B9%E6%8D%AE%E6%82%A8%E7%9A%84%E7%89%B9%E5%AE%9A%E9%9C%80%E6%B1%82%E8%BF%9B%E4%B8%80%E6%AD%A5%20%E8%87%AA%E5%AE%9A%E4%B9%89%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E3%80%82

五、部署

自定义参数使用--set:

此 API 中的配置参数能用命令行选项 --set 独立设置。 例如,要在 default 配置档中启动调试日志特性,使用这个命令:

$ istioctl install --set values.global.logging.level=debug

其他方法参见:

Istio / 定制安装配置

安装命令:

# /istio-1.20.0/bin/istioctl install

这里使用默认安装:

# istioctl install

这里是镜像下载不下来,可以手动下载,然后tag成需要的镜像即可:

# docker pull dhub.kubesre.xyz/istio/pilot:1.20.0

# docker tag dhub.kubesre.xyz/istio/pilot:1.20.0 docker.io/istio/pilot:1.20.0

# docker pull dhub.kubesre.xyz/istio/proxyv2:1.20.0

# docker tag dhub.kubesre.xyz/istio/proxyv2:1.20.0

# #生成部署清单:

# istioctl manifest generate > generate.yaml

## 卸载

# istioctl manifest generate | kubectl delete -f -

六、Sidercar注入

手动注入《默认命名空间》:

或者;

# istioctl kube-inject -f httpbin-nodeport.yaml |kubectl apply -f -

自动注入:

# kubectl label namespace crm istio-injection=enabled   关闭:enabled改成disabled

# kubectl apply -f httpbin-gateway.yaml

IngressGateway NodePort访问地址:http://x.x.x.x:port

示例:

# kubectl label namespace crm istio-injection=enabled

如果是现有应用的容器,要么删除重建,要么重新部署。就会生效。

# kubectl apply -f httpbin-gateway.yaml

从gateway访问:

从httpbin进行访问:

访问流程图:

用户-->NodePort-->IngressGateway-->istio-proxy<-->httpbin

查看:

七、istio与k8s集成流程


http://www.kler.cn/a/376314.html

相关文章:

  • 计算机毕业设计Hadoop+大模型高考推荐系统 高考分数线预测 知识图谱 高考数据分析可视化 高考大数据 大数据毕业设计 Hadoop 深度学习
  • Android @JvmOverloads
  • 基于双向长短期记忆网络(BiLSTM)的时间序列数据预测,15个输入1个输出,可以更改数据集,MATLAB代码
  • 三、k8s快速入门之Kubectl 命令基础操作
  • 【golang/navmesh】使用recast navigation进行寻路
  • Python WordCloud库与jieba分词生成词云图的完整指南
  • Vue Router 中 router、route 和 routes 的区别 - 2024最新版前端秋招面试短期突击面试题【100道】
  • 深度学习速通系列:如何使用bert进行超长中文文本命名实体识别
  • Jupyter lab 打开时默认使用 Notebook 而不是浏览器
  • springboot-starter 整合feignClient
  • 方差与协方差
  • 【销帮帮-注册/登录安全分析报告-试用页面存在安全隐患】
  • C++学习大纲
  • vue和django接口联调
  • Go Modules和 雅典项目
  • C++ ----------- 栈和队列
  • 【小白学机器学习25 】 用交叉表去理解自由度的计算
  • Markdown自学第二课之记笔记——HTML第一弹
  • go语言gin框架平滑关闭——思悟项目技术2
  • 【Spark中创建RDD的两种方式】Spark中如何获取sc对象、以及创建RDD的两种方式
  • 异步编程的利之Future模式深入解析(In Depth Analysis of Future Patterns)
  • 数据可视化组件DataV在Vue3中的基本使用
  • 【GIN】go-gin 中 validator 验证功能
  • 【element el-date-picker限制时间选择范围】
  • 鸿蒙生态:机遇与挑战
  • 一对一直播源码搭建部署环境说明