研发工程师玩转Kubernetes——使用Ingress进行路由

依据微服务理念,我们希望每个独立的功能由一个服务支持。比如有两个接口:http://www.xxx.com/plus和http://www.xxx.com/minus,前者由一个叫plus-service的服务支持,后者由一个叫minus-service的服务支持。这样就需要一个路由层,在前方将/plus请求路由到plus-service;将/minus路由到minus-service。本文介绍的ingress就可以起到路由的作用。
在这里插入图片描述
我们借用《研发工程师玩转Kubernetes——构建、推送自定义镜像》中的simple-http的镜像,使用版本号来访问不同的镜像对应的服务。比如使用/v1访问simple_http_v1对应的镜像,使用/v2访问simple_http_v2对应的镜像。
在这里插入图片描述

启用Ingress

这个系列我们使用microk8s进行演示,于是需要启用这个插件。

microk8s enable ingress

启动响应的Service

相关知识可以参见《研发工程师玩转Kubernetes——通过文件创建Service》。具体的清单文件如下:

# simple_http_v1_service.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: simple-http-v1-deployment
spec:
  selector:
    matchLabels:
      app: simple-http-v1
  template:
    metadata:
      labels:
        app: simple-http-v1
    spec:
      containers: 
      - name: simple-http-v1
        image: localhost:32000/simple_http:v1
        ports:
        - containerPort: 8888
---
apiVersion: v1
kind: Service
metadata:
  name: simple-http-v1-service
spec:
  selector:
    app: simple-http-v1
  ports:
  - port: 80
    targetPort: 8888
# simple_http_v2_service.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: simple-http-v2-deployment
spec:
  selector:
    matchLabels:
      app: simple-http-v2
  template:
    metadata:
      labels:
        app: simple-http-v2
    spec:
      containers: 
      - name: simple-http-v2
        image: localhost:32000/simple_http:v2
        ports:
        - containerPort: 8888
---
apiVersion: v1
kind: Service
metadata:
  name: simple-http-v2-service
spec:
  selector:
    app: simple-http-v2
  ports:
  - port: 80
    targetPort: 8888

使用下面命令创建simple-http-v1-service和simple-http-v2-service两个Service,为Ingress路由提供基础服务。

kubectl create -f  simple_http_v1_service.yaml simple_http_v2_service.yaml

创建Ingress

清单文件如下:

# simple_http_ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: simple-http-ingress
  labels:
    name: simple-http-ingress
spec:
  rules:
  - http:
      paths:
      - pathType: Prefix
        path: "/v1"
        backend:
          service:
            name: simple-http-v1-service
            port: 
              number: 80
      - pathType: Prefix
        path: "/v2"
        backend:
          service:
            name: simple-http-v2-service
            port: 
              number: 80

spec.rules用于指定不同http地址的路由信息。上例中pathType: Prefix表示通过前缀匹配,如果匹配到/v1则路由到simple-http-v1-service;如果匹配到/v2,则路由到simple-http-v2-service。
使用下面命令创建该ingress

kubectl create -f simple_http_ingress.yaml

ingress.networking.k8s.io/simple-http-ingress created

测试

curl 127.0.0.1/v1

This service’s version is 1
IP is:10.1.62.173

curl 127.0.0.1/v2

This service’s version is 2
IP is:10.1.62.163

通过测试结果看,ingress将请求正确路由到对应的service上了。

刪除

kubectl delete ingress simple-http-ingress
kubectl delete service simple-http-v1-service simple-http-v2-service
kubectl delete deployments.apps simple-http-v1-deployment simple-http-v2-deployment 

参考资料

  • https://kubernetes.io/zh-cn/docs/concepts/services-networking/ingress/

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Revit问题:创建牛腿柱和快速生成圈梁

一、Revit中如何用体量创建牛腿柱 牛腿:悬臂体系的挂梁与悬臂间必然出现搁置构造,通常就将悬臂端和挂梁端的局部构造,又称梁托。牛腿的作用是衔接悬臂梁与挂梁, 并传递来自挂梁的荷载。牛腿柱可以用于桥梁、厂房的搭建&#xff0c…

西南财经大学李玉周:数智化技术广泛使用推动管理会计加快落地

近日,由用友主办的「智能会计 价值财务」2023企业数智化财务创新峰会收官站圆满举办。来自知名院校的专家学者、央国企等大型企业财务领路人相约成都,一同见证“智能会计”新时代的到来,并肩探讨“价值财务”新主张。 为更好传递智能会计对企…

【接口测试】JMeter接口关联测试

‍‍1 前言 我们来学习接口管理测试,这就要使用到JMeter提供的JSON提取器和正则表达式提取器了,下面我们来看看是如何使用的吧。 2 JSON提取器 1、添加JSON提取器 在线程组右键 > 添加 > 后置处理器 > JSON提取器 2、JSON提取器参数说明 N…

chatgpt赋能python:Python如何删除行:从入门到精通

Python如何删除行:从入门到精通 在Python编程中,删除行是必不可少的操作之一。无论是清除不必要的数据,还是在数据集中删除重复行,或者在文本文件中删除某些行,删除行都是一项极其重要的任务。 什么是Python语言&…

Shell脚本攻略:文本三剑客之sed

目录 一、理论 1.sed 二、实验 1.sed命令的寻址打印 2.显示奇偶 3.查找替换 4.后向引用 一、理论 1.sed (1) 概念 sed 英文全称为stream editor流式编辑器,sed 对输入流(文件或来自管道的输入)执行基本文本转换单通过流,…

Matlab进阶绘图第22期—不等宽柱状图

不等宽柱状图是一种特殊的柱状图。 与常规柱状图相比,不等宽柱状图可以通过柱高与柱宽分别表达两个维度的数据,因此在多个领域得到应用。 在《Matlab论文插图绘制模板第91期》中,虽有介绍过利用Matlab自带bar函数绘制不等宽柱状图的方法&am…

高完整性系统(7)Formal Verification and Validation

文章目录 Specification Process 规格化过程State Invariants案例check ... expect Alloy是一种用于构建和检查抽象模型的语言和工具。当Alloy说所有断言都成立时,这意味着你的模型或规格在给定范围内已成功通过了所有的断言检查。换句话说,对于你所定义…

C#实例:多功能Windows窗体应用程序Helloworld_WinForm

有了创建一个Windows窗体应用程序的经验,就可以开始尝试运用更多的控件实现更多丰富的功能界面。以下分享我基于项目Helloworld_WinForm使用常用C#Windows窗体控件实现一些小功能。 每一节标题为所用到的控件,全文以实际制作过程为序编制。 目录 WinFor…

来了解一下白盒测试,黑盒测试,灰盒测试吧(超详解~)

根据被测对象的不同,软件测试可以分为白盒测试、黑盒测试、灰盒测试三种方式。那么,这三种测试方式具体是如何运行的?各有什么特点?下面,跟着静姐一起了解一下吧! 01、白盒测试 WHITE BOX ●概念&#x…

PACS影像解决方案

现代医学影像技术的迅猛发展,使得PACS系统已逐渐成为各级医院实现信息化建设的重要组成部分。医学影像技术的进步也提升了医学影像的清晰度,推动二维PACS向三维升级转变。这一切都使得医学影像数据量激增,加之医疗行业法规的数据保存要求&…

Android平台OpenCV入门

一、导入OpenCV 别忘记把libopencv_java3.so添加进来。 二、初始化 OpenCVLoader.initDebug();三、常用方法 1. CvType 数据类型 以CV_64FC2为例,64指64位,F指浮点数,C指通道,2为2通道。 数值具体类型取值范围CV_8U8 位无符…

软件工程导论(四)软件编码测试与维护

一、软件编程 1.1良好的编程习惯 变量命名有意义并且使用统一的命名规则 编写自文档代码(序言性注释 or 行内注释) 提前进行可维护性考量(可以用常量的方式存在的数值最好以变量的方式存在) 良好的视觉安排可以提高代码的可读性(…

SOLIDWORKS技巧培训-绘制零件滚花的两种方法

最近常有朋友咨询SolidWorks零件如何做滚花的效果,下面给大家整理了绘制零件滚花的一个培训教程: 作为机械设计师,滚花应该都不陌生,真要说起来,滚花绘制其实也不算难,跟着我们一步一步来,应该…

ThreeJS 炫酷特效旋转多面体Web页 Demo 01《ThreeJS 炫酷特效制作》

本案例为一个 threejs 的特效网页,大小球体进行包裹,外球体为透明材质,但是进行了线框渲染,使其能够通过外球踢查看其内球体。 注:案例参考源于互联网,在此做代码解释,侵删 本案例除 ThreeJS 外…

chatgpt赋能python:Python如何分割列表

Python如何分割列表 介绍 在Python编程中,列表是一种非常常见的数据类型。有时候我们需要将一个大的列表分割成几个小的列表,以便更好地处理数据。Python提供了多种方法来实现这个目的。在本文中,我们将介绍Python中如何分割列表的几种方法…

活动预告 | 中国数据库联盟(ACDU)中国行定档深圳,一起揭秘数据库前沿技术

在当今数字化时代,数据库是各行各业中最核心的信息管理系统之一。随着技术的飞速发展,数据库领域也不断涌现出新的前沿技术和创新应用。数据库运维和开发人员需要紧跟前沿技术,才能保持竞争力,并实现更高效、更智能、更人性化的应…

pytorch实战 -- 神经网络

softmax的基本概念 交叉熵损失函数 模型训练和预测 在训练好softmax回归模型后,给定任一样本特征,就可以预测每个输出类别的概率。通常,我们把预测概率最大的类别作为输出类别。如果它与真实类别(标签)一致&#xff0…

Java 数组

文章目录 一、Java 数组总结 一、Java 数组 Java 语言中提供的数组是用来存储固定大小的同类型元素。 你可以声明一个数组变量,如 numbers[100] 来代替直接声明 100 个独立变量 number0,number1,…,number99。 Java 数组的声明、…

Linux内存初始化-启动阶段的内存初始化

本文代码基于ARM64平台, Linux kernel 5.15 在加载kernel 之前, kernel对于系统是有一定要求的,明确规定了boot阶段必须要把MMU关闭: arch/arm64/kernel/head.S/** Kernel startup entry point.* ---------------------------** The require…

黑马Redis视频教程实战篇(六)

目录 一、附近商户 1.1、GEO数据结构的基本用法 1.2、导入店铺数据到GEO 1.3、实现附近商户功能 二、用户签到 2.1、BitMap功能演示 2.2、实现签到功能 2.3、签到统计 2.4、关于使用bitmap来解决缓存穿透的方案 三、UV统计 3.1、HyperLogLog 3.2、测试百万数据的统…