【发布时间】:2022-01-22 03:52:09
【问题描述】:
之前我使用早期的 kubeadm 从运行在 Docker 容器中的本地 MongoDB 创建端点,现在我们已经从 kubeadm 切换到 k3s,因为它更易于使用。现在我们无法使用 MongoDB 端点,它可以在 Kubernetes 集群内访问。我将为您分享必要的信息。如果有人可以帮助我,我会很高兴。
user@shell:~$ curl {address-of-the-VM}:27019
It looks like you are trying to access MongoDB over HTTP on the native driver port.
- 添加下一个我创建的端点和服务文件
apiVersion: v1
kind: Service
metadata:
name: mongo
namespace: dev
spec:
clusterIP: None
ports:
- port: 27019
targetPort: 27019
apiVersion: v1
kind: Endpoints
metadata:
name: mongo
namespace: dev
subsets:
- addresses:
- ip: {address-of-the-VM}
ports:
- port: 27019
name: mongo
接下来我将它们用作我的环境变量作为 ConfigMap:
kind: ConfigMap
apiVersion: v1
metadata:
name: spring-profile
namespace: dev
data:
MONGODB_HOSTS: mongo.dev
MONGODB_PORTS: "27019"
spring.profiles.active: dev
stage: dev
并在部署中将其绑定到我的 pod:
containers:
- name: dev-server
image: localhost:5000/dev_dev-server
imagePullPolicy: IfNotPresent
ports:
- containerPort: 8080
envFrom:
- configMapRef:
name: spring-profile
现在我遇到了这个问题,所以数据库找不到。
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'maintenanceFeature': Unsatisfied dependency expressed through field 'systemSrvc'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'systemDAO': Unsatisfied dependency
正如我之前在我们的 kubeadm 架构中提到的,它工作得非常好,现在它不工作了。 我还检查了 MongoDB 是否在 K3s 的节点中,是的,是的。
【问题讨论】:
-
这个IP地址是托管MongoDB的VM的公网地址吗?默认情况下,k3s pod 可以访问公共 Internet(正如我测试的那样),因此它应该可以工作。您可以尝试to exec into running pod 并尝试运行
curl mongo:27019吗?MONGODB_HOSTS: mongo.dev是正确的吗?在服务中,您使用名称mongo。
标签: java spring mongodb docker kubernetes