Pod到Pod的通信在kubernetes中不起作用

时间:2019-02-08 22:09:24

标签: kubernetes pod

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

但是我的REST API容器坏了,并且没有在加载时显示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

2 个答案:

答案 0 :(得分:0)

  

clusterIP: None

几乎肯定不是您想要发生的事情,因为这将把Endpoints的填充完全交给您-或外部控制器(StatefulSet控制器就是这样的例子)。 / p>

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

  

但是我的REST API容器坏了,并且没有在加载时显示mongodb服务,但无法ping通该主机。

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

答案 1 :(得分:0)

我使用了错误的mongodb映像,该映像未授予客户端访问权限。因此,所创建的容器在​​任何情况下都不能通过卷曲等方式进行ping操作。 我正在使用NodePort,我的其余API容器能够从mongodb容器获得响应。