繁体   English   中英

不同节点中的 Pod 不能相互通信 - Kubernetes

[英]Pods in differents Nodes can't talk each other - Kubernetes

语境:

我正在构建一个应用程序,现在我处于基础架构步骤。

该应用程序是用 Java 构建的,持久层是 MongoDB。

问题:

如果应用程序运行在与持久层相同的节点上,一切正常,但在不同的节点上,应用程序无法与 MongoDB 通信。

有一张 Kubernetes Dashboard 的印刷品:

在此处输入图像描述 在此处输入图像描述

如您所见,应用程序(网关)的两个 pod 与 Mongo 在同一个节点上运行,但其他两个没有。 这两个都没有找到 MongoDb。

这是 mongo-db.yaml:


apiVersion: v1
kind: PersistentVolume
metadata:
  name: mongo-data
spec:
  accessModes:
    - ReadWriteOnce
  capacity:
    storage: 1Gi
  hostPath:
    path: /home/vitor/seguranca/mongo

---

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pvc
spec:
  storageClassName: ""
  accessModes:
    - ReadWriteOnce 
  volumeName: mongo-data
  resources:
    requests:
      storage: 1Gi

---

apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    app: mongo
  name: mongo

spec:
  replicas: 1
  selector:
    matchLabels:
      app: mongo
  strategy: {}
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: mongo
      name: mongo-service

    spec:
      volumes:
      - name: "deployment-storage"
        persistentVolumeClaim:
          claimName: "pvc"

      containers:
      - image: mongo
        name: mongo
        ports:
          - containerPort: 27017
        volumeMounts:
          - name: "deployment-storage"
            mountPath: "/data/db"
        
status: {}
---

apiVersion: v1
kind: Service
metadata:
  labels:
    app: mongo
  name: mongo-service
spec:
  ports:
  - port: 27017
    targetPort: 27017
  selector:
    app: mongo
  clusterIP: None

这里是application.yaml:


apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    app: gateway
  name: gateway
spec:
  replicas: 4
  selector:
    matchLabels:
      app: gateway
  strategy: {}
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: gateway
    spec:
      containers:

      - image: vitornilson1998/native-micro
        name: native-micro
        env:
        - name: MONGO_CONNECTION_STRING
          value: mongodb://mongo-service:27017 #HERE IS THE POINT THAT THE APPLICATION USES TO ACCESS MONGODB
        - name: MONGO_DB
          value: gateway
        resources: {}
        ports:
          - containerPort: 8080
        
status: {}

---

apiVersion: v1
kind: Service
metadata:
  creationTimestamp: null
  labels:
    app: gateway-service
  name: gateway-service
spec:
  ports:
  - name: 8080-8080
    port: 8080
    protocol: TCP
    targetPort: 8080
  selector:
    app: gateway
  type: NodePort
status:
  loadBalancer: {}


我看不到是什么阻止了应用程序到达 MongoDB。

我应该怎么做?

我使用印花布作为 CNI。

我删除了 calico,让 kube-proxy 处理所有事情。

现在一切正常。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM