gpt4 book ai didi

docker - 是否可以将主机重定向到Kubernetes中的服务路径?

转载 作者:行者123 更新时间:2023-12-02 21:17:58 25 4
gpt4 key购买 nike

我试图将主机地址与服务路径进行匹配,例如,让我认为我有一个Nginx Pod服务于以下站点:site1和site2。让我们考虑一下名为 my-nginx-service 的服务,该服务将我的两个站点作为路径服务:
- my-nginx-service (178.123.55.37:80)
- /site1
- /site2

存在一种将其映射到类似内容的方法:
- host: site-one.mydomain.com
http:
paths:
- backend:
serviceName: nginx-service
servicePort: 80
servicePath: /site2
- host: site-two.mydomain.com
http:
paths:
- backend:
serviceName: nginx-service
servicePort: 80
servicePath: /site2

?我没有在文档中找到任何有关它的信息。也许我对它们不了解。

非常感谢您的宝贵时间!

最佳答案

您尝试做的事情(如果我理解正确的话)是不可能的,因为服务不知道主机名。您可以通过修改Pod中的nginx配置来达到所需的目标,但这不是K8s的方法。

您需要做的是添加一个入口资源。入口知道主机名。它们在服务之间进行负载平衡。因此,/ site1将转到一项服务,而/ site2将转到另一项服务。

入口应如下所示:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress
spec:
rules:
- host: site-one.mydomain.com
http:
paths:
- backend:
serviceName: nginx-service1
servicePort: 80
- host: site-two.mydomain.com
http:
paths:
- backend:
serviceName: nginx-service2
servicePort: 80

如您所见,site1和site2将在不同的部署中运行,并且针对它们的服务也不同。 Ingress(即L7负载平衡器)将能够检查主机名并将请求转发到正确的服务,该服务最终会命中正确的Pod。

您还可以向每个主机添加路径,因此site-one.mydomain.com/path1、site-one.mydomain.com/path2和site-two.mydomain.com/path1(例如)将转发到不同的服务。

Ingress yaml文件如下所示:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress
spec:
rules:
- host: site-one.mydomain.com
http:
paths:
- path: /path1
backend:
serviceName: nginx-service1
servicePort: 80
- path: /path2
backend:
serviceName: nginx-service2
servicePort: 8080
- path: /
backend:
serviceName: nginx-service3
servicePort: 80
- host: site-two.mydomain.com
http:
paths:
- path: /path1
backend:
serviceName: nginx-service1
servicePort: 80

我知道这不是您的确切要求,但这是实现您想要的正确方法。

关于docker - 是否可以将主机重定向到Kubernetes中的服务路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49307264/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com