kubernetes — 安装Ingress
1、 Ingress
1、安装-Nginx-Ingress
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.8.1/deploy/static/provider/cloud/deploy.yaml
2、设为默认的Ingress
[root@k8s01 ~]# vim default_ingress.yaml
apiVersion: networking.k8s.io/v1
kind: IngressClass
metadata:labels:app.kubernetes.io/component: controllername: nginxannotations:ingressclass.kubernetes.io/is-default-class: "true"
spec:controller: k8s.io/ingress-nginx[root@k8s01 ~]# k apply -f default_ingress.yaml
3、创建deployment(命令方式)
k create deployment webserver1 --image=httpd
4、创建service并暴露端口
k expose deployment webserver1 --port=8080 --target-port=80
5、发布单个服务
[root@k8s01 ~]# vim ingress1.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: test-ingress
spec:defaultBackend:service:name: webserver1port:number: 8080[root@k8s01 ~]# k apply -f ingress1.yaml
2、基于名称的虚拟托管
1、Ingress 资源在 rules
中定义的 hosts
机支持将针对多个主机名的 HTTP 流量路由到同一 IP 地址上
1.创建第二个deployment
[root@k8s01 ~]# k create deployment webserver2 --image=httpd
2.创建第二个service并暴露端口
因为是不同的ClusterIP,所以端口可以为同一个
[root@k8s01 ~]# k expose deployment webserver3 --port=8082 --target-port=80
3.创建基于路径的虚拟托管的ingress
[root@k8s01 ~]# k get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
webserver1 ClusterIP 10.104.70.168 <none> 8080/TCP 21m
webserver2 ClusterIP 10.110.102.43 <none> 8081/TCP 4s
[root@k8s01 ~]# vim ingress_name.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: name-virtual-host-ingress
spec:rules:- host: foo.bar.comhttp:paths:- pathType: Prefixpath: "/"backend:service:name: webserver1port:number: 8080- host: bar.foo.comhttp:paths:- pathType: Prefixpath: "/"backend:service:name: webserver2port:number: 8081[root@k8s01 ~]# k apply -f ingress_name.yaml
ingress.networking.k8s.io/name-virtual-host-ingress created
当定义了Ingress规则,并将其与特定的主机名关联时(例如,
host: www.cce-test.com
),请求将只会被路由到与该主机名匹配的后端服务。这意味着只有通过www.cce-test.com
主机名发送的请求才会被路由,而不会使用节点的IP地址apiVersion: networking.k8s.io/v1 kind: Ingress metadata:name: webnamespace: defaultannotations:kubernetes.io/ingress.class: "nginx" spec:rules:- host: www.cce-test.comhttp:paths:- backend:service:name: nginx-proxyport:number: 30002path: /pathType: Prefix- http:paths:- backend:service:name: nginx-proxyport:number: 30002path: /pathType: Prefix 这个示例,可以同时支持域名和NodeIP方式访问
4.修改hosts文件
[root@k8s01 ~]# echo "192.168.248.21 foo.bar.com bar.foo.com" >> /etc/hosts
5.测试
[root@k8s01 ~]# curl bar.foo.com
web2
[root@k8s01 ~]# curl foo.bar.com
web1
2、Ingress 资源没有在 rules
中定义的任何 hosts
时
1.创建第三个deployment
[root@k8s01 ~]# k create deployment webserver3 --image=httpd
2.创建第三个service并暴露端口
[root@k8s01 ~]# k expose deployment webserver2 --port=8081 --target-port=80
3.创建基于路径的虚拟托管的ingress,并且增加没有在rule中定义的hosts
[root@k8s01 ~]# vim ingress_name_norule.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: name-virtual-host-ingress-no-third-host
spec:rules:- host: foo.bar.comhttp:paths:- pathType: Prefixpath: "/"backend:service:name: webserver1port:number: 8081- host: bar.foo.comhttp:paths:- pathType: Prefixpath: "/"backend:service:name: webserver2port:number: 8082- http:paths:- pathType: Prefixpath: "/"backend:service:name: webserver3port:number: 8083
4.
如果在Ingress中没有指定默认后端(如
webserver3
),那么未匹配到任何主机名的请求仍然会被允许通过。这是Ingress的默认规则。在Ingress配置中,只有foo.bar.com和
bar.foo.com
的请求会被路由到相应的后端服务(webserver1
和webserver2
)。对于其他主机名或没有指定主机名的请求,它们会被Ingress Controller视为未匹配到任何规则的请求,因此会被放行。这就是为什么即使不加webserver3
,未匹配到任何主机名的请求也会被允许通过的原因
3、基于路径的虚拟托管
1.编写Ingress的yaml
[root@k8s01 ~]# vim ingress_name_ip.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: ingress-ip-pathannotations:nginx.ingress.kubernetes.io/rewrite-target: /
spec:rules:- http:paths:- pathType: Prefixpath: "/web1"backend:service:name: webserver1port:number: 8080- pathType: Prefixpath: "/web2"backend:service:name: webserver2port:number: 8081[root@k8s01 ~]# k apply -f ingress_name_ip.yaml
Ingress 经常使用注解(annotations)来配置一些选项,具体取决于 Ingress 控制器,例如重写目标注解
annotations:
kubernetes.io/ingress.class: "nginx"
kubernetes.io/ingress.class
:这是一个内置的Kubernetes注解,用于标识Ingress资源所使用的Ingress控制器的类别或名称。
"nginx"
:这个值表示该Ingress资源应该由名称为 "nginx" 的Ingress控制器处理
Name | Description | Values |
---|---|---|
nginx.ingress.kubernetes.io/rewrite-target | Target URI where the traffic must be redirected | string |
nginx.ingress.kubernetes.io/ssl-redirect | Indicates if the location section is only accessible via SSL (defaults to True when Ingress contains a Certificate) | bool |
nginx.ingress.kubernetes.io/force-ssl-redirect | Forces the redirection to HTTPS even if the Ingress is not TLS Enabled | bool |
nginx.ingress.kubernetes.io/app-root | Defines the Application Root that the Controller must redirect if it's in / context | string |
nginx.ingress.kubernetes.io/use-regex | Indicates if the paths defined on an Ingress use regular expressions | bool |
2.测试
[root@k8s01 ~]# curl 192.168.248.21/web1
web1
[root@k8s01 ~]# curl 192.168.248.21/web2
web2
相关文章:
kubernetes — 安装Ingress
1、 Ingress 1、安装-Nginx-Ingress kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.8.1/deploy/static/provider/cloud/deploy.yaml 2、设为默认的Ingress [rootk8s01 ~]# vim default_ingress.yaml apiVersion: networking.…...
SSR使用HTTPS
1.安装 npm i browser-sync 2. 再angular.json里配置 "serve-ssr": {"builder": "nguniversal/builders:ssr-dev-server","options": {"ssl": true,"sslCert": "./node_modules/browser-sync/certs/server…...

Spring Boot中使用validator如何实现接口入参自动检验
文章目录 一、背景二、使用三、举例 一、背景 在项目开发过程中,经常会对一些字段进行校验,比如字段的非空校验、字段的长度校验等,如果在每个需要的地方写一堆if else 会让你的代码变的冗余笨重且相对不好维护,如何更加规范和优…...
thinkphp 5 实现UNION ALL 3个联表查询,并且带上搜索条件,名称,时间,手机号
在ThinkPHP 5中实现带有搜索条件、名称、时间和手机号的3个联表查询(UNION ALL),您可以按照以下步骤进行操作: 确保已经配置好数据库连接信息和相关的模型。 使用union()方法来构建3个联表查询,同时在每个查询中添加所…...

React 之 Router - 路由详解
一、Router的基本使用 1. 安装react-router react-router会包含一些react-native的内容,web开发并不需要 npm install react-router-dom 2. 设置使用模式 BrowserRouter或HashRouter Router中包含了对路径改变的监听,并且会将相应的路径传递给子组件Bro…...

框架分析(1)-IT人必须会
框架分析(1)-IT人必须会 专栏介绍当今主流框架前端框架后端框架移动应用框架数据库框架测试框架 Angular关键特点和功能:组件化架构双向数据绑定依赖注入路由功能强大的模板语法测试友好 优缺点分析优点缺点 总结 专栏介绍 link 主要对目前市…...
前端面试的游览器部分(7)每天10个小知识点
目录 系列文章目录前端面试的游览器部分(1)每天10个小知识点前端面试的游览器部分(2)每天10个小知识点前端面试的游览器部分(3)每天10个小知识点前端面试的游览器部分(4)每天10个小知…...

认识Junit
1. 前言 2. Junit注解 2.1. 常用的注解 2.1.1. Test 表示当前方法是一个测试方法(不需要main来执行) Test void Test01() throws InterruptedException {System.out.println("测试用例1");WebDriver webDriver new ChromeDriver();webDriver.get("https:/…...

Unity C# 引用池 ReferencePool
Unity C# 引用池 ReferencePool 1.目的 对于多次创建的数据使用new 关键字是十分消耗性能的,使用完成后由GC去自动释放,当一个类型的数据频繁创建可以使用引用池进行管理。 2.实现 项目目录 IReference 接口 要放入引用池的数据只需要继承这个接口…...

opencv 进阶10-人脸识别原理说明及示例-cv2.CascadeClassifier.detectMultiScale()
人脸识别是指程序对输入的人脸图像进行判断,并识别出其对应的人的过程。人脸识别程 序像我们人类一样,“看到”一张人脸后就能够分辨出这个人是家人、朋友还是明星。 当然,要实现人脸识别,首先要判断当前图像内是否出现了人脸&…...

〔013〕Stable Diffusion 之 图片自动评分和不健康内容过滤器 篇
✨ 目录 🎈 下载咖啡美学评价插件🎈 咖啡美学评价使用🎈 不健康内容过滤器插件🎈 下载咖啡美学评价插件 想让系统帮你的图片作品打分评价,可以下载咖啡美学自动评价插件插件地址:https://github.com/p1atdev/stable-diffusion-webui-cafe-aesthetic也可以通过扩展列表…...

6.RocketMQ之消费索引文件ConsumeQueue
功能:作为CommitLog文件的索引文件。 本文着重分析为consumequeue/topic/queueId目录下的索引文件。 1.ConsumeQueueStore public class ConsumeQueueStore {protected final ConcurrentMap<String>, ConcurrentMap<Integer>, ConsumeQueueInterface…...

Appium-移动端自动测试框架,如何入门?
Appium是一个开源跨平台移动应用自动化测试框架。 既然只是想学习下Appium如何入门,那么我们就直奔主题。文章结构如下: 1、为什么要使用Appium? 2、如何搭建Appium工具环境?(超详细) 3、通过demo演示Appium的使用 4、Appium如何…...

复数混频器、零中频架构和高级算法开发
文章里讲解了关于射频IQ调制器、零中频架构相关的原理及技术,全都是干货!其实好多同行对软件无线电的原理、IQ调制、镜像抑制都是一知半解,知其然不知其所以然。好好研读这篇文章,相信会让你有种恍然大悟的感觉。 RF工程常被视为…...

Web 拦截器-interceptor
拦截器是一种动态拦截方法调用的机制,类似于过滤器,是Spring框架提出的,用来动态拦截控制器方法的执行。 其作用是拦截请求,在指定方法调用前后,根据业务执行预设代码。 实现步骤 1.定义拦截器,实现Handl…...

Java进阶(4)——结合类加载JVM的过程理解创建对象的几种方式:new,反射Class,克隆clone(拷贝),序列化反序列化
目录 引出类什么时候被加载JVM中创建对象几种方式1.new 看到new : new Book()2.反射 Class.forName(“包名.类名”)如何获取Class对象【反射的基础】案例:连接数据库方法 3.克隆(拷贝)clone浅拷贝深拷贝案例 序列化和反序列化对象流-把对象存…...

扩散模型实战(四):从零构建扩散模型
推荐阅读列表: 扩散模型实战(一):基本原理介绍 扩散模型实战(二):扩散模型的发展 扩散模型实战(三):扩散模型的应用 本文以MNIST数据集为例,从…...

YOLOv5、YOLOv8改进:S2注意力机制
目录 1.简介 2.YOLOv5改进 2.1增加以下S2-MLPv2.yaml文件 2.2common.py配置 2.3yolo.py配置 1.简介 S2-MLPv2注意力机制 最近,出现了基于 MLP 的视觉主干。与 CNN 和视觉Transformer相比,基于 MLP 的视觉架构具有较少的归纳偏差,在图像识…...

LeetCode 542. 01 Matrix【多源BFS】中等
本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…...

使用open cv进行角度测量
使用open cv进行角度测量 用了一点初中数学的知识,准确度,跟鼠标点的准不准有关系,话不多说直接上代码 import cv2 import mathpath "test.jpg" img cv2.imread(path) pointsList []def mousePoint(event, x, y, flags, param…...

华为云AI开发平台ModelArts
华为云ModelArts:重塑AI开发流程的“智能引擎”与“创新加速器”! 在人工智能浪潮席卷全球的2025年,企业拥抱AI的意愿空前高涨,但技术门槛高、流程复杂、资源投入巨大的现实,却让许多创新构想止步于实验室。数据科学家…...

C++_核心编程_多态案例二-制作饮品
#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为:煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例,提供抽象制作饮品基类,提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...

dedecms 织梦自定义表单留言增加ajax验证码功能
增加ajax功能模块,用户不点击提交按钮,只要输入框失去焦点,就会提前提示验证码是否正确。 一,模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...

抖音增长新引擎:品融电商,一站式全案代运营领跑者
抖音增长新引擎:品融电商,一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中,品牌如何破浪前行?自建团队成本高、效果难控;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…...
Neo4j 集群管理:原理、技术与最佳实践深度解析
Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...
uniapp中使用aixos 报错
问题: 在uniapp中使用aixos,运行后报如下错误: AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...
【前端异常】JavaScript错误处理:分析 Uncaught (in promise) error
在前端开发中,JavaScript 异常是不可避免的。随着现代前端应用越来越多地使用异步操作(如 Promise、async/await 等),开发者常常会遇到 Uncaught (in promise) error 错误。这个错误是由于未正确处理 Promise 的拒绝(r…...

Xela矩阵三轴触觉传感器的工作原理解析与应用场景
Xela矩阵三轴触觉传感器通过先进技术模拟人类触觉感知,帮助设备实现精确的力测量与位移监测。其核心功能基于磁性三维力测量与空间位移测量,能够捕捉多维触觉信息。该传感器的设计不仅提升了触觉感知的精度,还为机器人、医疗设备和制造业的智…...
raid存储技术
1. 存储技术概念 数据存储架构是对数据存储方式、存储设备及相关组件的组织和规划,涵盖存储系统的布局、数据存储策略等,它明确数据如何存储、管理与访问,为数据的安全、高效使用提供支撑。 由计算机中一组存储设备、控制部件和管理信息调度的…...

【记录坑点问题】IDEA运行:maven-resources-production:XX: OOM: Java heap space
问题:IDEA出现maven-resources-production:operation-service: java.lang.OutOfMemoryError: Java heap space 解决方案:将编译的堆内存增加一点 位置:设置setting-》构建菜单build-》编译器Complier...