簡體   English   中英

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

[英]Pod to Pod communication is not working in kubernetes

我正在使用 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

clusterIP: None

幾乎肯定不是您想要發生的事情,因為這將填充Endpoints的負擔完全放在您身上 - 或者外部控制器( StatefulSet控制器就是這樣的一個例子)。

您必須刪除,然后重新創建tech-hunt-mongodb Service ,以便將其clusterIPNone更改為自動填充的值,但您應該首先這樣做。

但是我的 REST API pod 壞了,在加載時沒有出現,它尋找 mongodb 服務,但它無法 ping 那個主機。

作為僅供參考,您將永遠無法“ping” Service IP,因為這些地址是“假的”; 只有Service IP 的元組及其流量端口(因此,在您的兩個示例中為270175000 )將響應任何數據包。 您應該使用curlnc來測試連接性,而不是ping

我使用了錯誤的 mongodb 圖像,該圖像無法訪問客戶端。 因此,創建的容器無論如何都無法通過 curl 左右進行 ping 操作。 我正在使用 NodePort,我的其余 API 容器能夠從 mongodb 容器獲得響應。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM