副标题#e#
Traefik mesh没有通过sidecar的形式进行流量拦截或者修改,那是怎么实现的呢?
它其实是借助于CoreDNS,它通过修改CoreDNS的少量配置,让用于允许使用Mesh端点而不是标准的Kubernetes端点,Mesh端点和用于服务并行运行,用户可以选择是否使用它。
安装
前提:
Kubernetes 1.11+
CoreDNS 1.3+
Helm v3
Traefik mesh的安装很简单,使用Helm即可实现快速的安装。
(1)添加Helm仓库
helm repo add traefik-mesh https://helm.traefik.io/mesh
helm repo update
(2)下载Chart包
helm pull traefik-mesh/traefik-mesh
(3)解压Chart包
tar xf traefik-mesh-3.0.6.tgz
Traefik mesh会部署4个服务,它们分别是:
controller:Mesh的控制器,负责代理节点的所有配置分析和配置
proxy:Mesh的代理,负责处理每个节点的流量代理
tracing:跟踪配置
metrics:监控配置
(4)安装traefik mesh
helm install traefik-mesh .
traefik mesh需要coredns的配合,主要改动部分如下:
#### Begin Maesh Block
maesh:53 {
errors
rewrite continue {
name regex ([a-zA-Z0-9-_]*).([a-zv0-9-_]*).maesh default-{1}-6d61657368-{2}.default.svc.cluster.local
answer name default-([a-zA-Z0-9-_]*)-6d61657368-([a-zA-Z0-9-_]*).default.svc.cluster.local {1}.{2}.maesh
}
kubernetes cluster.local in-addr.arpa ip6.arpa {
pods insecure
upstream
fallthrough in-addr.arpa ip6.arpa
}
forward . /etc/resolv.conf
cache 30
loop
reload
loadbalance
}
#### End Maesh Block
#### Begin Traefik Mesh Block
traefik.mesh:53 {
errors
rewrite continue {
name regex ([a-zA-Z0-9-_]*).([a-zv0-9-_]*).traefik.mesh default-{1}-6d61657368-{2}.default.svc.cluster.local
answer name default-([a-zA-Z0-9-_]*)-6d61657368-([a-zA-Z0-9-_]*).default.svc.cluster.local {1}.{2}.traefik.mesh
}
kubernetes cluster.local in-addr.arpa ip6.arpa {
pods insecure
upstream
fallthrough in-addr.arpa ip6.arpa
}
forward . /etc/resolv.conf
cache 30
loop
reload
loadbalance
}
#### End Traefik Mesh Block
如果在部署过程中,coredns报以下错误:
#p#副标题#e#
plugin/forward: this plugin can only be used once per Server Block
请检查coredns的configMap配置,看DNS下是否有两个forward。
配置
Traefik mesh的配置分为静态配置和动态配置。