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安装使用
kiali 是 Istio 可观察性的控制台。通过监视流量来推断拓扑和错误报告,它可以帮助您了解服务网格的结构和运行状态。 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成功运行