Ingress 基于URL路由多个服务

news2024/11/16 20:42:31

文章目录

  • 前言
  • 一、基于请求地址转发不同应用的pod
    • 1.创建一个nginx的pod和一个apache的pod及其各自的service
    • 2.创建ingress实现一个地址两个path分别访问nginx和apache
    • 3.验证根据域名web2.study.com的两个路径/foo和/bar来访问到不同的pod
    • 4.分别在nginx和apache的pod里创建网站目录以及index.html
    • 5.再次访问web2.study.com/foo和web2.study.com/bar来进行验证


前言

从Kubernetes Ingress暴露应用的工作流程帖子我们可以得知ingress 与 nignx配置对应关系如下图所示:
在这里插入图片描述
接下来我们来学习下ingress怎么配置根据一个地址多个路径来转发至不同应用的pod(如果在ngx里是直接添加多个location就可以实现了)


一、基于请求地址转发不同应用的pod

在这里插入图片描述

1.创建一个nginx的pod和一个apache的pod及其各自的service

nginx

# vim web.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: web
  labels:
    app: web
spec:
  replicas: 1
  selector:
    matchLabels:
      app: web
  template:
    metadata:
      labels:
        app: web
    spec:
      containers:
      - name: nginx-application
        image: nginx:1.14.2
        ports:
        - containerPort: 80
        
---
apiVersion: v1
kind: Service
metadata:
  name: web
spec:
  selector:
    app: web
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
      
# kubectl apply -f web.yaml

apache:

# kubectl create deployment httpd --image=httpd
# kubectl expose deployment httpd --port=80 --target-port=80

2.创建ingress实现一个地址两个path分别访问nginx和apache

# vim web-ingress-path.yaml

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: web2
spec:
  ingressClassName: nginx
  rules:
  - host: web2.study.com
    http:
      paths:
      #请求的路径,例如localhost/foo
      - path: /foo
        pathType: Prefix
        #关联的后端service
        backend:
          service:
            name: web
            port:
              number: 80
      - path: /bar
        pathType: Prefix
        backend:
          service:
            name: httpd
            port:
              number: 80
              
# kubectl apply -f web-ingress-path.yaml

3.验证根据域名web2.study.com的两个路径/foo和/bar来访问到不同的pod

[root@k8s-master ~]# kubectl get pod,svc,ingress 
NAME                         READY   STATUS    RESTARTS   AGE
pod/httpd-757fb56c8d-6st7x   1/1     Running   0          92m
pod/web-6cdb47d94-htnnm      1/1     Running   0          56d

NAME                 TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE
service/httpd        ClusterIP   10.98.156.70    <none>        80/TCP    90m
service/kubernetes   ClusterIP   10.96.0.1       <none>        443/TCP   68d
service/web          ClusterIP   10.110.44.127   <none>        80/TCP    56d

NAME                             CLASS   HOSTS            ADDRESS       PORTS   AGE
ingress.networking.k8s.io/web2   nginx   web2.study.com   192.168.1.1   80      65m

[root@k8s-master ~]# kubectl describe ingress/web2 
Name:             web2
Namespace:        default
Address:          192.168.1.1
Default backend:  default-http-backend:80 (<error: endpoints "default-http-backend" not found>)
#如下可以看到域名path的信息
Rules:
  Host            Path  Backends
  ----            ----  --------
  web2.study.com  
                  /foo   web:80 (10.244.107.195:80)
                  /bar   httpd:80 (10.244.36.66:80)
Annotations:      <none>
Events:           <none>

测试机添加本地dns解析,并进行对两个path测试
/foo:
在这里插入图片描述
/bar
在这里插入图片描述
可以看到以上两个的访问来自不同应用返回的结果,web2.study.com/foo是nignx返回的,web2.study.com/bar是 apache 返回的,但是返回的结果都是404,这是因为
web2.study.com/foo --> nginx:80/foo (404)
在访问web2.study.com/foo的时候,这个请求就类似于去访问nginx:80/foo,我们大家都知道如果去访问nginx:80/foo的话,nginx必须有foo这个网站目录以及index.html页面,同理,下面的apache也是一样
web2.study.com/bar --> httpd:80/bar (404)


4.分别在nginx和apache的pod里创建网站目录以及index.html

nginx 创建网站目录foo并创建页面

[root@k8s-master ~]# kubectl exec -it pod/web-6cdb47d94-htnnm -- bash 
root@web-6cdb47d94-htnnm:/# cd /usr/share/nginx/html/
root@web-6cdb47d94-htnnm:/usr/share/nginx/html# mkdir foo
root@web-6cdb47d94-htnnm:/usr/share/nginx/html# echo "hello ngx--foo" > foo/index.html
root@web-6cdb47d94-htnnm:/usr/share/nginx/html# cat foo/index.html 
hello ngx--foo

nginx 创建网站目录bar并创建页面

[root@k8s-master ~]# kubectl exec -it pod/httpd-757fb56c8d-6st7x -- bash
root@httpd-757fb56c8d-6st7x:/usr/local/apache2# pwd 
/usr/local/apache2
root@httpd-757fb56c8d-6st7x:/usr/local/apache2# cd htdocs/
root@httpd-757fb56c8d-6st7x:/usr/local/apache2/htdocs# mkdir bar
root@httpd-757fb56c8d-6st7x:/usr/local/apache2/htdocs# echo "hello apache666--bar" > bar/index.html
root@httpd-757fb56c8d-6st7x:/usr/local/apache2/htdocs# cat bar/index.html 
hello apache666--bar

5.再次访问web2.study.com/foo和web2.study.com/bar来进行验证

foo
在这里插入图片描述
bar
在这里插入图片描述


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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

win32汇编弹出对话框

之前书上有一个win32 asm 的odbc例子&#xff0c;它有一个窗体&#xff0c;可以执行sql&#xff1b;下面看一下弹出一个录入数据的对话框&#xff1b; 之前它在.code段包含2个单独的asm文件&#xff0c;增加第三个&#xff0c;增加的这个里面是弹出对话框的窗口过程&#xff0…

Python--类中作用域

1、在面向对象编程中&#xff0c;主要的变量就是成员变量&#xff08;属性&#xff09;和局部变量 class Cat:# 属性name Noneage None# n1, n2, result为局部变量def cal(self, n1, n2):result n1 n2print(f"result{result}") 2、作用域的分类&#xff1a;属性…

Vue3-03_组件基础_上

单页面应用程序 什么是单页面应用程序 单页面应用程序&#xff08;英文名&#xff1a;Single Page Application&#xff09;简称 SPA&#xff0c;顾 名思义&#xff0c;指的是一个 Web 网站中只有唯一的一个 HTML 页面&#xff0c;所有的 功能与交互都在这唯一的一个页面内完…

09|代理(上):ReAct框架,推理与行动的协同

应用思维链推理并不能解决大模型的固有问题&#xff1a;无法主动更新自己的知识&#xff0c;导致出现事实幻觉。也就是说&#xff0c;因为缺乏和外部世界的接触&#xff0c;大模型只拥有训练时见过的知识&#xff0c;以及提示信息中作为上下文提供的附加知识。如果你问的问题超…

Fitten Code对JetBrains支持再升级,新增7大功能

十科技基于计图框架&#xff0c;推出基于代码大模型的 AI 代码助手 ——Fitten Code&#xff0c;今天&#xff0c;Fitten Code再升级&#xff0c;新增7大功能。特此转载。 「一键开启编程新时代&#xff0c;Fitten Code 对 JetBrains 支持再升级&#xff01;」 Fitten Code代码…

新火种AI|英伟达GTC大会在即,它能否撑住场面,为AI缔造下一个高度?

作者&#xff1a;小岩 编辑&#xff1a;彩云 英伟达不完全属于AI行业&#xff0c;但神奇的是&#xff0c;整个AI领域都有着英伟达的传说。因为几乎所有的AI巨头都需要英伟达的芯片来提供算力支持。 也正因此&#xff0c;纵使AI赛道人来人往&#xff0c;此起彼伏&#xff0c;…

zabbix企业微信接入结合海螺问问编写的shell脚本

前言 博客懒得写详细了&#xff0c;视频剪的累死了&#xff0c;看视频就好了 白帽小丑的个人空间-白帽小丑个人主页-哔哩哔哩视频 shell脚本 #!/bin/bash #set -x CorpID"" #我的企业下面的CorpID Secret"" #创建的应用那…

阿里云服务器计算型、通用型、内存型各实例计算、存储等性能介绍

在阿里云目前的活动中&#xff0c;属于计算型实例规格的云服务器有计算型c7、计算型c7a、计算型c8a、计算型c8y这几个实例规格&#xff0c;属于通用型实例规格的云服务器有通用型g7、通用型g7a、通用型g8a、通用型g8y&#xff0c;属于内存型实例规格的云服务器有内存型r7、内存…

Linux信号机制(二)

目录 一、信号的阻塞 二、信号集操作函数 三、sigprocmask函数 四、pause函数 五、sigsuspend函数 一、信号的阻塞 有时候不希望在接到信号时就立即停止当前执行&#xff0c;去处理信号&#xff0c;同时也不希望忽略该信号&#xff0c;而是延时一段时间去调用信号处理函数。…

【闲聊】-后端框架发展史

框架&#xff0c;是为了解决系统复杂性&#xff0c;提升开发效率而产生的工具&#xff0c;主要服务于研发人员。 当然&#xff0c;框架还有更深层的作用&#xff0c;框架的沉淀是一种高级的抽象&#xff0c;会将人类的业务逐步抽象为统一标准又灵活可变的结构&#xff0c;为各行…

Java-CAS 原理与 JUC 原子类

由于 JVM 的 synchronized 重量级锁涉及到操作系统&#xff08;如 Linux&#xff09; 内核态下的互斥锁&#xff08;Mutex&#xff09;的使用&#xff0c; 其线程阻塞和唤醒都涉及到进程在用户态和到内核态频繁切换&#xff0c; 导致重量级锁开销大、性能低。 而 JVM 的 synchr…

影响汇率的因素?fpmarkets澳福总结几个

汇率对于刚刚开始外汇交易的新手来说非常重要&#xff0c;这不是没有道理的&#xff0c;了解汇率如何变化以及怎么变化有助于在外汇交易中获得稳定的利润。那么影响汇率的因素有哪些&#xff1f;fpmarkets澳福总结几个。 任何国家货币的汇率都是由市场决定的。主要的市场因素是…

汽车网络基础知识 要点

在以太网开发中&#xff0c;常常会听到一些专业名词&#xff0c;例如PHY&#xff0c;MAC&#xff0c;MII&#xff0c;switch&#xff0c;下面是解释 PHY PHY 是物理接口收发器&#xff0c;它实现物理层。包括 MII/GMII (介质独立接口) 子层、PCS (物理编码子层) 、PMA (物理介…

高颜值HMI触控界面一出,价值感飙升,瞬间感觉消费不起了。

千万不要觉得用户很理性&#xff0c;其实用户都是“好色之徒”&#xff0c;判断产品价值基本上靠眼睛&#xff0c;颜值高的价格高&#xff0c;质量高&#xff0c;反之质量低&#xff0c;价格低。如果通过精心的高颜值设计&#xff0c;能让你的产品价值感拉满&#xff0c;你不心…

html密码访问单页自定义跳转页面源码

内容目录 一、详细介绍二、效果展示1.部分代码2.效果图展示 三、学习资料下载 一、详细介绍 密码访问单页自定义跳转页面&#xff0c;修改了的密码访问单页&#xff0c;添加了js自定义密码跳转页面。需要正确输入密码才能跳转目标网址。 二、效果展示 1.部分代码 代码如下&…

等保测评的知识

结合自己所学的知识和网络上的一些知识做个小总结。 目录 一、概念&#xff1a; 二、等级划分&#xff1a; 三、技术要求&#xff1a; 四、管理要求&#xff1a; 五、等保测评实施过程&#xff1a; 六、典型的网络架构&#xff1a; 一、概念&#xff1a; 全称为信息安全等级保…

Vue2(五):收集表单数据、过滤器、自定义指令、Vue的生命周期

一、收集表单数据 爱好&#xff1a;学习<input type"checkbox" value"study" v-model"hobby">打游戏<input type"checkbox" value"games" v-model"hobby">吃饭<input type"checkbox" v…

创建局域网分享图片及html页面服务(简单讲下)

目录 1. 使用Python的SimpleHTTPServer&#xff08;适用于Windows&#xff09; 打开其中的.html文件&#xff1a; 打开其中的.png文件&#xff1a; 推荐第2种&#xff1a; 2. 使用Node.js和http-server&#xff08;适用于所有平台&#xff09; 安装http-server&#xff08;…

PSCA复位控制集成之复位信号

组件可能支持两种基本的复位类型。 • 冷复位&#xff1a;重置组件中的所有逻辑。用作上电复位。 • 热复位&#xff1a;重置组件中的大部分逻辑。通常&#xff0c;复位的范围是所有功能逻辑。不包括在热复位中的逻辑会随组件类型而变化&#xff0c;但通常会排除诸如调试和 R…

【论文阅读】Scalable Diffusion Models with Transformers

DiT&#xff1a;基于transformer架构的扩散模型。 paper&#xff1a;[2212.09748] Scalable Diffusion Models with Transformers (arxiv.org) code&#xff1a;facebookresearch/DiT: Official PyTorch Implementation of "Scalable Diffusion Models with Transformer…