我在使用Nuberx入口控制器在我的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 secret(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入口控制器使用了类似的服务定义,没有任何问题。
在我的应用程序定义中,name用作我的选择器
selector:
matchLabels:
name: hello-world
template:
metadata:
labels:
name: hello-world
而在我的服务中,我正在使用 app
selector:
app: hello-world
更新我的服务后使用app,它工作
selector:
matchLabels:
app: hello-world
template:
metadata:
labels:
app: hello-world
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。