首页 > 解决方案 > 主动/被动路由具有多个后端的无头服务

问题描述

我正在为 kube 中的应用程序设置主动/被动路由,这超出了典型的 K8S 用例。我正在尝试在具有多个后端的无头服务中查找与路由或负载平衡相关的配置。到目前为止,我已经设法将流量路由到我的后端,但是我需要确保流量被正确路由。该应用程序需要 TCP 连接,并且主/从实例具有不同的配置(需要不同的部署对象)。如果发生故障转移,一旦恢复,路由预计会返回到主节点。

路由始终按预期运行,但没有文档或配置可以说明这一点。我发现文档说明它应该是循环或随机的,因为 dns 条目的顺序。问题的关键是:我可以依赖这种行为吗?由于这是未记录的并且未明确配置,我担心它会在未来的版本或部署中发生变化。

我将 Rancher 与运河网络层一起使用。我通读了印花布和法兰绒文档。Endpoints/endpoint slice 和 dns 条目都没有指示任何路由顺序。

目前,该设置有两个由无头服务选择的部署。部署的 pod 在部署 1 中具有主机名 input-primary,在部署 2 中具有 input-secondary。我可以通过 dns 作为 input-primary.myservice 或 input-secondary.myservice 访问它们中的任何一个。

入口控制器 tcp-services 配置映射有一个我的服务条目:

25252:默认/我的服务:9999

以及 k8s 配置的精简版:

ApiVersion: v1
kind: Service
metadata:
  name:myservice
spec:
  clusterIP: None
  ports:
  - name: input
    port: 9999
selector:
  app: myapp
  type: ClusterIP
----
apiVersion: apps/v1beta2
kind: Deployment
metadata:
  labels:
    app: myapp
  name: input-primary
spec:
  hostname: input-primary
  containers:
  - ports:
    - containerport: 9999
      name: input
      protocol: TCP
----
apiVersion: apps/v1beta2
kind: Deployment
metadata:
  labels:
    app: myapp
  name: input-secondary
spec:
  hostname: input-secondary
  containers:
  - ports:
    - containerport: 9999
      name: input
      protocol: TCP```

标签: kubernetestcpkubernetes-ingress

解决方案


推荐阅读