我有一个小型本地 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 实例?我本质上希望能够运行mongo
或mongo --host xyz
连接到实例。
有关集群的更多信息:Kubernetes 版本 1.20.5 使用 flannel 版本 0.13.0 作为 CNI