Traefik-kubernetes 负责均衡器初试

Traefik: 现代反向代理与负载均衡器 Traefik 是一个现代的反向代理和负载均衡器,专为微服务架构和容器化应用设计。它支持多种后端(如 Docker、Kubernetes、Consul、Etcd 等),并提供了简便的配置方式和丰富的功能,使其在 DevOps 和云原生应用中广受欢迎。Traefik 是一个功能强大且灵活的反向代理和负载均衡器,尤其适用于微服务和容器化环境。它通过自动配置、动态更新、HTTPS 支持和中间件功能等特性,提供了强大的能力来管理和优化现代应用的网络流量。 阅读详情

Traefik-kubernetes 初试

traefik 是一个前端负载均衡器,对于微服务架构尤其是 kubernetes 等编排工具具有良好的支持;同 nginx 等相比,traefik 能够自动感知后端容器变化,从而实现自动服务发现;今天小试了一下,在此记录一下使用过程 
一、Kubernetes 服务暴露介绍

从 kubernetes 1.2 版本开始,kubernetes提供了 Ingress 对象来实现对外暴露服务;到目前为止 kubernetes 总共有三种暴露服务的方式:

LoadBlancer Service 
NodePort Service 
Ingress 
1.1、LoadBlancer Service

LoadBlancer Service 是 kubernetes 深度结合云平台的一个组件;当使用 LoadBlancer Service 暴露服务时,实际上是通过向底层云平台申请创建一个负载均衡器来向外暴露服务;目前 LoadBlancer Service 支持的云平台已经相对完善,比如国外的 GCE、DigitalOcean,国内的 阿里云,私有云 Openstack 等等,由于 LoadBlancer Service 深度结合了云平台,所以只能在一些云平台上来使用

1.2、NodePort Service

NodePort Service 顾名思义,实质上就是通过在集群的每个 node 上暴露一个端口,然后将这个端口映射到某个具体的 service 来实现的,虽然每个 node 的端口有很多(0~65535),但是由于安全性和易用性(服务多了就乱了,还有端口冲突问题)实际使用可能并不多

1.3、Ingress

Ingress 这个东西是 1.2 后才出现的,通过 Ingress 用户可以实现使用 nginx 等开源的反向代理负载均衡器实现对外暴露服务,以下详细说一下 Ingress,毕竟 traefik 用的就是 Ingress

使用 Ingress 时一般会有三个组件:

反向代理负载均衡器 
Ingress Controller 
Ingress 
1.3.1、反向代理负载均衡器

反向代理负载均衡器很简单,说白了就是 nginx、apache 什么的;在集群中反向代理负载均衡器可以自由部署,可以使用 Replication Controller、Deployment、DaemonSet 等等,不过个人喜欢以 DaemonSet 的方式部署,感觉比较方便

1.3.2、Ingress Controller

Ingress Controller 实质上可以理解为是个监视器,Ingress Controller 通过不断地跟 kubernetes API 打交道,实时的感知后端 service、pod 等变化,比如新增和减少 pod,service 增加与减少等;当得到这些变化信息后,Ingress Controller 再结合下文的 Ingress 生成配置,然后更新反向代理负载均衡器,并刷新其配置,达到服务发现的作用

1.3.3、Ingress

Ingress 简单理解就是个规则定义;比如说某个域名对应某个 service,即当某个域名的请求进来时转发给某个 service;这个规则将与 Ingress Controller 结合,然后 Ingress Controller 将其动态写入到负载均衡器配置中,从而实现整体的服务发现和负载均衡

有点懵逼,那就看图 
这里写图片描述

Ingress

从上图中可以很清晰的看到,实际上请求进来还是被负载均衡器拦截,比如 nginx,然后 Ingress Controller 通过跟 Ingress 交互得知某个域名对应哪个 service,再通过跟 kubernetes API 交互得知 service 地址等信息;综合以后生成配置文件实时写入负载均衡器,然后负载均衡器 reload 该规则便可实现服务发现,即动态映射

了解了以上内容以后,这也就很好的说明了我为什么喜欢把负载均衡器部署为 Daemon Set;因为无论如何请求首先是被负载均衡器拦截的,所以在每个 node 上都部署一下,同时 hostport 方式监听 80 端口;那么就解决了其他方式部署不确定 负载均衡器在哪的问题,同时访问每个 node 的 80 都能正确解析请求;如果前端再 放个 nginx 就又实现了一层负载均衡

二、Traefik 使用

由于微服务架构以及 Docker 技术和 kubernetes 编排工具最近几年才开始逐渐流行,所以一开始的反向代理服务器比如 nginx、apache 并未提供其支持,毕竟他们也不是先知;所以才会出现 Ingress Controller 这种东西来做 kubernetes 和前端负载均衡器如 nginx 之间做衔接;即 Ingress Controller 的存在就是为了能跟 kubernetes 交互,又能写 nginx 配置,还能 reload 它,这是一种折中方案;而最近开始出现的 traefik 天生就是提供了对 kubernetes 的支持,也就是说 traefik 本身就能跟 kubernetes API 交互,感知后端变化,因此可以得知: 在使用 traefik 时,Ingress Controller 已经无卵用了,所以整体架构如下 
这里写图片描述

traefik

2.1、部署 Traefik

已经从大体上搞懂了 Ingress 和 traefik,那么部署起来就很简单

2.1.1、部署 Daemon Set

首先以 Daemon Set 的方式在每个 node 上启动一个 traefik,并使用 hostPort 的方式让其监听每个 node 的 80 端口(有没有感觉这就是个 NodePort? 不过区别就是这个 Port 后面有负载均衡器 –>手动微笑)

kubectl create -f traefik.ds.yanl

Daemon set 文件如下

apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
  name: traefik-ingress-lb
  namespace: kube-system
  labels:
    k8s-app: traefik-ingress-lb
spec:
  template:
    metadata:
      labels:
        k8s-app: traefik-ingress-lb
        name: traefik-ingress-lb
    spec:
      terminationGracePeriodSeconds: 60
      hostNetwork: true
      restartPolicy: Always
      containers:
      - image: traefik
        name: traefik-ingress-lb
        resources:
          limits:
            cpu: 200m
            memory: 30Mi
          requests:
            cpu: 100m
            memory: 20Mi
        ports:
        - name: http
          containerPort: 80
          hostPort: 80
        - name: admin
          containerPort: 8580
        args:
        - --web
        - --web.address=:8580
        - --kubernetes

其中 traefik 监听 node 的 80 和 8580 端口,80 提供正常服务,8580 是其自带的 UI 界面,原本默认是 8080,因为环境里端口冲突了,所以这里临时改一下

2.1.2、部署 Ingress

从上面的长篇大论已经得知了 Ingress Controller 是无需部署的,所以直接部署 Ingress 即可

kubectl create -f traefik.ing.yaml

Ingress 文件如下

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: traefik-ingress
spec:
  rules:
  - host: traefik.www.test.com
    http:
      paths:
      - path: /
        backend:
          serviceName: test-www
          servicePort: 8080
  - host: traefik.api.test.com
    http:
      paths:
      - path: /
        backend:
          serviceName: test-api
          servicePort: 8080

实际上事先集群中已经存在了相应的名为 test-www 和 test-api 的 service,对应的 service 后端也有很多 pod;所以这里就不在具体写部署实际业务容器(test-www、test-api)的过程了,各位测试时,只需要把这个 test 的 service 替换成自己业务的 service 即可

2.1.3、部署 Traefik UI

traefik 本身还提供了一套 UI 供我们使用,其同样以 Ingress 方式暴露,只需要创建一下即可

kubectl create -f ui.yaml

ui yaml 如下

---
apiVersion: v1
kind: Service
metadata:
  name: traefik-web-ui
  namespace: kube-system
spec:
  selector:
    k8s-app: traefik-ingress-lb
  ports:
  - name: web
    port: 80    targetPort: 8580
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: traefik-web-ui
  namespace: kube-system
spec:
  rules:
  - host: traefik-ui.local
    http:
      paths:
      - path: /
        backend:
          serviceName: traefik-web-ui
          servicePort: web

2.1.4、访问测试

都创建无误以后,只需要将待测试的域名解析到任意一台 node 上即可,页面就不截图了,截图就暴露了…..下面来两张 ui 的

traefik ui 
这里写图片描述

traefik ui health 
这里写图片描述

2.2、健康检查

关于健康检查,测试可以使用 kubernetes 的 Liveness Probe 实现,如果 Liveness Probe检查失败,则 traefik 会自动移除该 pod,以下是一个 示例

test 的 deployment,健康检查方式是 cat /tmp/health,容器启动 2 分钟后会删掉这个文件,模拟健康检查失败

apiVersion: v1
kind: Deployment
apiVersion: extensions/v1beta1
metadata:
  name: test
  namespace: default
  labels:
    test: alpine
spec:
  replicas: 1
  selector:
    matchLabels:
      test: alpine
  template:
    metadata:
      labels:
        test: alpine
        name: test
    spec:
      containers:
      - image: mritd/alpine:3.4
        name: alpine
        resources:
          limits:
            cpu: 200m
            memory: 30Mi
          requests:
            cpu: 100m
            memory: 20Mi
        ports:
        - name: http
          containerPort: 80
        args:
        command:
        - "bash"
        - "-c"
        - "echo ok > /tmp/health;sleep 120;rm -f /tmp/health"
        livenessProbe:
          exec:
            command:
            - cat
            - /tmp/health
          initialDelaySeconds: 20

test 的 service

apiVersion: v1
kind: Service
metadata:
  name: test 
  labels:
    name: test
spec:
  ports:
  - port: 8123
    targetPort: 80
  selector:
    name: test
test 的 Ingress

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: test
spec:
  rules:
  - host: test.com
    http:
      paths:
      - path: /
        backend:
          serviceName: test
          servicePort: 8123

全部创建好以后,进入 traefik ui 界面,可以观察到每隔 2 分钟健康检查失败后,kubernetes 重建 pod,同时 traefik 会从后端列表中移除这个 pod

其他更多玩法请参考 官方文档 traefik

https://mritd.me/2016/12/06/try-traefik-on-kubernetes/#13ingress


基于YOLOv11的工业零件表面缺陷检测系统:从原理到实现 工业质量控制是制造业的核心环节,表面缺陷检测作为其中重要组成部分,直接关系到产品质量和企业效益。本文详细介绍了一种基于YOLOv11深度学习算法的工业零件表面缺陷检测系统,包含完整的算法原理分析、数据集构建方法、模型训练策略以及用户界面设计。通过大量实验验证,该系统能够高效准确地检测零件表面的划痕、凹陷、锈蚀等多种缺陷,检测精度达到96.2%,满足工业实时检测需求。本文还提供了完整的代码实现和详细的技术文档,为相关领域的研究者和工程师提供参考。关键词:表面缺陷检测;YOLOv11;深度学习;工业视觉; 阅读详情

相关推荐

LVI-SAM实战:如何在Ubuntu20.04上快速复现激光-视觉-惯性里程计系统

本文详细解析了在Ubuntu 20.04环境下部署和优化LVI-SAM激光-视觉-惯性里程计系统的全流程。从环境配置、依赖安装到源码编译和实战调参,提供了完整的解决方案和性能优化策略,帮助开发者快速实现厘米级精度的实时位姿估计。

m3n5b7v8c9x的博客 1047

2021-05-06 git 设置XX门8580端口代理访问github

git config --global https.proxy http://127.0.0.1:8580 git config https.proxy http://127.0.0.1:8580 export https_proxy="http://127.0.0.1:8580"

阿群的笔记(同步备份自简书) 5427

如何在Ubuntu 22.04上为AlphaFold3配置NVIDIA A100 GPU(含驱动安装避坑指南)

本文提供了在Ubuntu 22.04系统上为AlphaFold3部署NVIDIA A100 GPU的完整安装教程。内容涵盖从系统环境准备、NVIDIA驱动安装与避坑指南,到Docker容器化部署、数据库获取以及最终构建运行AlphaFold3的详细步骤,旨在帮助研究者和开发者高效配置高性能计算环境,充分发挥A100的硬件潜力。

nft7creator的博客 468

Traefik-kubernetes 初试

traefik 是一个前端负载均衡器,对于微服务架构尤其是 kubernetes 等编排工具具有良好的支持;同 nginx 等相比,traefik 能够自动感知后端容器变化,从而实现自动服务发现;今天小试了一下,在此记录一下使用过程 一、Kubernetes 服务暴露介绍 从 kubernetes 1.2 版本开始,kubernetes提供了 Ingress 对象来实现对外暴露

督门提酒的博客 8452

图像评价之计算PSNR、SSIM、MSE、LPIPS和NIQE评价指标

如果代码对你的研究有所帮助,请为该仓库点上小星星。

书山有路,学海无涯! 2643

六轴机械臂正逆解计算

机械臂运动学就是。包括(Forward Kinematics)和(InverseKinematics)两部分。正运动学就是逆运动学则是关节变量->机械臂末端执行器的姿势=正向运动学机械臂未端执行器的位姿->关节变量=逆向运动学。

gaoxiaochan的博客 1万+

linux 配置 8280 端口,wildfly四种集群方式的配置

笔者之前对wildfly的集群进行学习,现整理资料如下:standalone集群搭建standalone模式下的集群有以下条件:(1) 必须使用同一配置的profile,且是ha profile;(2) 必须设定相同的多播地址;(3) 确保集群中的各节点在同一局域网中。该模式下的集群集群分为同机多节点集群和多机多节点集群。同机多节点集群http://www.tuicool.com/articles...

weixin_26757925的博客 872

YOLOv12改进策略【卷积层】| SPD-Conv 针对小目标和低分辨率图像的检测任务

SPD-Conv是一种新的 CNN 构建模块,用于替代传统 CNN 架构中使用的步长卷积(strided convolution)和池化(pooling)层,它由空间到深度(Space-to-depth,SPD)层和非步长卷积(non - strided convolution)层组成。

Limiiiing的博客 1778

【traefik】基于k8s搭建traefik, nginx与traefik共存

ingress controller 负责解析 Ingress 的反向代理规则,当它收到请求后就会根据规则将请求转发到对应的 Service。每种边缘路由都有自己的 ingress controller,如 nginx ingress controller。此toml文件是静态的,不会热更新,关于动态配置文件下一篇再聊。检查pod 状态是否正常即可。

lixiaonan0318的博客 3908

绿米Aqara S1【妙控开关 S1E】版本降级或升级自定义固件的方法

绿米Aqara S1【妙控开关 S1E】版本降级或升级自定义固件的方法

LeeKwen的专栏 2170

C#上位机+YOLO实时目标检测:摄像头采集+多线程推理+精度调优全流程

标注数据集:使用LabelImg工具标注目标对象,按YOLO格式整理数据集;模型训练:使用Ultralytics库训练自定义模型,提升特定目标的检测精度;训练参数优化:增加训练轮数(epochs=100200)、调整批次大小(batch=1632)、使用数据增强(flip、mosaic等)。摄像头采集:封装通用采集类,支持USB摄像头/网口相机,实现稳定帧读取与异常处理;多线程推理:采用“采集线程+推理线程+UI线程”解耦架构,使用线程安全队列传递帧数据,彻底解决界面卡顿;核心封装。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 673

Docker 使用traefik 进行负载均衡

Docker 使用traefik 进行负载均衡

halobug的博客 2470

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

WebLogic Operator初试

时隔几个月,重拾WebLogic 为什么是WebLogic 简单说一句就是,因为WebLogic在中间件里面够复杂。 Server不同的角色 AdminServer和Managed Server之间的通讯 NodeManager负责AdminServer和Managed Server的启停 ManagedServer连上去的认证 状态的保存 域...

weixin_30555515的博客 256

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Kubernetes traefik 系列|traefik部署与使用

Traefik是一个功能强大的负载均衡工具,它支持4层和7层的基本负载均衡操作,通过IngressRoute、IngressRouteTCP、IngressRouteUDP资源即可轻松实现。为了满足更复杂的负载均衡需求,Traefik还抽象出了TraefikService资源,允许实现加权轮询、流量复制等高级操作。

weixin_48711696的博客 4576

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

tomcat

tomcat是基于java开发1)Tomcat服务器是一个免费的开源的Web应用服务器,轻量级应用服务器。部署jekkies,jekkies的war包直接放到tomcat的webapp下就可以springboot也是内置了tomcat2)Tomcat和Nginx、Apache:都可以作为Web服务器tomcat与apache:apahce处理静态资源效率高,处理动态servlet请求效率低、Tomcat处理动态servlet请求效率高,处理静态资源效率低。

m0_45283400的博客 963

实战:Traefik 高级配置2-2022.1.18

目录 文章目录目录实验环境实验软件1、Traefik Pilot???? 演示1:traefik使用Traefik Pilot(成功测试)2、私有插件???? 演示1:traefik私有插件(成功测试)关于我最后 实验环境 实验环境: 1、win10,vmwrokstation虚机; 2、k8s集群:3台centos7.6 1810虚机,1个master节点,2个node节点 k8s version:v1.22.2 containerd://1.5.5 实验软件 链接:https://pan.

weixin_39246554的博客 1487

本地部署 Traefik 的完整教程

通过本教程,你已经成功在本地部署了 Traefik,并配置了反向代理、负载均衡和 HTTPS 支持。Traefik 的强大功能使其成为云原生环境中不可或缺的工具。如果你在部署过程中遇到任何问题,欢迎在评论区留言,我会尽力为你解答!相关资源Traefik 官方文档Docker 官方文档Let's Encrypt 官方网站希望这篇教程对你有帮助!

qq_43580271的博客 2002

Traefik路由规则及中间件配置

基于 HTTP 路由规则 基于 HTTPS 路由规则 使用 Kubernetes Ingress 配置 基于 HTTP 路由规则 基于 HTTPS 路由规则

wq1205750492的博客 3503

重构车道检测:LaneNet深度学习模型的工程化部署矩阵

在自动驾驶和智能交通系统中,车道线识别是感知层的核心技术瓶颈。传统计算机视觉方法在复杂光照、恶劣天气和道路磨损条件下表现脆弱,而端到端深度学习方法为这一挑战提供了革命性解决方案。LaneNet车道检测项目基于IEEE IV会议论文"Towards End-to-End Lane Detection: an Instance Segmentation Approach"实现,通过创新的实例分割架构,

gitblog_00066的博客 578

端口号大全

计算机系统“端口”是英文 port 的义译,可以认为是计算机与外界通讯交流的出口。其中 硬件领域的端口又称接口,如:USB 端口、串行端口、打印机端口等。软件领域的端口一般 指网络中面向连接服务和无连接服务的通信协议端口,是一种抽象的软件结构,包括一些数 据结构和 I/O(基本输入输出)缓冲区。说白了,我们在计算机的任何操作都在有意无意的 使用着计算机的各个端口,下面列出了计算机的常用端口: 0 ...

一个小运维 6万+

常用端口及说明

TCP 7=EchoTCP 18=消息传输协议,skunTCP 21=文件传输,Back Construction,Blade Runner,Doly Trojan,Fore,FTP trojan,Invisible FTP,Larva,WebEx,WinCrashTCP 22=远程登录协议TCP 23=远程登录(Telnet),Tiny Telnet Server (= TTS)

c_lanxiaofang的博客 6145

一文带你看懂Traefik

微信公众号:运维开发故事,作者:乔克 提到Traefik,有些人可能并不熟悉,但是提到Nginx,应该都耳熟能详。 ​ 暂且我们把Traefik当成和Nginx差不多的一类软件,待读完整篇文章,你就会对Traefik有不一样的认识。 ​ 本文主要带大家对Traefik有一个全面的认识,我将从下面几个方面作介绍。 ![image.png](https://img-blog.csdnimg.cn/img_convert/cdbfeebc199f50119f8fc961a745ca04.png#clientI.

wanger5354的博客 2891

入门traefik系列——路由配置与使用

本篇主要讲解路由规则的配置与使用,包含HTTP域名路由、HTTPS域名路由(自有证书、自动续签证书)、TCP路由(TLS证书)、UDP路由以及多个k8s server路由配置

qq_33816243的博客 6532

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

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

hy199707的博客 2352

Traefik入门指南

大家好,我是乔克。提到Traefik,有些人可能并不熟悉,但是提到Nginx,应该都耳熟能详。暂且我们把Traefik当成和Nginx差不多的一类软件,待读完整篇文章,你就会对Traefik有不一样的认识。本文主要带大家对Traefik有一个全面的认识,我将从下面几个方面作介绍。本文基于Traefik 2.5.3进行介绍。什么是TraefikTraefik是一个开源的边缘路由网关,它简单易用并且功能全面。官方【1】的介绍是:Traefik is an [open-source](https://github

乔克叔叔的博客 6481
上一篇: kubernetes中 demo: tomcat + mysql
下一篇: Kubernetes(k8s)如何使用kube-dns实现服务发现
大树叶
博客等级 码龄12年 1171粉丝 664原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值