首页 > 其他分享 >Istio实战-01.环境部署

Istio实战-01.环境部署

时间:2024-03-22 16:31:23浏览次数:24  
标签:实战 kubectl 01 system 部署 Istio istio 1.20

目录

转载请注明出处


环境说明

  • Centos 7.9
  • Docker 24.0.7
  • Kubernetes 1.23.5

操作说明

以下指令全部在Kubernetes 的 Master节点执行

下载Istio

1.转到 Istio 发布(https://github.com/istio/istio/releases/tag/1.20.3) 页面,下载针对您操作系统的安装文件, 或使用以下命令下载并提取最新版本(Linux 或 macOS):

curl -L https://istio.io/downloadIstio | sh -
# 上面的命令下载最新版本(用数值表示)的 Istio。 可以给命令行传递变量,用来下载指定的、不同处理器体系的版本。 
# 例如,要为 x86_64 架构下载 Istio 1.20.3,请运行:
curl -L https://istio.io/downloadIstio | ISTIO_VERSION=1.20.3 TARGET_ARCH=x86_64 sh -

2.转到 Istio 包目录。例如,如果包是 istio-1.20.3:

cd istio-1.20.3

安装目录包含:

  • samples/ 目录下的示例应用程序
  • bin/ 目录下的 istioctl 客户端二进制文件。

3.将 istioctl 客户端添加到路径(Linux 或 macOS):

export PATH=$PWD/bin:$PATH

安装Istio

  • 1.采用官方的demo配置组合安装
istioctl install --set profile=demo -y

# 完成后出现以下提示
# ✔ Istio core installed
# ✔ Istiod installed
# ✔ Egress gateways installed
# ✔ Ingress gateways installed
# ✔ Installation complete
  • 2.给命名空间添加标签,指示 Istio 在部署应用的时候,自动注入 Envoy 边车代理:
kubectl label namespace default istio-injection=enabled

# 执行成功后出现以下提示
# namespace/default labeled

部署应用

在这里插入图片描述

1.使用官方的Bookinfo(https://istio.io/latest/zh/docs/examples/bookinfo/)示例进行部署, 下载的安装包中已经包含这部分内容

[root@master istio-1.20.3]# kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml
# 执行完成后如下图

在这里插入图片描述

有一些镜像需要拉取, 因此部署时需要花一点时间, 可以通过以下指令查询, 等待所有的pod和service创建成功

kubectl get pods,svc
# 下图所示则代表部署成功
# 当每个 Pod 准备就绪时,Istio边车将伴随应用一起部署

在这里插入图片描述

对外暴露应用程序

此时,BookInfo 应用已经部署,但还不能被外界访问。 要开放访问,您需要创建 Istio 入站网关(Ingress Gateway), 它会在网格边缘把一个路径映射到路由。

  • 1.把应用关联到 Istio 网关:
kubectl apply -f samples/bookinfo/networking/bookinfo-gateway.yaml

# 执行后出现以下提示
# gateway.networking.istio.io/bookinfo-gateway created
# virtualservice.networking.istio.io/bookinfo created
  • 2.确保配置文件没有问题:
istioctl analyze
 
# 执行后出现以下提示
# ✔ No validation issues found when analyzing namespace: default.
  • 3.查看istio-ingressgateway暴露的端口
[root@master istio-1.20.3]# kubectl get svc istio-ingressgateway -n istio-system


# 可以看到istio-ingressgateway的80端口映射的NodePort为58304
NAME                   TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)                                                                      AGE
istio-ingressgateway   LoadBalancer   10.105.170.54   <pending>     15021:18854/TCP,80:58304/TCP,443:42985/TCP,31400:62338/TCP,15443:51096/TCP   16m
  • 4.获取Bookinfo的外部访问路径
# 复制以下命令, 粘贴到SSH窗口, 将获取到访问的地址, 如下图
export INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="http2")].nodePort}')
export INGRESS_HOST=$(kubectl get po -l istio=ingressgateway -n istio-system -o jsonpath='{.items[0].status.hostIP}')
export GATEWAY_URL=$INGRESS_HOST:$INGRESS_PORT
echo "http://$GATEWAY_URL/productpage"

在这里插入图片描述

  • 5.使用浏览器访问Bookinfo地址
    访问地址(由上一步获取到的): http://192.168.21.224:58304/productpage
    在这里插入图片描述

至此 Istio 和 Bookinfo 示例应用已经部署完成并可以访问

部署仪表板

Istio 和几个遥测应用做了集成。 遥测能帮您了解服务网格的结构、展示网络的拓扑结构、分析网格的健康状态。

使用下面说明部署 Kiali 仪表板、 以及 PrometheusGrafana、 还有 Jaeger

  • 1.安装 Kiali 和其他插件,等待部署完成。
[root@master istio-1.20.3]# kubectl apply -f samples/addons

在这里插入图片描述

  • 2.查看组件是否部署完成
# 部署需要拉取镜像, 当执行以下命令发现所有组件都部署成功即可
kubectl -n istio-system get svc,po

在这里插入图片描述

  • 3.设置代理暴露kiali允许外部访问
# kiali默认的服务类型为ClusterIP, 外部不可访问
# 开启外部访问的方式有很多
# 例如: 使用 Ingress 代理
# 例如: 使用 kubectl -n istio-system edit service kiali 命令修改服务类型为NodePort
# 例如: 使用 kubectl port-forward --address 0.0.0.0 -n istio-system service/kiali 32001:20001 进行转发

# 这里临时使用了端口转发的方式
[root@master istio-1.20.3]# kubectl port-forward --address 0.0.0.0 -n istio-system service/kiali 32001:20001

也可以创建istio gateway来实现外部访问

  • 4.使用浏览器访问kiali

访问地址为(宿主机Node的IP:转发的端口): 192.168.21.223:32001\

在这里插入图片描述
在这里插入图片描述

  • 5.生成测试数据

可以看到虽然kaili的页面我们能访问, 但是里面是没有监控数据的, 要查看追踪数据,必须向服务发送请求。请求的数量取决于 Istio 的采样率。 采样率在安装 Istio 时设置,默认采样速率为 1%。在第一个跟踪可见之前,您需要发送至少 100 个请求。 使用以下命令向 productpage 服务发送 100 个请求:

# 执行以下命令发送100次请求
# $GATEWAY_URL为上面部署的Bookinfo访问的地址

for i in $(seq 1 100); do curl -s -o /dev/null "http://$GATEWAY_URL/productpage"; done

# for i in $(seq 1 100); do curl -s -o /dev/null "http://192.168.21.223:58304/productpage"; done

当命令执行完之后, 刷新页面再次查看, 就可以看到追踪数据了
在这里插入图片描述

卸载

如果不再需要istio的时候, 可以按照以下方式进行卸载

删除BookInfo应用

cd istio-1.20.3
# 执行卸载脚本
sh samples/bookinfo/platform/kube/cleanup.sh

删除Istio

Istio 卸载程序按照层次结构逐级的从 istio-system 命令空间中删除 RBAC 权限和所有资源。对于不存在的资源报错,可以安全的忽略掉,毕竟它们已经被分层地删除了。

cd istio-1.20.3
# 卸载监控组件
kubectl delete -f samples/addons

# 卸载istio
# 若终端关闭过, 先执行以下命令 
# cd istio-1.20.3
# export PATH=$PWD/bin:$PATH
istioctl uninstall -y --purge 

删除命名空间

 # istio-system 默认情况下并不会被移除。 不需要的时候,使用下面命令移除它:
 kubectl delete namespace istio-system

删除Envoy 边车代理的标签

kubectl label namespace default istio-injection-



参考链接

https://istio.io/latest/zh/docs/setup/getting-started/
https://istio.io/latest/zh/docs/examples/bookinfo/

标签:实战,kubectl,01,system,部署,Istio,istio,1.20
From: https://blog.csdn.net/qq_32060101/article/details/136942941

相关文章

  • 【转载】解决 安装或卸载软件时报错Error 1001 的问题
    卸载或安装程序时出错1001:错误1001可能发生在试图更新、修复或卸载windowsos中的特定程序时。此问题通常是由于程序的先前安装损坏而引起的。错误“1001”通常会遇到,因为程序的先前安装被破坏或者由于Windows安装不处于正常状态(例如,注册表已经被恶意软件修改)。在这种情况......
  • 「POI2017」 Sabotaż
    题意给定一棵大小为\(n\)的树,树上有一个未知节点被染色。对于任意一个节点,若它的子树中被染色的比例超过实数\(x\),则它也被染色。给定整数\(k\),求出最小的\(x\),使得被染色节点最多不超过\(k\)个。分析比较明显的树形DP,可以在DFS里面求出每个节点的子树大小\(siz\)。......
  • Windows server 系统 AD域、加入域——无法加入 Windows Server 2012 R2 或 Windows 7
    目录前言症状原因解决方案更多信息前言       大家好,我是你可知这世上再难遇我 创作者,最近工作中做项目的时候,做Windows服务器数据迁移,前期得加入前服务器的AD域控中,经过一天从早到晚,最终在下班后找到解决方法,现在分享一下我当时最后的解决问题的方式!......
  • C# 01 画面跳转、消息框
    一、2个画面互相跳转form1:privatevoidlabel1_Click(objectsender,EventArgse){//次画面を非表示隐藏此画面显示2画面this.Visible=false;Form2f2=newForm2();f2.Show();}form2:privatevoidbutton2_Cli......
  • 软件测试的学习随笔001
    T01:我理解的软件测试流程:1.需求分析阶段:测试团队与业务团队和开发团队合作,了解需求与功能,确定测试范围与重点,分配好产品计划的排期。2.测试计划阶段:制定测试计划,包括测试目标、测试策略、资源需求、进度安排等等。3.测试设计阶段:根据需求和设计文档编写测试用例,设计测试数据。......
  • LDA主题词提取 完整实战代码 详细代码数据
     importpandasaspdfromgensim.modelsimportLdaModelfromgensim.corporaimportDictionaryfromwordcloudimportWordCloudimportmatplotlibimportmatplotlib.pyplotaspltmatplotlib.rcParams['font.sans-serif']=['SimHei']matpl......
  • Python实战:爬取小红书-采集笔记详情
    上一篇文章发出后,有读者问能不能爬到小红书笔记详情数据,今天他来了。一、先看效果程序输入:在一个txt文件内粘贴要爬取的笔记链接,每行放1个链接。程序输出:输出是一个所有笔记详情数据的excel表格,包含”采集日期、作者、笔记标题、发布日期、IP属地、点赞数、收藏数、......
  • 备考ICA----Istio实验4---使用 Istio 进行金丝雀部署
    备考ICA----Istio实验4—使用Istio进行金丝雀部署上一个实验已经通过DestinationRule实现了部分金丝雀部署的功能,这个实验会更完整的模拟展示一个环境由v1慢慢过渡到v2版本的金丝雀发布.1.环境清理kubectldeletegw/helloworld-gatewayvs/helloworlddr/helloworld......
  • TorchV的RAG实践分享(二):基于ElasticSearch的混合检索实战&原理分析
    概述在昨天员外分享的《TorchV的RAG实践分享(1)——RAG的定位、技术选型和RAG技术文章目录》一文中介绍了TorchV的由来,也分享了我们的几个基线产品和应用架构的方向,我们想的是在创业的过程中,将我们自己的一些产品理念、技术心得都通过公众号发文的方式分享出来,更多的和行业内的专家......
  • 《ARM汇编与逆向工程》读书心得与实战体验
     ......