Kubernetes Nginx Ingress не может найти конечную точку службы - PullRequest
0 голосов
/ 03 января 2019

У меня возникли проблемы с работой входного контроллера Nginx в моем кластере Kubernetes.Я создал nginx-ingress развертывания, службы, роли и т. Д., В соответствии с 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.

Я не уверен, почему оно говорит Service "default/hello-world" does not have any active Endpoint.Я использовал аналогичное определение сервиса для входного контроллера traefik без каких-либо проблем.

Я надеюсь, что упускаю что-то очевидное с входом nginx.Мы будем благодарны за любую помощь, которую вы можете оказать!

1 Ответ

0 голосов
/ 04 января 2019

Я обнаружил, что я делаю неправильно.В своем определении приложения я использовал 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
...