Docker 如何对Kubernetes吊舱进行动态代理?

Docker 如何对Kubernetes吊舱进行动态代理?,docker,http,nginx,kubernetes,proxy,Docker,Http,Nginx,Kubernetes,Proxy,我想创建一个服务,可以做一些动态代理回到Kubernetes吊舱。基本上,我将有数百个K8s吊舱,它们运行同一个应用程序,映射到主机上的随机端口(如10456)。但是,每个Pod都是唯一的,我希望根据主机名将流量定向到特定的Pod。因此,当一个请求进入abc123.app.com时,我将有一个代理层在数据库中进行查找,以找到该域运行的主机和端口(如10.0.0.5:10456),然后将请求转发到那里。是否有支持此功能的服务?我以前使用过Nginx很多次,但我不清楚它是否支持这种查找功能 以前有人

我想创建一个服务,可以做一些动态代理回到Kubernetes吊舱。基本上,我将有数百个K8s吊舱,它们运行同一个应用程序,映射到主机上的随机端口(如
10456
)。但是,每个Pod都是唯一的,我希望根据主机名将流量定向到特定的Pod。因此,当一个请求进入
abc123.app.com
时,我将有一个代理层在数据库中进行查找,以找到该域运行的主机和端口(如
10.0.0.5:10456
),然后将请求转发到那里。是否有支持此功能的服务?我以前使用过Nginx很多次,但我不清楚它是否支持这种查找功能

以前有人建造过这样的东西吗?构建代理层的最佳方法是什么,这样可以进行查找?当pod从一个主机移动到另一个主机时,如何更新数据库

提前谢谢

编辑:


我应该第一次把它放在这里,但是到这些pod的流量类型是RPC流量和对等流量

您描述的内容与kubernetes定义对http流量的作用非常相似

入口定义配置对主机名的点到点请求。通过选择端点(POD)。当吊舱移动时,kubernetes会自动更新服务

您端的工作只是通过一个to-kubernetes将配置更改从数据库中推出,而不是直接使用代理。如果您的环境非常动态,需要随时重新配置,或者您需要动态决定流量应该流向何处,那么您可能希望继续查看自定义代理或

听起来你已经在kubernetes进行了独特的部署,所以除此之外,还包括服务和入口定义

一个简单的示例,包括pod上的标签,一个使用该标签的服务。然后使用服务创建入口定义

apiVersion: v1
kind: Pod
metadata:
  name: my-app
  labels:
    app: host-abc123
spec:
  containers:
  - name: host-abc123
    image: me/my-app:1.2.1
    ports:
    - containerPort: 10456
单一入口定义可以包括所有主机,但我不确定kubernetes和入口控制器将如何定期更换


也有基于入口的控制器。最后,您将得到一个nginx
服务器
按入口/主机定义配置。

您描述的内容与kubernetes定义对http流量的作用非常相似

入口定义配置对主机名的点到点请求。通过选择端点(POD)。当吊舱移动时,kubernetes会自动更新服务

您端的工作只是通过一个to-kubernetes将配置更改从数据库中推出,而不是直接使用代理。如果您的环境非常动态,需要随时重新配置,或者您需要动态决定流量应该流向何处,那么您可能希望继续查看自定义代理或

听起来你已经在kubernetes进行了独特的部署,所以除此之外,还包括服务和入口定义

一个简单的示例,包括pod上的标签,一个使用该标签的服务。然后使用服务创建入口定义

apiVersion: v1
kind: Pod
metadata:
  name: my-app
  labels:
    app: host-abc123
spec:
  containers:
  - name: host-abc123
    image: me/my-app:1.2.1
    ports:
    - containerPort: 10456
单一入口定义可以包括所有主机,但我不确定kubernetes和入口控制器将如何定期更换


也有基于入口的控制器。你最终会得到一个nginx
server
config per-ingres/host-definition。

能帮你吗?这都是http流量吗?啊,应该在帖子中提到。这个应用程序使用RPC和P2P协议。你需要一个理解这些协议的代理,听起来你可能需要自己的代理,除非它是常见的。kubernetes可以覆盖pod查找,但只能映射http的主机名。如果你可以添加一些伪代码,说明这两个协议是如何产生的以及它们是如何转发的,人们可能能够帮助你。这是所有http流量吗?啊,应该在帖子中提到。这个应用程序使用RPC和P2P协议。你需要一个理解这些协议的代理,听起来你可能需要自己的代理,除非它是常见的。kubernetes可以覆盖pod查找,但只能映射http的主机名。如果您可以添加一些伪代码,说明这两个协议是如何产生的以及它们是如何转发的,那么人们可能能够提供帮助。感谢Matt的评论!我将进一步研究这些Kubernetes原语,看看它们是否能为我完成这项工作。但是这些对非HTTP流量有效吗?入口资源是特定于HTTPS的。谢谢您的评论!我将进一步研究这些Kubernetes原语,看看它们是否能为我完成这项工作。但是这些对非HTTP流量有效吗?入口资源是特定于HTTP的
apiVersion: v1
kind: Service
metadata:
  name: host-abc123
spec:
  ports:
    - protocol: TCP
      port: 80
      targetPort: 10456