gpt4 book ai didi

docker - Kubernetes - 我的 2 个应用程序部署仅在一个 "args"中不同 - 我可以拥有将引用这两个应用程序的服务吗?

转载 作者:行者123 更新时间:2023-12-04 15:00:23 24 4
gpt4 key购买 nike

我觉得我有有趣的用例,所以我想听听有更多知识的人的建议。我的应用程序(“ads”)可以在 Kubernetes 中正常运行,没有任何问题。它在端口 9000 上运行。它的 args 具有其实例名称 (serverName),并且在服务器列表中它还引用了所有其他服务器 (servers),以便在其中运行这些服务器出于性能原因,需要所谓的 伙伴模式。请记住,这不是 WEB 服务器,简单的副本不会实现我们需要实现的目标,即让多个 ADS 服务器在 so call companion 中工作主服务器将缓存的数据发送到另一台服务器的模式,这样服务器也有最近的数据并可以在发生故障时接管。

从第一个 ADS YAML 文件中提取:

-in serverName 我们指定服务器实例的名称-在 servers arg 中,我们指定常规 ADS 服务器地址及其端口。

args:
....
"-serverName", "ads"
"-servers", "{ { ads , ads-test:9000 }, { ads2 , ads-test2:9000}"]
ports:
- containerPort: 9000
..................
kind: Service
metadata:
name: ads-test
spec:
type: ClusterIP
ports:
- protocol: TCP
port: 9000
selector:
app: ads-test

因此,在参数列表中,我们指定服务,我们应该通过该服务使用 TCP 连接(而非 HTTP 连接)和 ads-test:9000 访问该 ADS 实例。由于这是容器化的应用程序,我不知道除了“ServiceName:port”之外我还能指定什么作为服务器地址,因为这个应用程序的开发没有假设容器化的应用程序。

所以第二个 YAML 应该只有 serverName 信息不同。我添加了额外的服务 ads-test2

args:
....
"-serverName", "ads2"
"-servers", "{ { ads , ads-test:9000 }, { ads2 , ads-test2:9000}"]
ports:
- containerPort: 9000
..................
kind: Service
metadata:
name: ads-test2
spec:
type: ClusterIP
ports:
- protocol: TCP
port: 9000
selector:
app: ads-test2

因为这实际上是同一个应用程序,但在其配置中只有一个参数不同 (serverName) 我想知道是否有某种方法可以简化它并使用单个服务来访问两个 ADS 服务器,但要在 server 参数中进行此配置,这实际上激活了这种 companion 模式,出于使用不同服务器的性能原因,这种模式是必需的,但要有信息在两台服务器上都是最新的。

谢谢

最佳答案

不,您不能为两个逻辑上不同的 pod 提供单一服务。服务通常会在副本 pod 之间进行负载平衡。因此,用户对您的 pod 的请求将自动由服务自动路由到任何 pod。因此,在您的情况下,您不希望这种情况发生。广告请求可能会欺骗 ads2 服务器 pod。推荐的方法是为你的 pod 提供两种不同的服务,或者你可以在单个 pod 中有多个容器,在这种情况下只有一个服务。服务器名称的参数可以从环境中获取。环境: key :值:

关于docker - Kubernetes - 我的 2 个应用程序部署仅在一个 "args"中不同 - 我可以拥有将引用这两个应用程序的服务吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67045688/

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