kubernetes - 主动/被动路由具有多个后端的无头服务
问题描述
我正在为 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```
解决方案
推荐阅读
- android - 更改导航面板的颜色
- python - 比较两个 IPv6 地址是否相等
- javascript - 如何使用 passport-jwt 进行非对称 JWT 身份验证?
- haskell - 如何在 Haskell 中覆盖左侧的错误消息?
- javascript - 带有电子邮件模板的 Nodemailer 不发送电子邮件
- http - GET 和 POST 方法的独立 Flask 路由
- laravel - Laravel 多对多关系附加到多个模型
- amazon-ec2 - 如何在 api 网关中为反向代理配置 aws ec2 实例
- react-native - 如何通过多个输入设置对象数组的状态?
- reactjs - React 开发工具自动选择父组件