docker - 单个节点中的两个POD之间的通信(minikube)

标签 docker kubernetes devops minikube

我必须在minikube中的两个POD之间进行通信,这两个POD在两个不同的端口中公开但在单个节点中。

例如:

  • POD A使用8080端口,这是登录页面。
  • 从POD A,我们通过使用8761端口的超链接访问PODB。

  • 现在,在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/

    相关文章:

    java - 如何: Docker container running java jar connecting to host mysql server?

    kubernetes - minikube 中服务的完全限定服务名称是什么

    azure - 将现有 Visual Studio 项目添加到现有 Devops 项目

    kubernetes - Kubernetes仪表板不显示Pod消耗的CPU和内存

    kubernetes - 带有pvc的local类型的StorageClass,但在kubernetes中给出错误

    linux - 如何复制docker容器中除任何一个目录以外的目录?

    npm - 构建成功运行 `next build` 时,AWS CodeBuild 不生成任何工件

    docker - 从 ubuntu 18.04 升级到 18.10 后,docker 容器内没有互联网连接

    asp.net - 无法访问 Docker 内的 Asp.Net Core

    docker - 如何更改现有 docker 网络的配置