Networking 在kubernetes中,吊舱对吊舱通信不起作用

Networking 在kubernetes中,吊舱对吊舱通信不起作用,networking,kubernetes,Networking,Kubernetes,我使用SpringBoot创建RESTAPI,并在加载时访问MongoDB。 我正在为RESTAPI做一个部署和服务,为mongodb做一个部署和服务 但我的restapipod正在崩溃,无法在加载时运行,它正在寻找mongodb服务,但它无法ping该主机 我已经将mongodb作为服务公开,也将RESTAPI作为服务公开。 RESTAPI作为NodePort公开,mongodb作为ClusReport公开 我尝试了一切,但没有解决办法 ============================

我使用SpringBoot创建RESTAPI,并在加载时访问MongoDB。 我正在为RESTAPI做一个部署和服务,为mongodb做一个部署和服务

但我的restapipod正在崩溃,无法在加载时运行,它正在寻找mongodb服务,但它无法ping该主机

我已经将mongodb作为服务公开,也将RESTAPI作为服务公开。 RESTAPI作为NodePort公开,mongodb作为ClusReport公开

我尝试了一切,但没有解决办法

================================================================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
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
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
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
==============================================REST API部署================================

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
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
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
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
clusterIP:None

这几乎肯定不是您希望发生的事情,因为这将填充
端点的负担完全放在您或外部控制器上(例如
StatefulSet
控制器)

您必须删除然后重新创建
tech hunt mongodb
服务
,以便将其
clusterIP
None
更改为自动填充的值,但您必须首先确保这样做

但我的restapipod正在崩溃,无法在加载时运行,它正在寻找mongodb服务,但它无法ping该主机

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

clusterIP:None

这几乎肯定不是您希望发生的事情,因为这将填充
端点的负担完全放在您或外部控制器上(例如
StatefulSet
控制器)

您必须删除然后重新创建
tech hunt mongodb
服务
,以便将其
clusterIP
None
更改为自动填充的值,但您必须首先确保这样做

但我的restapipod正在崩溃,无法在加载时运行,它正在寻找mongodb服务,但它无法ping该主机


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

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

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

您好,谢谢您的回答。我的服务现在起作用了,我犯了愚蠢的错误。现在我使用了正确的mongodb图像,一切都很好。嗨,Matthew,谢谢你的回答。我的服务现在起作用了,我犯了愚蠢的错误。现在我使用了正确的mongodb图像,现在一切正常。