在给出配置之后,我正尝试在Google Kubernetes Engine上进行部署。但是部署后,我无法在入口外部IP上访问该服务。
如果可以,我可以访问该服务
$ kubectl exec POD_NAME
# curl GET localhost:6078/todos
但是我无法通过入口访问它。 GKE UI显示如下错误:
OR
即使后端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
答案 0 :(得分:1)
很难不知道'todo'是做什么的,但是有几件事:
Ingress定义存在缩进错误。我不确定这是拼写错误还是没有应用:
应该是:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: todo-ingress
spec:
rules:
- http:
paths:
- path: /*
backend:
serviceName: todo
servicePort: 6078
如果您真的想要/*
而没有host
,则默认后端将覆盖您,因为这是nginx.conf
中的最后一条规则,因此您最好配置:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: todo-ingress
spec:
backend:
serviceName: todo
servicePort: 6078
您的服务是否绑定到0.0.0.0
而不是127.0.0.1
。在127.0.0.1
上收听会导致其在广告连播中本地播放,但不会在外部播放。