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成功运行

相关推荐
雪域迷影6 小时前
PostgreSQL Docker Error – 5432: 地址已被占用
数据库·docker·postgresql
福大大架构师每日一题7 小时前
22.1 k8s不同role级别的服务发现
容器·kubernetes·服务发现
莹雨潇潇7 小时前
Docker 快速入门(Ubuntu版)
java·前端·docker·容器
weixin_453965008 小时前
[单master节点k8s部署]30.ceph分布式存储(一)
分布式·ceph·kubernetes
weixin_453965008 小时前
[单master节点k8s部署]32.ceph分布式存储(三)
分布式·ceph·kubernetes
tangdou3690986558 小时前
1分钟搞懂K8S中的NodeSelector
云原生·容器·kubernetes
Lansonli9 小时前
云原生(四十一) | 阿里云ECS服务器介绍
服务器·阿里云·云原生
Dylanioucn10 小时前
【分布式微服务云原生】掌握分布式缓存:Redis与Memcached的深入解析与实战指南
分布式·缓存·云原生
tangdou36909865511 小时前
Docker系列-5种方案超详细讲解docker数据存储持久化(volume,bind mounts,NFS等)
docker·容器
later_rql11 小时前
k8s-集群部署1
云原生·容器·kubernetes