kubernetes - 处理具有多个容器的单个 pod
问题描述
我需要将多容器设置转换为具有多个容器的单个容器。我让 pod x 运行 x 微服务,而 pod y 运行 y 微服务,并具有以下休息端点。
http://x:8080/{context path-x}/endpoint
http://y:8080/{context path-y}/endpoint
我想让 pod z 和 x 和 y 微服务,容器 x 暴露在 8080 端口上,y 暴露在同一个 pod 中的 8081 上。我可以通过多容器 pod 来实现这些。
我的问题是现在 URL 已更改
http://z:8080/{context path-x}/endpoint
http://z:8081/{context path-y}/endpoint
我正在寻找可以在不更改 URL 或使用以下 URL 的最小命中的情况下命中端点的方法
http://x:8080/{context path-x}/endpoint
http://y:8081/{context path-y}/endpoint
我真正的项目要求在单个 pod 上有 5 个容器,并且暴露了 100 个端点
我怎样才能做到这一点?
解决方案
K8s 服务是公开应用程序的方式。由于您有两个应用程序并希望在单个 Pod 中将它们作为两个不同的容器运行,并且您希望对应用程序 API URL 的更改最少,因此只需创建两个具有跟踪端口的不同服务。因此,您需要对应用程序的 APP url 进行 0 次更改。
在 K8s 集群中,您可以简单地将服务名称的名称用作来自同一命名空间的主机名。您可以查看服务的 FQDN(完全限定域名)约定。
因此,您可以创建两个名称为x
和的服务y
,其中x
端口为 8080,y
端口为 8081。因此,您可以使用与以前相同的 url。
注意:可能存在实现目标的不同方法,但可能会出现不同的问题。
推荐阅读
- python - 在 Windows 上反转矩阵时奇怪的 numpy 阻塞行为
- vhdl - VHDL 音频项目
- python - 如何在 lambda 函数中使用 python 在 Json 输出中搜索匹配列表?
- openssl - 如何使用二进制私钥文件在 openssl 中解密(使用 RSA)?
- java - Docker 运行失败并出现 NoClassDefFoundError - 即使依赖 jar 在类路径中
- graphql - Apollo 客户端中“writeQuery”和“writeData”的区别?
- python - 为什么我的 if 语句没有正确读取输入值?
- excel - 提示用户输入超链接
- java - 与 PostgresSQL 9 并行运行 3 个大型选择调用是否值得?
- python - 如何在 Dataframe 中创建一个列,该列根据另一列的值计算 cross_val_score