1.环境

kubernetes:v1.20.1

traefik:2.4.8

链接:middleware的使用(stripprefix)

2.安装

kubeadm安装k8s

helm安装traefik

#Add Traefik's chart repository to Helm:
helm repo add traefik https://helm.traefik.io/traefik#You can update the chart repository by running:
helm repo update#And install it with the helm command line:
#Create namespace
kubectl create ns traefik-v2# Install in the namespace "traefik-v2"
helm install --namespace=traefik-v2 traefik traefik/traefik

说明:UI界面默认没有通过NodePort进行透出,我自己修改service透出的

3.准备测试环境

#新建两个测试POD
kubectl create deployment nginx --image=nginx:1.19.1
kubectl create deployment nginx2 --image=nginx:1.19.1
#为两个POD建service
kubectl create svc clusterip nginx --tcp=80:80
kubectl create svc clusterip nginx2 --tcp=80:80
#进入POD修改index.html便于区分
kubectl exec -it nginx-65b75dbbf6-ddgfb /bin/bash
echo "111111111" > /usr/share/nginx/html/index.html
kubectl exec -it nginx2-82b75dbcf5-dfghv /bin/bash
echo "222222222" > /usr/share/nginx/html/index.html

4.下面通过两种方式进行实现

须知:在traefik中是通过中间件去除访问路径,比如/bar不会把该路径带入带后端访问变成 /usr/share/nginx/html/bar/,这是个坑点

错误的配置是:

kind: Ingress
apiVersion: networking.k8s.io/v1
metadata:name: foo-barannotations:kubernetes.io/ingress.class: traefiktraefik.ingress.kubernetes.io/router.entrypoints: webspec:rules:- host: nginx.kk.ithttp:paths:- path: /barpathType: Prefixbackend:service:name: nginxport:number: 80- path: /foopathType: Prefixbackend:service:name: nginx2port:number: 80

如果不用中间件,就会返回404,并且后端日志会打印:

4.1 ingress方式实现相同域名不同路径访问不同服务

1.中间件middleware的配置(不管哪种方式都要用到)

cat nginx-middleware.yaml

apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:name: nginx-stripprefix
spec:stripPrefix:prefixes:- /bar- /foo
#意思就是traefik请求后端时,把/bar或者/foo路径给脱掉

发布:kubectl apply -f nginx-middleware.yaml

2.ingress文件配置

cat nginx-ingress-path.yaml

kind: Ingress
apiVersion: networking.k8s.io/v1
metadata:name: foo-barannotations:kubernetes.io/ingress.class: traefiktraefik.ingress.kubernetes.io/router.entrypoints: webtraefik.ingress.kubernetes.io/router.middlewares: default-nginx-stripprefix@kubernetescrd    #就是多了这一行!!!!!!!
#traefik.ingress.kubernetes.io/router.middlewares  这个可以从https://doc.traefik.io/traefik/routing/providers/kubernetes-ingress/的Annotations里找到
#default-nginx-stripprefix可以从UI界面上看到,@kubernetescrd就是固定搭配,不用动spec:rules:- host: nginx.kk.ithttp:paths:- path: /barpathType: Prefixbackend:service:name: nginxport:number: 80- path: /foopathType: Prefixbackend:service:name: nginx2port:number: 80

访问traefik流量入口

4.2 IngressRoute方式实现相同域名不同路径访问不同服务

1.中间件middleware的配置(不管哪种方式都要用到)

cat nginx-middleware.yaml

apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:name: nginx-stripprefix
spec:stripPrefix:prefixes:- /bar- /foo
#意思就是traefik请求后端时,把/bar或者/foo路径给脱掉

发布:kubectl apply -f nginx-middleware.yaml

2.IngressRoute文件配置

cat nginx-ingressroute.yaml

apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:name: nginx-route
spec:entryPoints:- webroutes:- match: Host(`nginx.kk.it`) && PathPrefix(`/bar`)kind: Ruleservices:- name: nginxport: 80middlewares:- name: nginx-stripprefix   #关键点!!!!!!!- match: Host(`nginx.kk.it`) && PathPrefix(`/foo`)kind: Ruleservices:- name: nginx2port: 80middlewares:- name: nginx-stripprefix    #关键点!!!!!!!

kubernetes使用traefik作为ingress(相同域名不同路径访问不同服务)Middleware的StripPrefix进行实现相关推荐

  1. kubernetes部署Dashboard(可通过域名外网访问)

    一.安装环境 kubernetes 1.22 Dashboard v2.2.0 二.开始安装 1.参考文章 https://kubernetes.io/zh/docs/tasks/access-app ...

  2. Kubernetes 系列(三):Kubernetes使用Traefik Ingress暴露服务

    一.Kubernetes 服务暴露介绍 从 kubernetes 1.2 版本开始,kubernetes提供了 Ingress 对象来实现对外暴露服务:到目前为止 kubernetes 总共有三种暴露 ...

  3. Kubernetes 部署 Traefik Ingress 控制器 (1.7.12)

    目录[-] . 一.Ingress 介绍 . 二.Traefik 介绍 . 三.部署 Ingress 控制器 Traefik . 1.Traefik 两种部署方式介绍 . 2.创建 Traefik 配 ...

  4. Kubernetes负载均衡器-traefik ingress安装

    2019独角兽企业重金招聘Python工程师标准>>> Kubernetes安装traefik ingress进行负载均衡 Ingress简介 如果你还不了解,ingress是什么, ...

  5. kubernetes资源控制与及ingress插件安装(容忍策略)

    一.Daemonset 控制器(不支持滚动更新) 该文中的所有容器需自己创建 1.DaemonSet的概述 DaemonSet 每个机器斗要启动运行的Pod,确保全部或一些Node上运行Pod副本 - ...

  6. K8S部署Traefik与Ingress、IngressRoute——筑梦之路

    两种方式: Traefik+Ingress 官方文档:Kubernetes Ingress Routing Configuration - Traefik Traefik+IngressRoute 官 ...

  7. Kubernetes系列之五:使用yaml文件创建service向外暴露服务

    系列链接 Kubernetes系列之一:在Ubuntu上快速搭建一个集群Demo Kubernetes系列之二:将Slave节点加入集群 Kubernetes系列之三:部署你的第一个应用程序到k8s集 ...

  8. 威联通NAS通过宝塔面板实现域名统一端口访问

    背景 家用的宽带是联通的,自带公网 IP ,但是封锁了 80 端口和 443 端口,无法隐藏端口进行访问.因为前段时间一直在给 NAS 增加服务,都是通过公网 IP + 端口的形式通过路由器的端口映射 ...

  9. 从Kubernetes安全地访问AWS服务,告诉你多云场景下如何管理云凭据!

    作者| Alexey Ledenev 翻译 | 天道酬勤,责编 | Carol 出品 | CSDN云计算(ID:CSDNcloud) 随着企业与各种云提供商合作,多云场景已经变得十分常见. 在谷歌Ku ...

最新文章

  1. 如何混合编译C语言和C++
  2. Facebook图片存储系统Haystack——存小文件,本质上是将多个小文件合并为一个大文件来降低io次数,meta data里存偏移量...
  3. 深信服:输入一个字符串,帮忙统计字符串里面的每个单词出现的次数,以及非法单词的次数。非法单词的定义为:包含数字(0-9)的单词
  4. VS2013找不到winres.h的解决办法
  5. 关于Spring事务tx:annotation-driven/的理解(Controller可以使用@Transactional)
  6. Pycharm设置开发模板/字体大小/背景颜色 - Python零基础入门教程
  7. 微软职位内部推荐-Software Development Engineering II
  8. js数字格式化千分位格式
  9. Oracle-第一篇一些调优技巧
  10. 魔域手游如何修改服务器id,魔域互通端游手游架设
  11. sis 最新_传统SIS系统面临考验——“可持续的安全仪表系统”来袭
  12. 钉钉用不同的手机签到后台怎么显示的代签到有用吗
  13. OpenCv视频读与存
  14. 企业如何借助百度百家号进行网络推广?
  15. 机器学习教程 三.回归理论及代码实现
  16. sock5代理如何搭建?
  17. iOS开发者的苹果电脑MacBookPro硬盘满了该怎么办?不要只想着插个扩展sd卡!可以自己买个固态硬盘换上
  18. 【智能合约实战】——入门级DAPP,没有想象中那么难
  19. python 实现链家网房源数据信息的爬取
  20. java 操作鼠标实现qq加好友_易语言通过按键模拟的方式实现QQ后台加人加群的代码...

热门文章

  1. 2022美亚杯团体赛
  2. 尚医通项目——上传医院接口(签名校验及图片编码)
  3. 德勤:集团主数据管理方法论(PPT)
  4. 第一周CorelDRAW课程总结
  5. js保留两位小数并且小数点超过两位需要进1
  6. “呆呆”beta版下载情况及用户反馈
  7. 安卓微信王者荣耀服务器名称,王者荣耀:服务器命名原来是这么来的,你服务区是谁的称号?...
  8. MATLAB | R2023a更新了哪些好玩的东西
  9. python shell脚本编程100例_《shell脚本编程100例》[1.05MB]PDF完整版下载-码农之家
  10. js点击取消按钮关闭当前弹框_js关闭当前页面(窗口)的几种方式总结