簡體   English   中英

在Minikube上開始使用Kompose時,MongoDB停止訪問

[英]MongoDB stopped being accessible when started using Kompose on Minikube

我有一個簡單的應用程序,該應用程序使用MongoDB docker映像調用URL:mongodb:// mongo:27017 /。 使用docker-compose可以正常工作:

泊塢窗,compose.yml

version: "3.3"
services:
  mongo:
    image: mongo
    restart: always
    container_name: mongo
    volumes:
      - /data/mongodb:/data/db
    ports:
     - "30001:27017"
  myapp:
    image: myapp:0.1.0
    restart: always
    links:
     - mongo # link this service to the database service
    depends_on:
     - mongo
networks:
  default:

然后,我開始使用Minikube(在VMWare之上)遷移到Kubernetes,生成以下清單YAML:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  creationTimestamp: null
  labels:
    name: mongo-claim0
  name: mongo-claim0
spec:
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 100Mi
status: {}
---
apiVersion: v1
kind: Service
metadata:
  creationTimestamp: null
  labels:
    name: mongo
  name: mongo
spec:
  ports:
  - name: "30001"
    port: 30001
    targetPort: 27017
  selector:
    name: mongo
status:
  loadBalancer: {}
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    name: mongo
  name: mongo
spec:
  replicas: 1
  strategy:
    type: Recreate
  template:
    metadata:
      creationTimestamp: null
      labels:
        name: mongo
    spec:
      containers:
      - image: mongo
        name: mongo
        ports:
        - containerPort: 27017
        resources: {}
        volumeMounts:
        - mountPath: /data/db
          name: mongo-claim0
      restartPolicy: Always
      volumes:
      - name: mongo-claim0
        persistentVolumeClaim:
          claimName: mongo-claim0
status: {}
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  creationTimestamp: null
  labels:
    name: myapp
  name: myapp
spec:
  replicas: 1
  strategy: {}
  template:
    metadata:
      creationTimestamp: null
      labels:
        name: myapp
    spec:
      containers:
        image: myapp:0.1.0
        name: myapp
        resources: {}
      restartPolicy: Always
status: {}

我的POD /服務運行正常(kubectl get pods,svc):

NAME                                 READY   STATUS             RESTARTS   AGE
pod/mongo-5d89cc6f7f-c2p4b           1/1     Running            0          43m
pod/myapp-6c9c4f89fb-gg68t           1/1     Running            0          43m

NAME                    TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)           AGE
service/kubernetes      ClusterIP   10.96.0.1        <none>        443/TCP           110m
service/mongo           NodePort    10.101.179.59    <none>        27017:30001/TCP   43m

我也無法通過Robo3T(MongoDB客戶端)以端口30001連接,就像我可以使用docker-compose(甚至使用vboxnet0 IP 192.168.99.1)一樣。

我不知道可能是什么問題。

更新1:我發現Kompose創建了ClusterIP,並將群集內部的端口轉移到30001,但這必須是從群集外部進行連接的端口。 我將服務更改為NodePort,如下所示:

apiVersion: v1
kind: Service
metadata:
  labels:
    name: mongo
  name: mongo
spec:
  type: NodePort 
  ports:
    - port: 27017
      nodePort: 30001
      targetPort: 27017
  selector:
    name: mongo
status:
  loadBalancer: {}

現在,myapp pod可以連接到mongo,但是我仍然無法使用Robo3t通過VMWare IP(192.168.99.1)和端口30001連接到群集。

為了使其正常工作,您必須調用minikube service <servicename> ,在我的情況下,服務名是mongo。

暫無
暫無

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

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