下面给出了配置,我试图在Google Kubernetes Engine上部署 . 但部署后,我无法访问入口外部IP上的服务 .
如果我这样做,我可以访问该服务:
$ kubectl exec POD_NAME
# curl GET localhost:6078/todos
但是我无法通过入口访问它 . GKE UI显示错误,如:
- 同步时出错:评估入口规范时出错:无法找到服务"default/todo"
要么
- 某些后端服务处于不 Health 状态
即使后端pod已启动并正在运行 .
我相信这项服务有问题 .
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: todo
labels:
app: todo
spec:
replicas: 1
selector:
matchLabels:
app: todo
template:
metadata:
labels:
app: todo
spec:
containers:
- image: eu.gcr.io/xxxxx/todo
name: todo
ports:
- containerPort: 6078
protocol: TCP
---
apiVersion: v1
kind: Service
metadata:
name: todo
labels:
app: todo
spec:
type: NodePort
ports:
- port: 6078
selector:
app: todo
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: todo-ingress
spec:
rules:
- http:
paths:
- path: /*
backend:
serviceName: todo
servicePort: 6078
提前致谢 .
1 回答
很难说不知道'todo'做什么,但有一些事情:
相反,它应该是:
/*
没有host
那么默认后端会覆盖你,因为它是nginx.conf
中的最后一条规则,所以你也可以配置:0.0.0.0
而不是127.0.0.1
. 聆听127.0.0.1
将导致它在pod中本地提供,但不能用于外部任何服务 .