【发布时间】:2019-05-30 09:57:27
【问题描述】:
我在让 Nginx 入口控制器在我的 Kubernetes 集群中工作时遇到了一些问题。我根据https://kubernetes.github.io/ingress-nginx/deploy/创建了nginx-ingress部署、服务、角色等
我还部署了一个简单的hello-world 应用程序,它侦听端口8080
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: hello-world
namespace: default
spec:
selector:
matchLabels:
name: hello-world
template:
metadata:
labels:
name: hello-world
spec:
containers:
- name: hello-world
image: myrepo/hello-world
resources:
requests:
memory: 200Mi
cpu: 150m
limits:
cpu: 300m
ports:
- name: http
containerPort: 8080
protocol: TCP
并为它创建了一个服务
kind: Service
apiVersion: v1
metadata:
namespace: default
name: hello-world
spec:
selector:
app: hello-world
ports:
- name: server
port: 8080
最后,我创建了一个 TLS 机密 (my-tls-secret) 并按照说明部署了 nginx 入口。例如:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
kubernetes.io/ingress.class: nginx
name: hello-world
namespace: default
spec:
rules:
- host: hello-world.mydomain.com
http:
paths:
- path: /
backend:
serviceName: hello-world
servicePort: server
tls:
- hosts:
- hello-world.mydomain.com
secretName: my-tls-cert
但是,我无法访问我的应用程序,并且在我看到的日志中
W0103 19:11:15.712062 6 controller.go:826] Service "default/hello-world" does not have any active Endpoint.
I0103 19:11:15.712254 6 controller.go:172] Configuration changes detected, backend reload required.
I0103 19:11:15.864774 6 controller.go:190] Backend successfully reloaded.
我不知道为什么它说Service "default/hello-world" does not have any active Endpoint。我为 traefik 入口控制器使用了类似的服务定义,没有任何问题。
我希望我在 nginx 入口处遗漏了一些明显的东西。您可以提供的任何帮助将不胜感激!
【问题讨论】:
-
将所有内容命名为 hello-world 是一种非常好的方式,可以在以后卡住
-
我想这实际上不是 nginx 与服务的连接,而是服务与 pod 的连接失败。我认为它与你使用的标签完全无关,只要它们匹配,
标签: nginx kubernetes kubernetes-ingress nginx-ingress