当前位置: 首页 > 知识库问答 >
问题:

将traefik用作DaemonSet还是部署?

濮彬
2023-03-14

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

Kubernetes集群使用Google cloud中的node autoscaler,托管几个生产集群。集群最多可以扩展到90个节点(最少6个节点),目前我们在每个集群中部署了10个副本的< code>traefik pod(我们使用kustomize在所有集群中部署相同的清单)。

我们注意到具有18个节点的集群(< code>europe-west1区域)的响应时间较慢,而< code > Australia-south east 1 区域的集群只有6个节点。两个集群都有traefik的10个副本。

traefik.toml:

    [html" target="_blank">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节点自动缩放器),集群的最佳配置是什么?使用部署或DaemonSet进行traefik
  2. 根据集群大小(节点数),河豚荚的数量是否会影响响应时间
  3. 当使用DaemonSet(每个节点的pod)或为整个集群部署多个副本时,集群内的路由(pod、服务和节点网络之间的跳变)是否更易于traefik?(我们为每个https服务使用K8S命名空间,traefik有自己的命名空间)

共有1个答案

籍辰沛
2023-03-14

可以将 Traefik 与部署或 DaemonSet 对象一起使用,而这两种选项都有自己的优点和缺点:

> < li>

使用部署时,可扩展性会好得多,因为使用DaemonSet时,您将拥有每个节点一个单元的模型,而使用部署时,根据您的环境,您可能需要较少的副本。

当节点加入集群时,DaemonSets会自动扩展到新节点,而部署pod仅在需要时在新节点上调度。

DaemonSets确保只有一个pod副本在任何单个节点上运行。如果您想确保两个pod不会最终在同一个节点上,部署需要关联设置。

DaemonSets可以使用NET_BIND_SERVICE功能运行,这将允许它绑定到每个主机上的端口80/443/etc。这将允许绕过kube代理,并减少流量跳跃。请注意,这违反了Kubernetes最佳实践指南,并增加了调度/缩放问题的可能性。尽管存在潜在问题,但这仍然是大多数入口控制器的选择。

>

  • 部署具有更容易的向上和向下扩展可能性。它可以实现完整的pod生命周期,并支持库伯内特斯1.2的滚动更新。至少需要一个Pod来运行部署。

    DaemonSet自动缩放到满足特定选择器的所有节点,并保证一次填充一个节点。Kubernetes 1.7也完全支持DaemonSets的滚动更新。

    您可能想查看其他 traefik 文档

  •  类似资料:
    • 什么是 DaemonSet? DaemonSet 确保全部(或者一些)Node 上运行一个 Pod 的副本。当有 Node 加入集群时,也会为他们新增一个 Pod 。当有 Node 从集群移除时,这些 Pod 也会被回收。删除 DaemonSet 将会删除它创建的所有 Pod。 使用 DaemonSet 的一些典型用法: 运行集群存储 daemon,例如在每个 Node 上运行 glusterd、

    • 问题内容: 我正在设计一个库,在该库中,一个类应具有将自身内部结构转换为文本的能力。我应该使用哪个班级:或?两者之间的主要区别是什么? 哪一个? 问题答案: An 是面向字节的流。您编写的任何文本都必须使用某种编码(最常见的是ISO-8859-1或UTF-8)编码为字节。A 是面向字符的流,根据它要写入的内容,它可能会或可能不会在内部将字符编码为字节。 编辑 如果您正在设计一个库,那么如果您提供一

    • 假设我们使用GitHub操作构建并发布应用程序的容器映像。我将选择ASP.NET Core作为应用程序的技术堆栈,尽管这不太重要。 我想讨论两种不同的方法: 1.“外部构建”:在GitHub Actions runner中构建/编译应用程序,将输出复制到容器映像中 例如,我们的GitHub操作工作流文件可能如下所示... ...有一个简单的Dockerfile像这样: 2.“内置”:内置一个容器,

    • Træfɪk 是一个云原生的新型的 HTTP 反向代理、负载均衡软件,能轻易的部署微服务. 它支持多种后端 (Docker, Swarm, Mesos/Marathon, Consul, Etcd, Zookeeper, BoltDB, Rest API, file...) ,可以对配置进行自动化、动态的管理. 选择traefik主要是有以下特点让我们决定使用: Golang编写,单文件部署,与系

    • 前面我们的课程中学习了大部分资源对象的使用方法,上节课我们通过一个WordPress的示例把我们前面的内容做了一个总结。今天我们来给大家讲解另外一个Pod控制器的使用方法,我们前面主要讲解的是Deployment这种对象资源的使用,接下来我们要讲解的是在特定场合下使用的控制器:DaemonSet与StatefulSet。 DaemonSet 的使用 通过该控制器的名称我们可以看出它的用法:Daem

    • 我在GAE Flexible的许多示例项目中看到,与传统的WAR部署相比,开始接受“胖”JAR的概念(使用嵌入式Web服务器,如码头,Spring靴,SparkJava或Tomcat)。这两种方法都涉及单个 JVM 进程(即,无论向 Tomcat 部署了多少个 WAR,它都是相同的 JVM 进程)。 在什么情况下,在 Google 应用引擎中,任何一种部署方法都优于另一种部署方法?