让Nginx入口控制器在我的Kubernetes集群中工作时遇到了一些问题。我已经创建了nginx入口部署、服务、角色等,根据https://kubernetes.github.io/ingress-nginx/deploy/
我还部署了一个简单的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.
我不确定为什么它说
服务“默认/hello-world”没有任何活动endpoint
。我为traefik入口控制器使用了类似的服务定义,没有任何问题。
我希望我在nginx ingress上遗漏了一些明显的东西。如果您能提供任何帮助,我们将不胜感激!
在我的例子中,我在服务选择器中包含了一个“id”指令,该指令在部署元数据中丢失,这阻止了endpoint控制器找到正确的Pod。我预计相反的情况也会失败:
---
apiVersion: v1
kind: Service
metadata:
name: some-service
spec:
ports:
- name: port-name
port: 1234
protocol: TCP
selector:
app: some-app
id: "0" ## include in both or neither
另一种可能发生的情况是,入口控制器的入口类与用于服务的入口资源清单中的入口类不匹配。
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}
ingress资源规范,摘录:
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}
我发现我做错了什么。在我的应用程序定义中,我使用名称作为选择器
selector:
matchLabels:
name: hello-world
template:
metadata:
labels:
name: hello-world
而在我的服务中,我使用的是应用程序
selector:
app: hello-world
在将我的服务更新为使用app后,它起到了作用
selector:
matchLabels:
app: hello-world
template:
metadata:
labels:
app: hello-world
问题内容: 当我调试该程序时,服务数组为空? 问题答案: 这是因为没有找到与指定的DocFlavor和属性集相对应的PrintService 。除非您的打印机硬件是最新的,否则可能很难找到支持PostScript的打印机。您可以像这样检查所有支持的DocFlavor: 要查找特定的打印服务,您可以执行以下操作:
我有一个独立的Kafka经纪人,我试图配置SASL。配置如下。我试图在经纪人身上设置SASL_PLAIN身份验证。 我的理解是,这与听众有关。名称服务器中的配置。属性,我不需要jaas文件。但我已经尝试过一种方法,看看这是否是一种更好的方法。 我对这些命令中的每一个都进行了实验,但都产生了相同的异常。 显示的异常为: KafkaServer启动期间出现致命错误。准备关机。。。找不到“KafkaSe
这似乎是由导入的“BaseGameUtils”库项目中的“GameHelper.java”文件生成的,该库项目被我的游戏应用程序引用为库。 我已将google-play-sevices_llb导入到我的工作区,并将其作为一个库引用到BaseGameUtils库本身中。在BaseGameUtils的Android私有库中有一个google-play-services.jar。在Android Dep
我有一个带有Spring Boot的简单微服务应用程序,我尝试添加Spring云网关服务,但它不起作用。所有的微服务,包括Eureka服务器,都工作得很好,但当我尝试使用网关路由访问某些微服务时,它找不到微服务。 ApiGateway pom。xml API网关应用程序。yml公司 API网关主 Api网关未找到404错误
我在添加新方法时遗漏了一些东西,但我不知道什么??它正在userDAO中生成“找不到符号”编译错误。countUsers行: 下面是服务界面: 这是实现: 帮助真的非常感谢!