Ошибка "Нет маршрута, соответствующего этим значениям" контроллера входящего трафика Kong. - PullRequest
2 голосов
/ 06 августа 2020

Попытка подключиться к контейнеру Jupyter Lab (в конечном итоге и к другим приложениям), работающему в облачной управляемой службе Kubernetes, с использованием Kong в качестве контроллера входящего трафика. Получение "no Route matched with those values" в ответе http на publi c IP Kong и журналы входящего контроллера указывают:

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 в дополнение к целевому порту контейнера.

Спасибо за любую помощь в отладке этого.

1 Ответ

2 голосов
/ 06 августа 2020

Ваш rjup2 Service не имеет допустимого селектора. Обратите внимание, что Pods, который вы пытаетесь открыть, помечен меткой run: rjup2, а ваш Service имеет селектор app: rjup2.

Btw. вы получите очень четкое сообщение об ошибке, которое указывает, где может быть проблема:

service kong/rjup2 does not have any active endpoints

Если ваша rjup2 служба в пространстве имен kong не имеет активных конечных точек, это означает, что она не раскрывает ваши Pods правильно, что может указывать на возможное несоответствие в вашей конфигурации.

Вы можете проверить это, запустив:

kubectl get ep -n kong

Обычно вы должны увидеть соответствующий объект Endpoints. В вашем случае вы не увидите его, поскольку ваш Service не может отображать никакие модули, пока у него не будет действующего селектора.

Если вы исправите свое определение 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
...