关于Sidecar注入以及问题记录
安装 Sidecar注入为了充分利用 Istio 的所有特性,网格中的 Pod 必须运行一个 Istio Sidecar 代理。 下面的章节描述了向 Pod 中注入 Istio Sidecar 的两种方法:使用 istioctl 手动注入或启用 Pod 所属命名空间的 Istio Sidecar 注入器自动注入。 当 Pod 所属命名空间启用自动注入后,自动注入器会使用准入控制器在创建 Pod 时自动注入代理配置。 手动注入直接修改配置,如 Deployment,并将代理配置注入其中。 如果您不确定使用哪一种方法,建议使用自动注入。 自动注入 Sidecar使用 Istio 提供的准入控制器变更 Webhook, 可以将 Sidecar 自动添加到可用的 Kubernetes Pod 中。 虽然准入控制器默认情况下是启用的,但一些 Kubernetes 发行版会禁用这些控制器。 如果出现这种情况,根据指示说明来启用准入控制器。 当您在一个命名空间中设置了 istio-injection=enabled 标签,且 Injection Webhook 被启用后,任何新的 Pod 都有...
EnvoyFilter-ChatGPT译文
介绍 EnvoyFilter 提供了一种机制,可以自定义 Istio Pilot 生成的 Envoy 配置。使用 EnvoyFilter 修改某些字段的值、添加特定过滤器,甚至添加全新的监听器、集群等。这个功能必须小心使用,因为不正确的配置可能会破坏整个网格。与其他 Istio 网络对象不同,EnvoyFilters 是附加应用的。在特定命名空间中给定工作负载可以存在任意数量的 EnvoyFilters 。这些 EnvoyFilters 的应用顺序如下:所有位于配置根命名空间中的 EnvoyFilters ,然后是匹配工作负载命名空间中所有匹配到的 EnvoyFilters。 注意点注意1:此 API 的某些方面与 Istio 网络子系统以及Envoy XDS API 的内部实现密切相关。虽然EnvoyFilter API本身将保持向后兼容性,但通过此机制提供的任何 envoy 配置都应该在Istio代理版本升级时进行仔细监控,以确保已弃用字段被适当地删除和替换。 注意2:当多个Envoy Filters 绑定到给定名称空间中相同工作负载时,在创建时间顺序上按顺序处理所有补丁。...
IDEA 添加 Istio 智能提示
为 JetBrains IDEA 配置 Istio CRD 智能提示,提升 YAML 编写效率
istio问题整理
1. Service 端口命名约束Istio 支持多平台,不过 Istio 和 Kubernetes 的兼容性是最优的,不管是设计理念,核心团队还是社区,都有一脉相承的意思。但 Istio 和 Kubernetes 的适配并非完全没有冲突,一个典型问题就是 Istio 需要 Kubernetes service 按照协议进行端口命名(port naming)。 端口命名不满足约束而导致的流量异常,是使用 mesh 过程中最常见的问题,其现象是协议相关的流控规则不生效,这通常可以通过检查该 port LDS 中 filter 的类型来定位。 原因Kubernetes 的网络对应用层是无感知的,Kubernetes 的主要流量转发逻辑发生在 node 上,由 iptables/ipvs 来实现,这些规则并不关心应用层里是什么协议。 Istio 的核心能力是对 7 层流量进行管控,但前提条件是 Istio 必须知道每个受管控的服务是什么协议,istio 会根据端口协议的不同,下发不同的流控功能(envoy filter),而 Kubernetes 资源定义里并不包括七层协议信...
利用istio实现灰度发布
Kubernetes 中如何实现灰度发布当你Kubernetes 集群中部署业务时,可以利用 Kubernetes 原生提供的灰度发布的方式去上线业务。这种方式是通过在旧版本和新版本的服务之间,定义一个差异化的 Label,根据不同版本之间的公共 Label 负载流量到后端 Pod,最终实现根据 Pod 的副本数控制流量的百分比。 如下图所示:用户定义了两个 Deployment 对象,其中旧版本名为 frontend-stable,有3个副本。新版本为 frontend-canary,有1个副本。此时定义了一个 Service 对象,使用它们之间公共的 Label 进行选择。这就使得用户访问 frontend 这个 Service 时,能以 3:1 的比例同时访问到两个版本。并且还可以通过调整副本数持续控制流量比例,最终达到完整上线。 Kubernetes 默认的实现方式在简单的部署场景下很有效,但是在一些复杂场景中,仍然会有较大的局限,如: 业务配置自动伸缩后,会直接影响灰度发布的流量比例 低百分比的流量控制占用资源高,如 1 % 的流量到达新版本,则至少需要 100 ...
单环境,多分支并行开发方案(流量染色/istio)
需求 同一套环境, 两个微服务serviceA和serviceB, 且分别有2个版本original, v1 调用链路: serviceA -> serviceB 具体分为以下几种情况 如果serviceA和serviceB都有v1版本 serviceA(v1) -> serviceB(v1) 如果serviceA有v1版本, serviceB没有 serviceA(v1) -> serviceB(original) 如果serviceA没有v1版本, 而serviceB有 serviceA(original) -> serviceB(v1) 技术方案流量染色 什么是流量染色 在元数据中心(这里可以代指我们的k8s集群),维护每个环境对应的服务列表;在流量的入口处,对请求添加标识;在基础框架层,对流量标识进行解析、透传 和 服务路由。 实际操作一般是在我们的 HTTP 请求中,加入对应环境,用户等变量标识,使请求可以根据这些标识做分类,转发等操作 为什么需要流量染色 使不同的服务,共享环境 可以本地调试特定的服务,而不阻碍服务的正常运行 ...
查看 Envoy 访问日志
Istio Envoy 访问日志的配置与查看方法,包括全局配置、动态调整和日志字段详解
记录jaeger的安装及简单使用
前言Jaeger 是一个开源的端到端的分布式跟踪系统, 允许用户在复杂的分布式系统中监控和排查故障。 利用Rancher的安装方式安装cert-manager参考文档: jaeger requires:https://www.jaegertracing.io/docs/1.49/operator/#prerequisite cmctl(the tool which is to manage and verify cert-manager) install:https://cert-manager.io/v1.6-docs/usage/cmctl/#installation cert-manager verify:https://cert-manager.io/v1.6-docs/installation/verify/ 安装cert-manager:https://cert-manager.io/v1.6-docs/installation/kubectl/ 默认静态安装cert-manager:https://cert-manager.io/v1.6-docs/installa...
