- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想创建一个可以做某种动态代理回Kubernetes Pods的服务。基本上,我将有数百个K8s Pod运行相同的应用程序,它们映射到主机上的随机端口(如10456
)。但是,每个Pod都是唯一的,我希望流量根据主机名定向到特定的Pod。因此,当收到abc123.app.com
的请求时,我将拥有一个代理层,该代理层在数据库中进行查找以查找该域正在运行的主机和端口(例如10.0.0.5:10456
),然后将请求转发至该位置。是否有支持此服务的服务?我之前曾与Nginx进行过很多合作,但尚不清楚它是否可以支持此查找功能。
有没有人建过这样的东西?构建可以进行类似查找的代理层的最佳方法是什么?当Pod从一台主机移动到另一台主机时,我将如何更新数据库?
提前致谢!
编辑:
我本应该是第一次把它放在那儿,但是去这些 pods 的流量类型是RPC流量和点对点流量
最佳答案
您正在描述的内容与kubernetes ingress定义对http流量的作用非常相似。
入口定义将ingress controller配置为将对主机名的请求指向service。 service通过label selectors选择端点(荚)。当 pods 移动时,kubernetes会自动更新服务。
您的工作只是通过API clients之一将配置更改从数据库中推送到kubernetes,而不是直接代理。如果您的环境非常动态,需要始终进行重新配置,或者需要动态决定流量的流向,则可能需要继续查看自定义代理或istio,openresty。
听起来您已经将独特的部署部署到了kubernetes,因此除此以外还包括服务和入口定义。
一个简单的示例,在 pods 上包含标签,即使用该标签的服务。然后使用服务定义入口。
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
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: host-abc123
spec:
rules:
- host: abc123.bar.com
http:
paths:
- backend:
serviceName: host-abc123
servicePort: 80
apiVersion: v1
kind: Service
metadata:
name: host-abc123
spec:
ports:
- protocol: TCP
port: 80
targetPort: 10456
server
配置。
关于docker - 如何对Kubernetes Pod进行动态代理?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60144717/
我是一名优秀的程序员,十分优秀!