我遇到了一个问题,因为应用程序最初配置为在docker-compose上执行。我设法将.yaml部署文件移植并重写为Kubernetes,然而,问题在于pod的通信。
前端与后端通信以访问服务,我认为它应该在同一网络中,前端从localhost调用服务。我无法访问代码,因为它是由公司开发的专有应用程序,它不支持Kubernetes,因此修改代码是不可能的。
我认为主要原因是因为前端和后端运行在不同的pod上,具有不同的IP。
当前端尝试调用API时,它找不到该服务,并返回错误。因此,我正在尝试将前端映像和后端映像部署到同一个pod中,因此它们共享相同的群集IP。
不幸的是,我不知道如何制作一个yaml文件来在一个pod中创建两个容器。
是否可以让前端和后端容器在同一个pod上运行,或者是否有另一种方法使容器通信(可能是代理)?
是的,您只需在yaml文件中的containers
部分添加条目,例如:
apiVersion: v1
kind: Pod
metadata:
name: two-containers
spec:
restartPolicy: Never
containers:
- name: nginx-container
image: nginx
- name: debian-container
image: debian
因此,我正在尝试将前端映像和后端映像部署到同一个pod中,因此它们共享相同的群集IP。
虽然您已经接受了已经接受的答案,即解决在同一个容器中运行更多容器的示例,但我想指出一些细节:
这种方法的一些好处包括:您可以更好地隔离后端(后端 - 前端通信仅在群集内,不暴露给外部世界),您可以在节点上独立调度它们,您可以单独扩展它们(假设您需要更多后端)电源,但正面处理流量ok或反之亦然),你可以独立替换其中任何一个等...