admin管理员组文章数量:1567535
介绍
traefik开源的边缘路由器,traefik 本身就能跟 kubernetes API 交互,感知后端变化。traefik 是一个前端负载均衡器,做反向代理。对于微服务架构尤其是 kubernetes 等编排工具具有良好的支持;traefik部署在k8s上分为daemonset和deployment。所有操作都会自动实时进行(热加载)。在2.0版本之后增加了tcp代理。证书有效期为3个月,剩余不足30天时,Traefik将自动尝试续订。
Traefik基于EntryPoints、Routers、Middlewares和Services的概念构建。
其主要功能包括动态配置、自动服务发现和支持多种后端和协议。
- EntryPoints:EntryPoints是Traefik的网络入口点。它们定义了接收数据包的端口,以及是监听TCP还是UDP。
- Routers:路由器负责将传入的请求连接到能够处理它们的服务。
- Middlewares:中间件附加到路由器上,可以在请求或响应发送到您的服务之前对其进行修改。
- Services:Services负责配置如何到达最终将处理传入请求的实际服务。
核心概念
当请求Traefik时,请求首先到entrypoints,然后分析传入的请求,查看他们是否与定义的Routers匹配。如果匹配,则会通过一系列middlewares处理,再到traefikServices上做流量转发,最后请求到kubernetes的services上
边缘路由Edge Router
Traefik是一个边缘路由器;这意味着它是您平台的入口,拦截和路由所有传入的请求:它了解所有逻辑和规则,这些逻辑和规则决定了哪些服务处理哪些请求(基于路径、主机、头部信息等)。
动态发现服务 Auto Service Discovery
在传统意义上,边缘路由器(或反向代理)需要一个配置文件,就像nginx需要一个配置文件配置其中包含所有可能的通往服务的路由。而Traefik则是从服务本身获取这些路由信息。
在部署服务时,您会附加一些信息,这些信息会告诉Traefik服务可以处理的请求的特性。这意味着当服务被部署时,Traefik会立即检测到它并实时更新路由规则。同样地,当服务从基础设施中被移除时,相应的路由也会被相应地删除。您不再需要创建和同步充斥着IP地址或其他规则的配置文件。
对比Nginx ingress
Nginx Ingress | Traefik ingress |
---|---|
协议 http/https、http2、grpc、tcp/udp | http/https、http2、grpc、tcp、tcp+tls |
路由匹配 host、path | host、path、headers、query、path prefix、method |
- | 命名空间支持:共用或指定命名空间 |
- | 部署策略:金丝雀部署、蓝绿部署、灰度部署 |
upstream探测 重试、超时、心跳探测 | 重试、超时、心跳探测、熔断 |
负载均衡算法 RR、会话保持、 | 最小连接、最短时间、一致性hash WRR、动态RR、会话保持 |
优点 简单易用,易接入,cpu利用率优势大 | Golang编写,部署容易,支持众多的后端,内置WebUI |
缺点 没有解决nginx reload,插件多,但是扩展性能查差 | 性能略逊于NGINX,但强于HAProxy |
traefik部署
- 前提条件
其中master节点充当边缘节点,安装两块网卡,eth0:k8s集群内网ip eth1公网ip
官方文档:https://doc.traefik.io/traefik/providers/kubernetes-crd/ - 部署资源
wget https://raw.githubusercontent/traefik/traefik/v2.11/docs/content/reference/dynamic-configuration/kubernetes-crd-definition-v1.yml kubectl apply -f kubernetes-crd-definition-v1.yml kubectl get crd
- 权限配置
创建相应的ClusterRole和ClusterRoleBinding,赋予权限apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: traefik-ingress-controller rules: - apiGroups: - "" resources: - services - endpoints - secrets verbs: - get - list - watch - apiGroups: - extensions - networking.k8s.io resources: - ingresses - ingressclasses verbs: - get - list - watch - apiGroups: - extensions - networking.k8s.io resources: - ingresses/status verbs: - update - apiGroups: - traefik.io - traefik.containo.us resources: - middlewares - middlewaretcps - ingressroutes - traefikservices - ingressroutetcps - ingressrouteudps - tlsoptions - tlsstores - serverstransports verbs: - get - list - watch --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: traefik-ingress-controller roleRef: apiGroup: rbac.authorization.k8s.io kind
版权声明:本文标题:千云物流-k8s上安装路由traefik 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/xitong/1725661538a1035391.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论