coo*_*ndy 4 nginx kubernetes kubernetes-ingress nginx-ingress
我在让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
Run Code Online (Sandbox Code Playgroud)
并为其创建了服务
kind: Service
apiVersion: v1
metadata:
namespace: default
name: hello-world
spec:
selector:
app: hello-world
ports:
- name: server
port: 8080
Run Code Online (Sandbox Code Playgroud)
最后,我创建了一个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
Run Code Online (Sandbox Code Playgroud)
但是,我无法访问我的应用程序,并且在日志中看到
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.
Run Code Online (Sandbox Code Playgroud)
我不确定为什么会这样说Service "default/hello-world" does not have any active Endpoint。我对traefik入口控制器使用了类似的服务定义,没有任何问题。
我希望我在nginx入口中缺少一些明显的东西。您能提供的任何帮助将不胜感激!
我发现自己做错了。在我的应用程序定义中,我一直name用作选择器
selector:
matchLabels:
name: hello-world
template:
metadata:
labels:
name: hello-world
Run Code Online (Sandbox Code Playgroud)
而我在使用服务 app
selector:
app: hello-world
Run Code Online (Sandbox Code Playgroud)
更新我的服务以使用后app,它可以正常工作
selector:
matchLabels:
app: hello-world
template:
metadata:
labels:
app: hello-world
Run Code Online (Sandbox Code Playgroud)
另一种可能发生的情况是入口控制器的入口类与用于您的服务的入口资源清单中的入口类不匹配。
Nginx 安装命令,简短示例:
helm install stable/nginx-ingress \
--name ${INGRESS_RELEASE_NAME} \
--namespace ${K8S_NAMESPACE} \
--set controller.scope.enabled=true \
--set controller.scope.namespace=${K8S_NAMESPACE} \
--set controller.ingressClass=${NGINX_INGRESS_CLASS}
Run Code Online (Sandbox Code Playgroud)
入口资源规范。,摘录:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
labels:
annotations:
# folowing line is not valid for K8s or Helm,
# but reflects the values must be the same
kubernetes.io/ingress.class: ${NGINX_INGRESS_CLASS}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3970 次 |
| 最近记录: |