使用 Istio 实现应用迁移

背景:当前环境中有 Cluster A 和 Cluster B,各自部署了相同的应用,且该应用有两个域名用于处理不同的请求。目前,这两个域名的请求都由 Cluster A 中的应用处理。为进行应用迁移,现希望将域名 A 的请求继续由 Cluster A 处理,而域名 B 的请求则切换至由 Cluster B 中的应用来处理。

由于目前的流量处理都是由 Istio 负责,所以可以通过 ServiceEntry 来实现此需求。

Read more

Istio 使用随记

Istio 是一种开源服务网格,使用代理拦截所有网络流量,可根据配置提供广泛的应用程序感知功能。

常见的 CRD:

  1. VirtualService:定义服务间或服务至外部流量的路由规则,支持请求匹配、路由选择、流量分割、重试、超时等策略。
  2. DestinationRule:定义目标服务的流量策略,比如负载均衡、连接池、TLS 配置等。每个目标服务的流量策略通过 DestinationRule 配置后,对所有请求生效。
  3. Gateway:配置边缘网关的入口流量规则,例如定义外部流量如何进入服务网格。它可以用于 HTTP、HTTPS、TLS 和 TCP 流量。
  4. ServiceEntry:将外部服务引入到 Istio 网格中,允许 Istio 管理和监控这些服务的流量。例如,可以使用 ServiceEntry 来引入外部 API,使网格中的服务可以透明地与外部服务交互。
Read more

RKE2 Cilium without kube-proxy

集群如果使用 Cilium 作为 cni 的话,可以实现 Kubernetes Without kube-proxy。

Cilium 的 kube-proxy 替代程序依赖于 socket-LB 功能,需要使用 v4.19.57、v5.1.16、v5.2.0 或更高版本的 Linux 内核。Linux 内核 v5.3 和 v5.8 增加了其他功能,Cilium 可利用这些功能进一步优化 kube-proxy 替代实现。

已有的 RKE2 Cilium 集群,可以通过下面的步骤开启此功能。

Read more

RKE ETCD 出现 request cluster id mismatch 问题修复记录

当集群中三个 Control Plane 节点的 ETCD 出现 request cluster ID mismatch 问题时,可以保留一个 ETCD 实例通过 --force-new-cluster 参数重建集群,然后再将其他两个节点的 ETCD 实例加入集群。

Read more