Kong 入口控制器错误 "no Route matched with those values"

Error "no Route matched with those values" with the Kong ingress controller

尝试连接到使用 Kong 作为入口控制器的云托管 Kubernetes 服务上的 Jupyter Lab 容器(最终还有其他应用程序)运行。在对 Kong 的 public IP 的 http 响应上收到 "no Route matched with those values" 并且入口控制器日志表明:

service kong/rjup2 does not have any active endpoints
no configuration change, skipping sync to Kong

部署配置:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: rjup2
  namespace: kong
spec:
  selector:
    matchLabels:
      run: rjup2
  replicas: 1
  template:
    metadata:
      labels:
        run: rjup2
    spec:
      restartPolicy: Always
      containers:
        - name: rjup2
          image: jupyter/minimal-notebook
          imagePullPolicy: Always
          ports:
            - containerPort: 8888
              protocol: TCP

服务配置:

apiVersion: v1
kind: Service
metadata:  
  name: rjup2
  namespace: kong
spec:
  selector:    
    app: rjup2
  type: ClusterIP
  ports:  
  - name: http
    port: 80
    targetPort: 8888
    protocol: TCP

入口资源配置:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: rjup2
  namespace: kong
spec:
  tls:
  - hosts:
      - <AKS API server address>
  rules:
  - host: <AKS API server address>
    http:
      paths:
      - path: /
        backend:
          serviceName: rjup2
          servicePort: 80

API Server Address 已正确填充到已部署的 YAML 中。在将它们整合到 Kong 的默认命名空间下之前,我尝试了不同的命名空间,并且除了容器目标端口之外,还尝试将服务端口设置为 8888。

感谢您在调试过程中提供的任何帮助。

您的 rjup2 Service 没有有效的选择器。请注意,您尝试公开的 Pods 标有 run: rjup2 标签,并且您的 Service 具有 app: rjup2 选择器。

顺便说一句。您会收到非常清楚的错误消息,指出问题可能出在哪里:

service kong/rjup2 does not have any active endpoints

如果您在 kong 命名空间中的 rjup2 服务没有任何活动端点,这意味着它没有正确公开您的 Pods,这可能表明您的配置。

可以通过运行查看:

kubectl get ep -n kong

通常您应该看到匹配的 Endpoints 对象。在你的情况下,你不会看到它,因为你的 Service 不能公开任何 pods 直到它有一个有效的选择器。

如果您修复 Service 定义,一切都应该正常工作:

apiVersion: v1
kind: Service
metadata:  
  name: rjup2
  namespace: kong
spec:
  selector:    
    run: rjup2
  type: ClusterIP
  ports:  
  - name: http
    port: 80
    targetPort: 8888
    protocol: TCP