【问题标题】:Pod to Pod communication is not working in kubernetesPod 到 Pod 的通信在 kubernetes 中不起作用
【发布时间】:2021-01-04 01:57:31
【问题描述】:

我正在使用 Spring Boot 创建 REST API 并在加载时访问 MongoDB。 我正在为 REST API 进行一项部署和服务,为 mongodb 进行一项部署和服务。

但是我的 REST API pod 出现故障并且没有出现,因为它在加载时会寻找 mongodb 服务,但无法 ping 该主机。

我已将 mongodb 作为服务公开,并将 REST API 作为服务公开。 REST API 公开为 NodePort,mongodb 公开为 ClusreIP。

我尝试了所有方法,但没有解决方案。

=====================================MongoDB部署========== ===============

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: tech-hunt-mongodb
spec:
  replicas: 1
  template:
    metadata:
      name: tech-hunt-mongodb
      labels:
        app: tech-hunt
        module: mongodb
    spec:
      containers:
      - image: <image>
        name: tech-hunt-mongodb
        ports:
        - containerPort: 27017

=====================================MongoDB服务========== ===============

apiVersion: v1
kind: Service
metadata:
  name: tech-hunt-mongodb
spec:
        #type: ClusterIP
  selector:
    app: tech-hunt
    module: mongodb
  ports:
  - port: 27017
    targetPort: 27017
    protocol: TCP
  clusterIP: None
    #nodePort: 30000
    #protocol: TCP

============================REST API 部署================= ===============

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: tech-hunt-api
spec:
  template:
    metadata:
      name: tech-hunt-api
      labels:
        app: tech-hunt
        module: rest-api    
    spec:
      containers:
      - image: <image>
        name: tech-hunt-api
        ports:
        - containerPort: 4000

================================REST API 服务============= ================

apiVersion: v1
kind: Service
metadata:
  name: tech-hunt-api-client
spec:
  type: NodePort
  selector:
    app: tech-hunt
    module: rest-api-client
  ports:
  - port: 5000
    targetPort: 5000
    nodePort: 30010

【问题讨论】:

    标签: networking kubernetes


    【解决方案1】:

    clusterIP: None

    几乎可以肯定不是您想要发生的事情,因为这会将填充 Endpoints 的负担完全交给您或外部控制器(StatefulSet 控制器就是这样一个例子)。

    您必须先删除然后重新创建 tech-hunt-mongodb Service 才能将其 clusterIPNone 更改为自动填充的值,但您应该先这样做.

    但是我的 REST API pod 出现故障并且没有出现,因为它在加载时会寻找 mongodb 服务,但无法 ping 该主机。

    作为仅供参考,您将永远无法“ping”Service IP,因为这些地址是“假的”;只有Service IP 的元组及其流量端口(因此,在您的两个示例中为270175000)将响应任何数据包。您应该使用curlnc 来测试连接性,而不是ping

    【讨论】:

    • 嗨,马修,感谢您的回答。我的服务现在正常工作我犯了愚蠢的错误。现在我使用了正确的 mongodb 映像,现在一切正常。
    【解决方案2】:

    我使用了错误的 mongodb 映像,无法访问客户端。因此,创建的容器无法通过 curl 等方式 ping 通。 我正在使用 NodePort,而我的其余 API 容器能够从 mongodb 容器中获得响应。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-20
      • 1970-01-01
      • 2020-01-16
      • 2019-10-16
      • 1970-01-01
      • 2019-07-27
      • 2019-04-02
      • 2022-01-26
      相关资源
      最近更新 更多