0

我有一个小型本地 kubernetes 集群设置,有一个主节点(master1:192.168.122.4)和一个工作节点(worker1:192.168.122.5)。Worker1 有一个在裸机操作系统上运行的副本集 mongo 实例,而不是在 k8s 集群中。我可以在 k8s 集群之外通过以下方式访问 mongodb(注意:所有主机名都可以从 master1 上运行的 dns 解析)

从master1:

mongo --host 192.168.122.5
mongo --host worker1

从工人1:

mongo (which connects to 127.0.0.1:27017)
mongo --host 192.168.122.5
mongo --host worker1

我还有一个在 k8s 集群中运行的应用程序,它被安排到 worker1。以下是吊舱规格:

apiVersion: v1
kind: Pod
metadata:
  name: test-app
spec: 
  dnsConfig: 
    nameservers:
    - 192.168.122.4
    searches:
    - test.123.domain
  containers:
  - name: test-app
    image: registrysvc:5000/test-image:latest
    imagePullPolicy: Always

我已经尝试了以下方法,但它不起作用。我能够运行 nslookup 并取回正确的 IP,但我无法连接到 mongo:

apiVersion: v1
kind: Service
metadata:
  name: mongo
  namespace: default
spec:
  clusterIP: None
  ports:
  - name: mongo
    port: 27017
    protocol: TCP
---
apiVersion: v1
kind: Endpoints
metadata:
  name: mongo
  namespace: default
subsets:
  - addresses:
      - ip: 192.168.122.5 
    ports:
      - port: 27017
        name: mongo
        protocol: TCP

有没有办法从同一主机上的 k8s 集群中运行的测试应用程序连接到主机操作系统上运行的 mongo 实例?我本质上希望能够运行mongomongo --host xyz连接到实例。

有关集群的更多信息:Kubernetes 版本 1.20.5 使用 flannel 版本 0.13.0 作为 CNI

4

0 回答 0