Kubenetes 中使用 Traefik 作为 Ingress 转发流量

2024-09-05 09:48

本文主要是介绍Kubenetes 中使用 Traefik 作为 Ingress 转发流量,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Kubenetes 中使用 Traefik 作为 Ingress 转发流量

Ingress 就是 Kubernetes 机器外访问集群的入口,将请求的 URL 转发到不同的 Service 上,相当于 Nginx 等代理服务器
路由信息由 Ingress Controller 提供,Ingress Controller 可以理解为监视器,不断请求 Kubernetes API 实时感知 Service 和 Pod 的状态,结合上下文的 Ingress 生成配置,然后更新反向代理服务器的配置,达到服务发现的作用

Traefik 是一个开源的反向代理与负载均衡工具,能够与常见的微服务系统直接整合,可以实现自动化动态配置

通过配置文件部署 Traefik

配置

  • Ingress-rbac.yaml

用于 Service Account 验证

apiVersion: v1
kind: ServiceAccount
metadata:name: ingressnamespace: kube-system---kind: ClusterRoleBinding
apiVersion: rbac.authorization.k8s.io/v1beta1
metadata:name: ingress
subjects:- kind: ServiceAccountname: ingressnamespace: kube-system
roleRef:kind: ClusterRolename: cluster-adminapiGroup: rbac.authorization.k8s.io
  • traefik-daemon-set.yaml

使用 DaemonSet 部署 Traefik

apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:name: traefik-ingress-lbnamespace: kube-systemlabels:k8s-app: traefik-ingress-lb
spec:template:metadata:labels:k8s-app: traefik-ingress-lbname: traefik-ingress-lbspec:terminationGracePeriodSeconds: 60hostNetwork: truerestartPolicy: AlwaysserviceAccountName: ingresscontainers:- image: traefikname: traefik-ingress-lbresources:limits:cpu: 200mmemory: 30Mirequests:cpu: 100mmemory: 20Miports:- name: httpcontainerPort: 80hostPort: 80- name: admincontainerPort: 8580hostPort: 8580args:- --web- --web.address=:8580- --kubernetes
  • traefik-ui.yaml

创建 Traefik 的 UI

apiVersion: v1
kind: Service
metadata:name: traefik-web-uinamespace: kube-system
spec:selector:k8s-app: traefik-ingress-lbtype: NodePort  ports:- name: webport: 80targetPort: 8580
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:name: traefik-web-uinamespace: kube-system
spec:rules:- host: traefik-ui.localhttp:paths:- path: /backend:serviceName: traefik-web-uiservicePort: web

部署

kubectl apply -f .

通过 Helm 部署 Traefik

  • 创建 values.yaml
dashboard:enabled: truedomain: dashboard.traefik
serviceType: LoadBalancer
rbac:enabled: true
deployment:hostPort:httpEnabled: truehttpsEnabled: truedashboardEnabled: true
helm install --values values.yaml stable/traefik --name traefik

这样就会启用 Dashboard,更改 Host 指向相应的节点和端口,访问dashboard.traefik:${PORT}就可以看到 Dashboard

  • Host
192.168.0.110 dashboard.traefik
  • 也可以直接下载 Traefik 的 Helm Release,解压后修改相应的配置后再安装
helm fetch stable/traefiktar -xvf traefik-1.24.1.tgzhelm install --values values.yaml ./traefik --name traefik

部署应用

  • backend-ingress.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:name: backend-ingressnamespace: default
spec:rules:- host: rest.hellowoodes.comhttp:paths:- path: /backend:serviceName: backendservicePort: 8080

修改 Host 将域名指向相应的节点 IP

测试

  • 获取端口
kubectl get service -l app=traefik
NAME               TYPE          CLUSTER-IP      EXTERNAL-IP  PORT(S)                     AGE
traefik            LoadBalancer  10.106.137.170  <pending>    80:32311/TCP,443:30677/TCP  1s
traefik-dashboard  ClusterIP     10.108.91.184   <none>       80/TCP                      1s
  • 访问相应的 NodeIP 和地址 http://dashboard.traefik:32311,可以看到 Traefik 的 Dashboard

  • 因为在values.yaml 中已经配置了 deployment.hostPort.httpEnableddeployment.hostPort.httpsEnabled,所以也可以直接访问 dashboard.traefik

traefik-dashboard-page.png

  • 访问backend 应用
curl http://rest.hellowoodes.com/ping
Pong%

参考资料

  • Helm Traefik
  • Kubernetes Traefik Installation (helm)
  • Kubernetes Ingress Controller
  • 安装traefik ingress
  • 微服务边界路由Traefik:基于京东云Kubernetes集群及Helm Chart

这篇关于Kubenetes 中使用 Traefik 作为 Ingress 转发流量的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/1138613

相关文章

MySQL的ALTER TABLE命令的使用解读

《MySQL的ALTERTABLE命令的使用解读》:本文主要介绍MySQL的ALTERTABLE命令的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、查看所建表的编China编程码格式2、修改表的编码格式3、修改列队数据类型4、添加列5、修改列的位置5.1、把列

Python使用FFmpeg实现高效音频格式转换工具

《Python使用FFmpeg实现高效音频格式转换工具》在数字音频处理领域,音频格式转换是一项基础但至关重要的功能,本文主要为大家介绍了Python如何使用FFmpeg实现强大功能的图形化音频转换工具... 目录概述功能详解软件效果展示主界面布局转换过程截图完成提示开发步骤详解1. 环境准备2. 项目功能结

SpringBoot使用ffmpeg实现视频压缩

《SpringBoot使用ffmpeg实现视频压缩》FFmpeg是一个开源的跨平台多媒体处理工具集,用于录制,转换,编辑和流式传输音频和视频,本文将使用ffmpeg实现视频压缩功能,有需要的可以参考... 目录核心功能1.格式转换2.编解码3.音视频处理4.流媒体支持5.滤镜(Filter)安装配置linu

Redis中的Lettuce使用详解

《Redis中的Lettuce使用详解》Lettuce是一个高级的、线程安全的Redis客户端,用于与Redis数据库交互,Lettuce是一个功能强大、使用方便的Redis客户端,适用于各种规模的J... 目录简介特点连接池连接池特点连接池管理连接池优势连接池配置参数监控常用监控工具通过JMX监控通过Pr

apache的commons-pool2原理与使用实践记录

《apache的commons-pool2原理与使用实践记录》ApacheCommonsPool2是一个高效的对象池化框架,通过复用昂贵资源(如数据库连接、线程、网络连接)优化系统性能,这篇文章主... 目录一、核心原理与组件二、使用步骤详解(以数据库连接池为例)三、高级配置与优化四、典型应用场景五、注意事

使用Python实现Windows系统垃圾清理

《使用Python实现Windows系统垃圾清理》Windows自带的磁盘清理工具功能有限,无法深度清理各类垃圾文件,所以本文为大家介绍了如何使用Python+PyQt5开发一个Windows系统垃圾... 目录一、开发背景与工具概述1.1 为什么需要专业清理工具1.2 工具设计理念二、工具核心功能解析2.

Linux系统之stress-ng测压工具的使用

《Linux系统之stress-ng测压工具的使用》:本文主要介绍Linux系统之stress-ng测压工具的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、理论1.stress工具简介与安装2.语法及参数3.具体安装二、实验1.运行8 cpu, 4 fo

Java使用MethodHandle来替代反射,提高性能问题

《Java使用MethodHandle来替代反射,提高性能问题》:本文主要介绍Java使用MethodHandle来替代反射,提高性能问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑... 目录一、认识MethodHandle1、简介2、使用方式3、与反射的区别二、示例1、基本使用2、(重要)

使用C#删除Excel表格中的重复行数据的代码详解

《使用C#删除Excel表格中的重复行数据的代码详解》重复行是指在Excel表格中完全相同的多行数据,删除这些重复行至关重要,因为它们不仅会干扰数据分析,还可能导致错误的决策和结论,所以本文给大家介绍... 目录简介使用工具C# 删除Excel工作表中的重复行语法工作原理实现代码C# 删除指定Excel单元

MySQL 事务的概念及ACID属性和使用详解

《MySQL事务的概念及ACID属性和使用详解》MySQL通过多线程实现存储工作,因此在并发访问场景中,事务确保了数据操作的一致性和可靠性,下面通过本文给大家介绍MySQL事务的概念及ACID属性和... 目录一、什么是事务二、事务的属性及使用2.1 事务的 ACID 属性2.2 为什么存在事务2.3 事务