入口与服务之间的相互作用

入口可用于将流量从端点(或名称)路由到服务,然后将服务转发到具有匹配标签的pod。但是,入口不会公开任意端口或协议,这就是服务需要为LoadBalancerNodePort类型的原因。

到目前为止,太好了。我跟随guide安装Traefik作为入口控制器,一切都已启动并运行,但是我不明白为什么它还能工作。这个问题与特拉菲克无关。我多次看到这种模式。

第一个清单由入口部署和名为traefik-ingress-service类型的称为LoadBalancer的服务(也与NodePort一起使用)组成。

---
kind: Deployment
apiVersion: extensions/v1beta1
metadata:
  name: traefik-ingress-controller
  labels:
    k8s-app: traefik-ingress-lb-dep
spec:
  replicas: 1
  selector:
    matchLabels:
      k8s-app: traefik-ingress-lb
  template:
    metadata:
      labels:
        k8s-app: traefik-ingress-lb
        name: traefik-ingress-lb
    spec:
      terminationGracePeriodSeconds: 60
      containers:
      - image: traefik:v1.7
        name: traefik-ingress-lb
        ports:
        - name: http
          containerPort: 80
        - name: admin
          containerPort: 8080
        args:
        - --api
        - --kubernetes
        - --logLevel=INFO
---
kind: Service
apiVersion: v1
metadata:
  name: traefik-ingress-service
spec:
  selector:
    k8s-app: traefik-ingress-lb
  ports:
    - protocol: TCP
      port: 80
      name: web
    - protocol: TCP
      port: 8080
      name: admin
  # type: NodePort (works as well,but don't forget to add port to uri)
  type: LoadBalancer

为了公开Traefik的用户界面,还有另一个清单,包括第二项服务(类型:默认)traefik-web-ui和一个将流量从/traefik-web-ui的入口。

apiVersion: v1
kind: Service
metadata:
  name: traefik-web-ui
spec:
  #type: NodePort
  selector:
    k8s-app: traefik-ingress-lb
  ports:
  - name: web
    port: 80
    targetPort: 8080
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: traefik-web-ui
  annotations:
    kubernetes.io/ingress.class: traefik 
spec:
  rules:
  - host: dashboard.localhost #optional,otherwise cluster's ip
    http:
  #- http:
      paths:
      - path: /
        backend:
          serviceName: traefik-web-ui
          servicePort: web

我不明白为什么这样做有效,因为不应从外部访问服务traefik-web-ui。另一个服务traefik-ingress-service是,但是它们没有连接。那么,这是如何工作的?

此外,我很好奇为什么我不只是创建一个类型为traefik-web-uiNodePort的服务LoadBalancer

coffee3582 回答:入口与服务之间的相互作用

这就是入口控制器应该工作的方式。

您有一个由入口控制器管理的负载均衡器。每次创建入口资源时,traefik配置(在traefik窗格中运行)都会相应更新,以将流量路由到内部服务(在您的情况下为traefik-web-ui服务)。

这张图片摘自this很好的文章,非常具有说明性。 入口控制器(第一个清单中的服务+部署)是大入口盒,将流量路由到内部服务。 enter image description here

本文链接:https://www.f2er.com/2897362.html

大家都在问