如何使Traefik与Microk8s兼容

时间:2019-05-24 09:23:28

标签: kubernetes yaml traefik minikube microk8s

我在使用Traefik作为入口控制器的Minikube上进行了有效的设置。我尝试在Microk8s上使用该设置,但是Traefik无法工作,尽管我可以看到Traefik仪表板,并且说一切正常,但是每次尝试使用入口url时都会遇到超时,但是如果使用端点IP该服务(我可以在traefik仪表板中看到)的功能,但我不能完全访问该服务。我可以访问IP/service1,但是不能访问其任何子网址,IP/service1/sub-service1无效。

我也尝试过microk8s.enable ingress,但是它为我创建了一个nginx入口,然后由于要使用traefik而禁用了它。

我是否需要更改配置以使其与Microk8s兼容?如果是,怎么办?

我不得不提到我有两个入口文件:

  • traefik-ui.yaml:包含我的traefik的服务和入口。我使用此service + ingress访问traefik仪表板,并且正如我提到的那样
  • wws-ingress.yaml:是我的主要入口,它使我可以与kubernetes内部的组件进行通信,而这是不起作用的部分。

我的Yaml文件:

traefik-ui.yaml:

---
apiVersion: v1
kind: Service
metadata:
  name: traefik-web-ui
  namespace: kube-system
spec:
  selector:
    k8s-app: traefik-ingress-lb
  ports:
  - name: web
    port: 80
    targetPort: 8080
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: traefik-web-ui
  namespace: kube-system
spec:
  rules:
  - host: traefik-ui.minikube
    http:
      paths:
      - path: /
        backend:
          serviceName: traefik-web-ui
          servicePort: web

wws-ingress.yaml:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: wws
  annotations:
    kubernetes.io/ingress.class: "traefik"
    traefik.frontend.rule.type: PathPrefixStrip
    traefik.frontend.passHostHeader: "true"
    traefik.backend.loadbalancer.sticky: "true"
    #traefik.ingress.kubernetes.io/rule-type: ReplacePathRegex
    traefik.wss.protocol: http
    traefik.wss.protocol: https
spec:
  rules:
  - host: streambridge.local
    http:
      paths:
      - path: /streambridge
        backend:
          serviceName: streambridge
          servicePort: 9999
      - path: /dashboard
        backend:
          serviceName: dashboard
          servicePort: 9009
      - path: /gateway
        backend:
          serviceName: gateway
          servicePort: 8080
      - path: /rdb
        backend:
          serviceName: rethinkdb
          servicePort: 8085

Minikube命令(这可以正常工作):

kubectl apply -f https://raw.githubusercontent.com/containous/traefik/v1.7/examples/k8s/traefik-rbac.yaml
kubectl apply -f https://raw.githubusercontent.com/containous/traefik/v1.7/examples/k8s/traefik-ds.yaml

kubectl apply -f traefik-ui.yaml
kubectl apply -f wws-ingress.yaml

在Microk8s中,我尝试过:

microk8s.kubectl apply -f https://raw.githubusercontent.com/containous/traefik/v1.7/examples/k8s/traefik-rbac.yaml
microk8s.kubectl apply -f https://raw.githubusercontent.com/containous/traefik/v1.7/examples/k8s/traefik-ds.yaml
microk8s.kubectl apply -f traefik-ui.yaml
microk8s.kubectl apply -f wws-ingress.yaml

1 个答案:

答案 0 :(得分:1)

在另一台机器上测试我的设置并看到它可以正常工作后,我发现我的机器出了点问题,并在我的两位同事的帮助下花费了大量时间并尝试了发现的所有问题知道问题与我的机器中的iptable有关,我们按照以下说明解决了问题:https://github.com/ubuntu/microk8s/issues/72