У меня есть простое приложение, которое использует изображение док-станции MongoDB и вызывает 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:
Затем я начал мигрировать в Kubernetes, используя Minikube (поверх VMWare), генерируя следующий манифест 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), так как я мог использовать 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 может подключаться к mongo, но я все еще не могу подключиться с помощью Robo3t к кластеру через VMWare IP (192.168.99.1) и порт 30001.