我必须在minikube中的两个POD之间进行通信,这两个POD在两个不同的端口中公开但在单个节点中。
例如:
现在,在kubernetes中,它动态分配端口,例如:POD A:30069和POD B:30070
这里的问题是:从POD A(30069)访问POD B时,它不会自动映射POD B的kubernetes端口(30070)。而是POD B尝试在8761端口中打开。
抱歉,我的描述令人困惑。如果您无法回答我的问题,请随时重新检查。
谢谢你的帮助
最佳答案
I have to communicate between two PODs in minikube which are exposed in two different ports but are in a single node.
基于您希望进行Pod间通信并且Pod驻留在同一节点上的事实,您可能会采用几种(相当可疑且脆弱)的方法,例如主机名和nodePort公开。为了更符合kubernetes的方法和建议,我建议使用Service而不是直接从Pod级别公开端口。
您可以在the official documenatation中阅读有关服务的更多信息,服务用法示例如下所示:
kind: Service
apiVersion: v1
metadata:
name: my-pod-b-service
spec:
selector:
app: MyPodBApp
ports:
- protocol: TCP
port: 80
targetPort: 8761
此规范将创建一个名为
my-pod-b-service
的新服务对象,该对象针对带有app=MyPodBApp
标签的任何Pod上的TCP端口8761。有了来自Pod A对主机:my-pod-b-service
和port:80
的任何请求,将由端口8761
上的某个Pod B服务(请注意,port和targetPort可以相同,这只是一个示例)。附带说明,对于 pods A,您将具有以下内容:
kind: Service
apiVersion: v1
metadata:
name: my-pod-a-service
spec:
selector:
app: MyPodAApp
ports:
- protocol: TCP
port: 80
targetPort: 8080
由于您以服务为目标,因此可以将相同的传入端口(80)映射到这两个服务,并且只要在Pod上正确设置Pod选择器,kubernetes都会注意将每个端口都连接到适当的Pod。
关于docker - 单个节点中的两个POD之间的通信(minikube),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51041661/