ISTIO学习笔记(3)-安装istio
版权声明 本站原创文章 由 萌叔 发表
转载请注明 萌叔 | https://vearne.cc
注意: 本文涉及的服务版本
k8s: v1.18.2
istio: 1.7.3
1. 前言
警告:本文仅用于萌叔自己总结之用,对其它人而言可能毫无营养,没有阅读价值。
最近重新部署了一套k8s + istio的集群,在安装istio遇到了些问题,简单的记录一下。
2. 安装
istio 1.7.3 不再支持helm方式安装。仅支持istioctl和Operator模式进行安装。
- istioctl模式 使用命令行的方式与k8s集群进行交互
- Operator模式 会启动一个IstioOperator容器(常驻,不退出) 容器,然后用户可以通过
kubectl
提交配置文件给IstioOperator容器,由IstioOperator容器来完成istio核心模块或者相关插件的安装
2.1 istioctl模式安装
2.1.1 下载
curl -L https://istio.io/downloadIstio | sh -
cd istio-1.7.3
- samples/ 目录下,有示例应用程序
- bin/ 目录下,包含 istioctl 的客户端文件。istioctl 工具用于手动注入 Envoy sidecar 代理。
- manifests/profiles 目录中有具体的配置文件
2.1.2 将 istioctl 客户端路径增加到 path 环境变量中
export PATH=$PWD/bin:$PATH
2.1.3 显示可用配置文件的列表
$ istioctl profile list
Istio configuration profiles:
remote
separate
default
demo
empty
minimal
2.1.4 安装
不同的配置文件区别在于安装的模块有多有少,建议使用default
配置
istioctl manifest install --set profile=default
安装完成以后
╰─$ kubectl get pod -n istio-system
NAME READY STATUS RESTARTS AGE
istio-ingressgateway-579b9c8998-47mjg 1/1 Running 0 20h
istiod-fb4fbff6b-2nb9r 1/1 Running 0 21h
Pilot
应该是集成到istiod
中了,这里简单说下ingressgateway
,与之对应的还有egressgateway
ingressgateway
是整个网格的入口流量网关,可以执行负载均衡、重试、超时等逻辑,具体实现是envoy
egressgateway
是整个网格的出口流量网关,可以执行负载均衡、重试、超时等逻辑,具体实现是envoy
ingressgateway
针对的是网格内部的服务,egressgateway
针对的是网格外部的服务。
使用方法参考 萌叔的文章 ISTIO学习笔记(1)-配置GATEWAY
如果网格外部的请求经过 --> istio-ingressgateway --> 网格内部的服务且配置了重试、超时等路由策略,那么这些策略都是生效的。
重要
前面有几次安装都出现了问题,原因是笔者重启了集群
报的错误形如:
pod报如下错误,
Readiness probe failed: Get http://172.20.3.6:15021/healthz/ready: dial tcp 172.20.3.6:15021: connect: connection refused」
观察日志
kubectl logs dm-backend-6f8d445b6d-9mpwb -c istio-proxy -n default -f
发现是pilot-agent
与pilot
无法连通,导致envoy启动异常,进而导致Ready
检查失败。初步怀疑与停止、启动时,集群组件执行顺序有关,萌叔没有做进一步的排查。另外单纯重启部分Node节点和etcd节点都没有发现问题。