首页 文章

暴露traefik在一个内部kubernetes集群中运行的正确方法?

提问于
浏览
0

我有一个内部Kubernetes集群 . 根据traefik给出的示例,我在集群中运行traefik . 它绑定到一个节点,这将是我的负载均衡器 . 我可以通过使用路由命中节点端口来访问运行的服务(使用入口) . 例如http://build.mydomain.com:NODEPORT将把我送到我的詹金斯 .

但我希望能够通过输入http://build.mydomain.com来击中我的詹金斯

这是可能的还是我必须运行集群的traefik outside

基本上我只是想在负载均衡器上点击80以触及traefik入口控制器,这应该根据入口来路由请求 .

---
apiVersion: v1
kind: ServiceAccount
metadata:
  name: traefik-ingress-controller
  namespace: kube-system
---
kind: Deployment
apiVersion: extensions/v1beta1
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
        name: traefik-ingress-lb
        ports:
        - name: http
          containerPort: 80
        - name: admin
          containerPort: 8080
        args:
        - --api
        - --kubernetes
        - --logLevel=INFO
      nodeSelector:
        node-role.kubernetes.io/worker: loadbalancer
---
kind: Service
apiVersion: v1
metadata:
  name: traefik-ingress-service
  namespace: kube-system
spec:
  selector:
    k8s-app: traefik-ingress-lb
  ports:
    - protocol: TCP
      port: 80
      name: web
    - protocol: TCP
      port: 8080
      name: admin
  type: NodePort

1 回答

  • 0

    如果在集群内部署traefik,则只能将其作为NodePort / LoadBalancer或Ingress的服务公开 . 如果它是一个Ingress,猜猜你需要一个群集外的负载均衡器 .

    我只是想要一个简单的反向代理来发现和路由流量到新服务 . 通过在集群外部运行traefik并在主节点上使用 point kubernetes api-server ,这很有效 . 这是在Traefik配置文件中完成的 . 像这样:

    [kubernetes]
    endpoint = "https://my-master-node:6443"
    token="" <-- GET THIS FROM YOUR KUBERNETES MASTER NODE
    certAuthFilePath = "/root/ssl/ca.crt" <-- GET THIS FROM YOUR KUBERNETES MASTER NODE
    

    然后它拿起了入口,并将路由到正确的服务 .

    我在我的集群中配置的服务之一是Jenkins . Jenkins希望它的代理默认连接端口50000 . 我花了一些时间试图弄清楚如何基于同一主机获得一个溃败,以击中群集中的另一个端口 . 无法让它真正起作用 .

    然后我发现trafik不支持TCP . Jenkins代理通过http联系master与hello和 then 设置代理到 TCP 的slave连接 .

    所以最后浪费了精力:-(

相关问题