Kubernetes Traefik,不断获取服务不可用

Kubernetes Traefik, keep getting service unavailable

任何人都知道为什么我总是无法获得以下 YAML 代码的服务。入口指向指向容器的服务,它应该可以正常工作。对于此示例,我只是使用 NGINX 容器进行测试。

apiVersion: v1
kind: Service
metadata:
  name: frontend
spec:
  selector:
    k8s-app: traefik-ingress-lb
    app: nginx
  ports:
  - name: web
    port: 80
    targetPort: 80

---

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: frontend
spec:
  rules:
  - host: test.example.services
    http:
      paths:
      - path: /
        backend:
          serviceName: frontend
          servicePort: web

---

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.15.4
        ports:
        - containerPort: 80

---

该服务有一个应用程序没有的选择器。删除标签 k8s-app: traefik-ingress-lb 后一切正常。

感谢 Traefik Slack 频道的 Daniel Tomcej 在这里帮助我。

如果您使用 traefik 作为入口控制器,那么文档可能会产生误导。下面你可以看到一个来自 traefik 网站的入口控制器的例子。相同的配置为我的应用程序返回 503 错误。结果是,我必须将 servicePort: http 更改为 servicePort: 80,此更改解决了问题!

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: cheese
  annotations:
    kubernetes.io/ingress.class: traefik
spec:
  rules:
  - host: stilton.minikube
    http:
      paths:
      - path: /
        backend:
          serviceName: stilton
          servicePort: http
      ...