我正在使用Spring Boot创建REST API,并在加载时访问MongoDB。 我正在为REST API进行一项部署和服务,为mongodb进行一项部署和服务。
但是我的REST API容器坏了,并且没有在加载时显示mongodb服务,但无法ping通该主机。
我已经将mongodb作为服务公开,还将REST API作为服务公开了。 REST API公开为NodePort,mongodb公开为ClusreIP。
我尝试过的所有方法都没有解决办法。
==================================== MongoDB部署=========== =============
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: tech-hunt-mongodb
spec:
replicas: 1
template:
metadata:
name: tech-hunt-mongodb
labels:
app: tech-hunt
module: mongodb
spec:
containers:
- image: <image>
name: tech-hunt-mongodb
ports:
- containerPort: 27017
==================================== MongoDB服务=========== =============
apiVersion: v1
kind: Service
metadata:
name: tech-hunt-mongodb
spec:
#type: ClusterIP
selector:
app: tech-hunt
module: mongodb
ports:
- port: 27017
targetPort: 27017
protocol: TCP
clusterIP: None
#nodePort: 30000
#protocol: TCP
========================== REST API部署================== ===============
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: tech-hunt-api
spec:
template:
metadata:
name: tech-hunt-api
labels:
app: tech-hunt
module: rest-api
spec:
containers:
- image: <image>
name: tech-hunt-api
ports:
- containerPort: 4000
=============================== REST API服务============== ================
apiVersion: v1
kind: Service
metadata:
name: tech-hunt-api-client
spec:
type: NodePort
selector:
app: tech-hunt
module: rest-api-client
ports:
- port: 5000
targetPort: 5000
nodePort: 30010
答案 0 :(得分:0)
clusterIP: None
几乎肯定不是您想要发生的事情,因为这将把Endpoints
的填充完全交给您-或外部控制器(StatefulSet
控制器就是这样的例子)。 / p>
您必须先删除tech-hunt-mongodb
Service
,然后再重新创建,才能将其clusterIP
从None
更改为自动填充的值,但是您应该确保首先这样做。
但是我的REST API容器坏了,并且没有在加载时显示mongodb服务,但无法ping通该主机。
作为一个FYI,您将永远无法“ ping” Service
IP,因为这些地址是“伪造的”。只有Service
IP元组及其流量端口(在您的两个示例中为27017
或5000
)将响应任何数据包。您应该使用curl
或nc
来测试连接性,而不是ping
。
答案 1 :(得分:0)
我使用了错误的mongodb映像,该映像未授予客户端访问权限。因此,所创建的容器在任何情况下都不能通过卷曲等方式进行ping操作。 我正在使用NodePort,我的其余API容器能够从mongodb容器获得响应。