Traefik Ingress无法路由流量

时间:2020-08-13 08:21:16

标签: kubernetes kubernetes-ingress traefik traefik-ingress

我已经使用配置将kubernetes集群部署在了无所事事的机器上: 一个主节点和两个工作节点。 部署了两个服务,分别名为 nodeport-svc-rc nodeport-svc-rs

服务配置:

# nodeport-svc-rc
apiVersion: v1
kind: Service
metadata:
  name: nodeport-svc-rc
spec:
  type: NodePort
  ports:
  - port: 5001
    targetPort: 5001
    nodePort: 30001
  selector:
    app: controller

# nodeport-svc-rs
apiVersion: v1
kind: Service
metadata:
  name: nodeport-svc-rs
spec:
  type: NodePort
  ports:
  - port: 5002
    targetPort: 5002
    nodePort: 30002
  selector:
    app: controller-rs

入口配置:

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: ingress
  annotations:
    kubernetes.io/ingress.class: traefik
    ingress.kubernetes.io/auth-type: "basic"
    ingress.kubernetes.io/auth-secret: "mysecret"
spec:
  rules:
    - host: example.com
      http:
        paths:
          - path: /demo
            backend:
              serviceName: nodeport-svc-rc
              servicePort: 5001
          - path: /demof
            backend:
              serviceName: nodeport-svc-rs
              servicePort: 5002

Traefik能够将其仪表板上的入口资源检测为后端服务:

Traefik Dashboard Image

但是在仪表板上没有检测到前端,在后端也没有检测到IP地址。

/ etc / hosts文件中的条目:XXX.XXX.X.X example.com

我无法使用入口路由流量。如果我从浏览器 example.com/demo 命中,错误显示无法访问站点我错了吗?有人可以帮我吗?

# sudo kubectl describe ing
Name:             ingress
Namespace:        default
Address:          
Default backend:  default-http-backend:80 (<error: endpoints "default-http-backend" not found>)
Rules:
  Host         Path  Backends
  ----         ----  --------
  example.com  
               /demo    nodeport-svc-rc:5001 (10.244.171.95:5001,10.244.171.96:5001,10.244.235.150:5001)
               /demof   nodeport-svc-rs:5002 (10.244.171.98:5002,10.244.235.157:5002,10.244.235.158:5002)
Annotations:   ingress.kubernetes.io/auth-secret: mysecret
               ingress.kubernetes.io/auth-type: basic
               kubernetes.io/ingress.class: traefik
Events:        <none>

当我直接点击nodePort服务 example.com:30001 example.com:30002 时,它会成功给出响应。

编辑:在Traefik控制器配置下面:

kind: Deployment
apiVersion: apps/v1
metadata:
  name: traefik-ingress-controller
  namespace: kube-system
  labels:
    k8s-app: traefik-ingress-lb
spec:
  replicas: 1
  selector:
    matchLabels:
      k8s-app: traefik-ingress-lb
  template:
    metadata:
      labels:
        k8s-app: traefik-ingress-lb
        name: traefik-ingress-lb
    spec:
      serviceAccountName: traefik-ingress-controller
      terminationGracePeriodSeconds: 60
      containers:
      - image: traefik:v1.7.26-alpine
        name: traefik-ingress-lb
        args:
        - --web
        - --kubernetes

0 个答案:

没有答案