首页 > 解决方案 > 将 traefik 用作 DaemonSet 还是部署?

问题描述

我应该将 traefik 1.7.x 部署为 DaemonSet 还是 GKE (Google K8S) 中的 A 部署?

环境描述

Kubernetes 集群在谷歌云中具有节点自动扩缩器,托管多个生产集群。集群最多可以扩展 90 个节点(最少 6 个节点),目前我们traefik在每个集群中部署了 10 个副本的 pod(我们使用 kustomize 在所有集群中部署相同的清单)。

我们注意到有 18 个节点(europe-west1区域)的集群的响应时间较慢,而我们在australia-southeast1区域中的集群有 6 个节点。两个集群都有 10 个 traefik 副本。

部署规范

traefik.toml:

    [kubernetes]
    # all namespaces!
    namespaces = []

服务.yaml

apiVersion: v1
kind: Service
metadata:
  labels:
    app: traefik
  name: traefik-ingress
  namespace: ingress-traefik
spec:
  externalTrafficPolicy: Local
  ports:
  - name: http
    port: 80
    protocol: TCP
    targetPort: 80
  - name: https
    port: 443
    protocol: TCP
    targetPort: 443
  selector:
    app: traefik
  sessionAffinity: None
  type: LoadBalancer
  loadBalancerIP: {{LOAD_BALANCER_IP}}

部署.yaml

---
apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: traefik
  name: traefik
  namespace: ingress-traefik
spec:
  replicas: 10
  selector:
    matchLabels:
      app: traefik

  template:
    metadata:
      labels:
        app: traefik
    spec:
      containers:
      - args:
        - --configfile=/config/traefik.toml
        image: traefik:1.7.9-alpine

问题

  1. 在这种情况下(使用 GKE 节点自动扩缩器)我们的集群的最佳配置是什么?使用 Deployment 或 DaemonSet 进行 traefik?
  2. 根据集群大小(节点数),traefik pod 的数量是否会影响响应时间?
  3. 当使用 DaemonSet(每个节点的 pod)或为整个集群使用多个副本的部署时,集群内部的路由(pod、服务和节点网络之间的跳跃)是否更容易进行 traefik?(我们为每个 https 服务使用 K8S 命名空间,并且 traefik 有自己的命名空间)。

标签: kubernetesgoogle-kubernetes-enginetraefiktraefik-ingress

解决方案


推荐阅读