我使用Spring Boot来创建REST API,并在加载时访问MongoDB。我正在为REST API创建一个部署和服务,并为mongodb创建一个部署和服务。
但是我的REST API pod正在中断,并且没有在加载时出现,它寻找mongodb服务,但它无法ping通该主机。
我已经将mongodb公开为服务,也将REST API公开为服务。REST API公开为NodePort,mongodb公开为ClusreIP。
我试过的所有东西都没有解决方案。
===================================MongoDB deployment========================
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 service========================
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接口deployment================================
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接口service=============================
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发布于 2019-02-09 16:44:46
clusterIP: None
这几乎肯定不是您希望发生的事情,因为这会将填充Endpoints的负担完全放在您身上--或者外部控制器( StatefulSet控制器就是这样的一个例子)。
您必须删除tech-hunt-mongodb Service,然后重新创建,以便将其clusterIP从None更改为自动填充的值,但您必须首先这样做。
,但我的REST API pod正在中断,并且在加载时没有出现,它寻找mongodb服务,但它无法ping通该主机。
作为参考,您永远无法"ping“Service IP,因为这些地址是”假的“;只有Service IP的元组及其流量端口(因此,在您的两个示例中为27017或5000 )将响应任何数据包。您应该使用curl或nc而不是ping来测试连通性。
发布于 2019-02-10 17:25:44
我使用了错误的mongodb镜像,无法访问客户端。因此,创建的容器在任何情况下都不能通过curl等方式curl通。我正在使用NodePort,并且我的rest API容器能够从mongodb容器获得响应。
https://stackoverflow.com/questions/54600917
复制相似问题