我正在为kube中的应用程序设置主动/被动路由,这在典型的K8S用例之外。我正在尝试在具有多个后端的无头服务中查找与路由或负载平衡有关的配置。到目前为止,我已经设法将流量路由到我的后端,但是我需要确保流量被正确路由。该应用程序需要TCP连接,并且主要/次要实例具有不同的配置(需要不同的部署对象)。如果发生故障转移,则路由有望在还原后返回到主要节点。
路由始终如期运行,但是没有任何文档或配置可以说明此事。我发现文档指出,由于dns条目的顺序,它应该是轮询或随机的。问题的症结在于:我可以依靠这种行为吗?由于未记录此文件且未明确配置,因此我担心它会在将来的版本或部署中更改。
我将Rancher与运河网络层配合使用。 我已经阅读了印花布和法兰绒文档。 端点/端点分片或dns条目均未指示路由的任何顺序。
当前,该设置具有无头服务选择的两个部署。在部署1中,已部署的Pod的主机名是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```