【云原生】Kubernetes----轻量级的现代HTTP反向代理和负载均衡器之Traefik

目录

引言

一、Traefik基本概念

(一)什么是Ingress

(二)什么是Traefik

(三)Traefik和Nginx的区别

1.设计目标

2.配置语言

3.容器支持

4.功能特性

二、安装部署Traefik

(一)获取文件

(二)创建管理用户

1.查看文件

2.启用RBAC

(三)创建Daemonset

1.查看文件

2.创建资源

(四)创建UI界面

1.查看文件

2.创建资源

三、创建访问资源

(一)创建deployment

(二)创建service

(三)创建ingress规则


引言

在今天的云原生和微服务架构中,反向代理和负载均衡器扮演着至关重要的角色。它们不仅负责处理外部请求并将其路由到正确的服务,而且还提供了诸如SSL终止、负载均衡、请求重写和身份验证等关键功能。在这篇文章中,我们将深入探索Traefik,一个功能强大且轻量级的现代HTTP反向代理和负载均衡器

一、Traefik基本概念

(一)什么是Ingress

Ingress其实就是从 kuberenets 集群外部访问集群的一个入口,将外部的请求转发到集群内不同的 Service 上,其实就相当于 nginx、haproxy 等负载均衡代理服务器,有的人可能觉得我们直接使用 nginx 就实现了,但是只使用nginx这种方式有很大缺陷,每次有新服务加入的时候怎么改 Nginx 配置?不可能让我们去手动更改或者滚动更新前端的 Nginx Pod 吧?那我们再加上一个服务发现的工具比如 consul如何?貌似是可以,对吧?而且在之前单独使用 docker 的时候,这种方式已经使用得很普遍了,Ingress 实际上就是这样实现的,只是服务发现的功能自己实现了,不需要使用第三方的服务了,然后再加上一个域名规则定义,路由信息的刷新需要一个靠Ingress controller 来提供。
Ingress controller 可以理解为一个监听器,通过不断地与 kube-apiserver 打交道,实时的感知后端 service、pod 的变化,当得到这些变化信息后,Ingress controller 再结合 Ingress 的配置,更新反向代理负载均衡器,达到服务发现的作用。其实这点和服务发现工具 consul consul-template 非常类似。

现在可以供大家使用的 Ingress controller 有很多,比如 traefik、nginx-controller、KubernetesIngress Controller for Kong、HAProxy,Ingress controller,当然你也可以自己实现一个 IngressController,现在普遍用得较多的是 traefik 和 nginx-controller

traefik 的性能较 nginx-controller差,但是配置使用要简单许多,如果你的环境主要是容器化的,且需要自动服务发现、动态路由和自动SSL证书管理等特性,Traefik可能更适合。如果你更注重性能、稳定性,或者在传统的Web服务器场景下使用,Nginx可能是更好的选择。

(二)什么是Traefik

Traefik 是一款开源的反向代理与负载均衡工具。它最大的优点是能够与常见的微服务系统直接整合,可以实现自动化动态配置。目前支持Docker、Swarm、Mesos/Marathon、Mesos、Kubernetes、Consu、Etcd、Zookeeper、BoltDB、Rest API等等后端模型。

【云原生】Kubernetes----轻量级的现代HTTP反向代理和负载均衡器之Traefik_第1张图片

1.在NodePort模式下,客户端通过主机名、URL等方式,访问宿主机绑定的随机端口

2.根据随机端口确定访问的是HTTP还是HTTPS

3.Traefik组件会匹配ingress规则,然后代理到后端服务

(三)Traefik和Nginx的区别

Traefik和Nginx都是常见的反向代理服务器,用于在网络中路由和负载均衡请求。它们在设计和功能上有一些区别,下面是它们之间的对比:

1.设计目标

- Traefik的设计目标是为容器化环境提供动态路由和负载均衡。它在支持Docker、Kubernetes等容器编排平台方面表现出色,并且具有自动发现和配置的能力。
- Nginx的设计目标是作为通用的高性能Web服务器和反向代理。它在传统的服务器环境中广泛使用,可以处理静态和动态内容,并提供丰富的功能和模块化的架构。

2.配置语言

- Traefik使用声明性的配置文件格式,支持多种后端和路由规则的定义。它还提供了REST API和动态配置的能力,可以与现代的容器编排工具集成。
- Nginx使用基于文件的配置语言,具有灵活的配置选项和强大的模块化系统。它的配置通常需要手动编辑配置文件,并在需要时重新加载。

3.容器支持

- Traefik是为容器化环境而设计的,可以自动检测和配置与容器相关的路由和负载均衡规则。它可以与Docker、Kubernetes等容器编排平台紧密集成,并提供简化的配置和部署体验。
- Nginx也可以在容器环境中使用,但需要手动配置并与容器编排工具进行集成。它通常被用作独立的反向代理服务器,而不是与容器平台紧密集成。

4.功能特性

- Traefik在容器环境中具有自动服务发现和负载均衡的能力。它支持HTTP/2、WebSocket、Let's Encrypt等功能,并提供了丰富的插件生态系统。
- Nginx具有强大的性能和灵活的配置选项。它支持高并发、反向代理、负载均衡、缓存、SSL/TLS等功能,并具有丰富的第三方模块和社区支持。

二、安装部署Traefik

(一)获取文件

官方下载地址
wget  https://raw.githubusercontent.com/containous/traefik/v1.7/examples/k8s/traefik-rbac.yaml
wget  https://raw.githubusercontent.com/containous/traefik/v1.7/examples/k8s/traefik-deployment.yaml
wget  https://raw.githubusercontent.com/containous/traefik/v1.7/examples/k8s/traefik-ds.yaml
wget  https://raw.githubusercontent.com/containous/traefik/v1.7/examples/k8s/ui.yaml

国内的 gitee下载地址
wget  https://gitee.com/mirrors/traefik/raw/v1.7/examples/k8s/traefik-deployment.yaml
wget  https://gitee.com/mirrors/traefik/raw/v1.7/examples/k8s/traefik-rbac.yaml
wget  https://gitee.com/mirrors/traefik/raw/v1.7/examples/k8s/traefik-ds.yaml
wget  https://gitee.com/mirrors/traefik/raw/v1.7/examples/k8s/ui.yaml

[root@master01 traefik]#ls
traefik-deployment.yaml  traefik-ds.yaml  traefik-rbac.yaml  ui.yaml
-------------------------------------------------------------------

你可能感兴趣的:(云原生,kubernetes,http)