istio安装部署总结

istio安装部署总结

大纲

  • istio基础概念
  • 版本选择
  • 安装istio
  • 核心主件
  • 卸载istio
  • kiali安装

istio基础概念

https://istio.io/latest/zh/docs/ 中文文档

istio是一个服务治理平台,治理服务间的访问,(例如流量控制,安全策略,限流机制等)只要服务间产生访问就可以进行治理,不关注服务是否为微服务,也不要求服务的代码进行微服务化。

版本选择

安装istio前需要对比版本,istio与k8s有深度的绑定,istio与 k8s版本对应如下

https://istio.io/latest/docs/releases/supported-releases/#support-status-of-istio-releases 版本对应说明

由于本地的k8s集群版本为1.17 故本次安装使用Istio 1.9.x

k8s 1.17 对应 Istio 1.9.x

复制代码
下载地址
https://github.com/istio/istio/releases/tag/1.9.9
https://github.com/istio/istio/releases/tag/1.9.7

下载完成后得到 istio-1.9.7-linux-amd64.tar.gz 解压后得到istioctl

将istioctl命令复制到/usr/bin文件夹即可

安装方式

istioctl install配置说明

https://istio.io/latest/zh/docs/setup/install/istioctl/ 官方安装文档说明

最简单的安装方式是直接使用istioctl install命令进行安装

复制代码
istioctl install --set profile=demo
使用--set 可以指定安装时的参数
例如 
--set profile=demo 表示指定配置类型为demo

istio profile配置类型有如下类型

  • default :根据 IstioOperator API 的默认设置启动组件。 建议用于生产部署和 Multicluster Mesh 中的 Primary Cluster。

    您可以运行 istioctl profile dump 命令来查看默认设置。

  • demo:这一配置具有适度的资源需求,旨在展示 Istio 的功能。 它适合运行 Bookinfo 应用程序和相关任务。 这是通过快速开始指导安装的配置。

  • minimal:与默认配置文件相同,但只安装了控制平面组件。 它允许您使用 Separate Profile 配置控制平面和数据平面组件(例如 Gateway)。

  • remote:配置 Multicluster Mesh 的 Remote Cluster。

  • empty:不部署任何东西。可以作为自定义配置的基本配置文件。

  • preview:预览文件包含的功能都是实验性。这是为了探索 Istio 的新功能。不确保稳定性、安全性和性能(使用风险需自负)。

下图表示不同的配置文件会去安装的istio的组件

https://istio.io/latest/zh/docs/setup/additional-setup/config-profiles/ 安装配置文件官方说明文档

--set 还可以配置其他参数

  • --set meshConfig.accessLogFile=/dev/stdout 启动访问日志
  • --set hub=registry-1.docker.io/istio 配置根镜像 可以是自己搭建的私有镜像仓库,可以将其他渠道获得的镜像放入自己的registry中,方便使用

其他安装配置说明 https://istio.io/v1.9/docs/reference/config/istio.operator.v1alpha1/#IstioOperatorSpec

安装istio

使用 istioctl install --set profile=demo命令安装istio 此时会安装Istiod,ingressgateway和egressgateway,

复制代码
istioctl install --set profile=demo

安装完成后可以看到

核心主件

  • istiod istiod
  • istio ingress gateway
  • istio egress gateway

istiod

istiod中的'd' 代表 daemon

复制代码
istiod 将老版本中需要的 Pilot,Galley,Citadel 和 sidecar 注入器执行的功能统一为一个二进制文件

参考资料 https://istio.io/latest/zh/blog/2020/istiod/

istio ingress gateway

istio ingress gateway是进入集群的大门,外部要访问网格内部需要从这个ingress gateway进入

istio egress gateway

istio egress gateway是出去集群的大门。流量出去的时候走这

卸载istio

复制代码
istioctl x uninstall --purge

kiali安装使用

kialiIstio 可观察性的控制台。通过监视流量来推断拓扑和错误报告,它可以帮助您了解服务网格的结构和运行状态。 Kiali 提供了详细的的指标并与 Grafana 进行基础集成,可以用于高级查询。通过与 Jaeger 来提供分布式链路追踪功能。

官方资料 https://istio.io/latest/zh/docs/ops/integrations/kiali/

Kiali提供以下功能:

  • 1 分布式跟踪
  • 2 服务拓扑图
  • 3 服务发现
  • 4 健康检查
  • 5 指标度量收集
  • 6 配置校验

kiali安装

在github上找到对应版本的istio的源码,例如当前安装的istio版本为1.9.7

复制代码
istio-1.9.x版本
https://github.com/istio/istio/tree/release-1.9/samples/addons

配置文件说明

  • kiali.yaml kiali安装配置文件
  • jaeger.yaml jaeger分布式链路追踪安装配置文件
  • prometheus.yaml prometheus监控安装配置文件
  • grafana.yaml grafana相关配置,可以不部署

安装时先修改kiali.yaml 中service的配置,将service的类型改为NodePort 这样可以外网访问

复制代码
apiVersion: v1
kind: Service
metadata:
  name: kiali
  namespace: istio-system
  labels:
    ... 省略
spec:
  ports:
  - name: http
    protocol: TCP
    port: 20001
    targetPort: 20001
    nodePort:  20001
  - name: http-metrics
    protocol: TCP
    port: 9090
    targetPort: 9090
    nodePort:  9090
  selector:
    app.kubernetes.io/name: kiali
    app.kubernetes.io/instance: kiali-server
  type: NodePort  

最小安装只需要安装kiali.yaml prometheus.yaml jaeger.yaml

复制代码
kubectl apply -f kiali.yaml -n istio-system
kubectl apply -f prometheus.yaml -n istio-system
kubectl apply -f jaeger.yaml -n istio-system


安装完成后可以看下

访问 http://192.168.0.160:20001/ kiali成功运行

相关推荐
梁萌32 分钟前
Linux安装BiliNote
linux·运维·服务器·docker·bilinote
行思理2 小时前
docker新手教程
运维·docker·容器
莫陌尛.5 小时前
docker安装中间件
docker·中间件·容器
掘根7 小时前
【Docker】docker run
云原生·eureka
tuokuac7 小时前
虚拟机挂起,重启后主机连接不上虚拟机docker中的mysql?(docker网络状态假死)
网络·mysql·docker
集智飞行9 小时前
docker login方法
运维·docker·容器
不开心就吐槽11 小时前
docker-compose方式快速安装MySQL
运维·docker·容器
芥子沫11 小时前
Docker安装思源笔记&使用指南
笔记·docker·容器·思源笔记
行思理11 小时前
macos 下 docker使用方法 新手教程
macos·docker·容器
团儿.12 小时前
Docker Swarm:打造高效、可扩展的容器编排引擎,引领微服务新纪元(上)
docker·微服务·容器·docker-swarm集群