Fork me on GitHub

版权声明 本站原创文章 由 萌叔 发表
转载请注明 萌叔 | 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

如果网格外部的请求经过 --> 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-agentpilot无法连通,导致envoy启动异常,进而导致Ready检查失败。初步怀疑与停止、启动时,集群组件执行顺序有关,萌叔没有做进一步的排查。另外单纯重启部分Node节点和etcd节点都没有发现问题。

参考资料

  1. istio安装指南
  2. Operator pattern

请我喝瓶饮料

微信支付码

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注