【云原生kubernets】Ingress 功能与应用

news2024/11/15 5:46:55

一、Ingress 介绍

1.1.Ingress产生原因:

当我们使用Service的时候,Service对集群之外暴露服务的主要方式有两种:NotePort和LoadBalancer,但是这两种方式,都有一定的缺点:

(1)NodePort方式的缺点是每创建一个服务,都需要暴露出一个供外部访问的主机端口,就导致会占用很多集群机器的端口,那么当集群服务变多的时候,这个缺点就愈发明显。

(2)LB方式的缺点是每个service需要一个LB,浪费,并且需要kubernetes之外设备的支持。

        基于这种现状,kubernetes提供了Ingress资源对象,Ingress只需要一个NodePort或者一个LB就可以满足暴露多个Service的需求。工作机制大致如下图表示:

 1.2.Ingress的作用

        Ingress相当于一个7层的负载均衡器,是kubernetes对反向代理的一个抽象,它的工作原理类似于Nginx,可以理解成在Ingress里建立诸多映射规则,Ingress Controller通过监听这些配置规则并转化成Nginx的反向代理配置 , 然后对外部提供服务。

在这里有两个核心概念:

(1)ingress:kubernetes中的一个对象,作用是定义请求如何转发到service的规则

(2)ingress controller:具体实现反向代理及负载均衡的程序,对ingress定义的规则进行解析,根据配置的规则来实现请求转发,实现方式有很多,比如Nginx, Contour, Haproxy等等
 

 1.3.Ingress(以Nginx为例)的工作原理:

(1)用户编写Ingress规则,说明哪个域名对应kubernetes集群中的哪个Service

(2)Ingress控制器动态感知Ingress服务规则的变化,然后生成一段对应的Nginx反向代理配置

(3)Ingress控制器会将生成的Nginx配置写入到一个运行着的Nginx服务中,并动态更新

(4)到此为止,其实真正在工作的就是一个Nginx了,内部配置了用户定义的请求转发规则

二、实验应用

创建两个模型 nginx service 和 tomcat service以及服务下的Pod 

创建nginx-deployment.yaml:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  namespace: dev
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx-pod
  template:
    metadata:
      labels:
        app: nginx-pod
    spec:
      containers:
      - name: nginx
        image: nginx:1.17.1
        ports:
        - containerPort: 80

 创建tomcat-deployment.yaml:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: tomcat-deployment
  namespace: dev
spec:
  replicas: 3
  selector:
    matchLabels:
      app: tomcat-pod
  template:
    metadata:
      labels:
        app: tomcat-pod
    spec:
      containers:
      - name: tomcat
        image: tomcat:8.5-jre10-slim
        ports:
        - containerPort: 8080

 创建nginx-service.yam文件:

apiVersion: v1
kind: Service
metadata:
  name: nginx-service
  namespace: dev
spec:
  selector:
    app: nginx-pod
  clusterIP: None
  type: ClusterIP
  ports:
  - port: 80
    targetPort: 80

 创建 tomcat-service.yaml文件: 

apiVersion: v1
kind: Service
metadata:
  name: tomcat-service
  namespace: dev
spec:
  selector:
    app: tomcat-pod
  clusterIP: None
  type: ClusterIP
  ports:
  - port: 8080
    targetPort: 8080

 创建出这些Service和Pod,查看创建出来相应的服务:

 编写Http代理 Ingress.yaml 文件代理服务:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress-http
  namespace: dev
spec:
  rules:
  - host: nginx.itheima.com
    http:
      paths:
      - path: /
        backend:
          serviceName: nginx-service
          servicePort: 80
  - host: tomcat.itheima.com
    http:
      paths:
      - path: /
        backend:
          serviceName: tomcat-service
          servicePort: 8080

创建Ingress,查看Ingress对应的信息:

 查看 Ingress 的详细信息:

 

 

 

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

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

相关文章

[Excel] vlookup函数

VLOOKUP用法 VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup])其中: lookup_value是你要查找的值table_array是你要在其中进行查找的表格区域col_index_num是你要返回的在table_array中列索引号range_lookup是一个可选参数,用于指定…

螺旋矩阵算法(leetcode第59题)

题目描述: 给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。示例 1:输入:n 3 输出:[[1,2,3],[8,9,4],[7,6,5]] 示例 2:输入&#…

大数据存储技术(2)—— HDFS分布式文件系统

目录 一、HDFS简介 (一)HDFS产生背景及定义 (二)HDFS的优点 (三)HDFS的局限性 二、HDFS体系结构 (一)HDFS组成架构 (二)机架感知策略 (三…

bugku--文件包含

点击 访问一下index.php 页面报错 既然是文件包含就可以想到php伪协议 这里我们需要访问本地文件系统 构造我们的payload ?filephp://filter/readconvert.base64-encode/resourceindex.php base64解码 得到我们的flag 提交就好啦 ?filephp://filter/readconvert.base64-e…

用于 ChatGPT 的 FPGA 加速大型语言模型

简介:大型语言模型 近年来,大型语言模型 (LLM) 彻底改变了自然语言处理领域,使机器能够生成类似人类的文本并进行有意义的对话。这些模型,例如 OpenAI 的 GPT,具有惊人的理解和生成语言的能力。…

机器人行业数据闭环实践:从对象存储到 JuiceFS

JuiceFS 社区聚集了来自各行各业的前沿科技用户。本次分享的案例来源于刻行,一家商用服务机器人领域科技企业。 商用服务机器人指的是我们日常生活中常见的清洁机器人、送餐机器人、仓库机器人等。刻行采用 JuiceFS 来弥补对象存储性能不足等问题。 值得一提的是&am…

数据结构与算法:选择排序

原理 从当前位置到最后,找出最小(或者最大)值,放在当前位置,位置后移。然后重复此过程。 每次都要在剩余未排序的集合中,找到那个最小(或者最大)的值,放到当前位置。所以叫选择排序。 最小或者最大,影响…

Wordle 游戏实现 - 使用 C++ Qt

标题:Wordle 游戏实现 - 使用 C Qt 摘要: Wordle 是一款文字猜词游戏,玩家需要根据给定的单词猜出正确的答案,并在限定的次数内完成。本文介绍了使用 C 和 Qt 框架实现 Wordle 游戏的基本思路和部分代码示例。 引言:…

《快乐阅读》期刊论文发表投稿

《快乐阅读》期刊是经中华人民共和国新闻出版总署审核通过的,由河南文艺出版社有限公司主办、中原大地传媒股份有限公司主管的,面向国内外公开发行的省级优秀学术刊物。 收稿栏目:清唱、微课堂、教学实践、专栏、师与道、教与学、经验交流、…

腾讯云 - 日志服务(CLS)Bug 体验官

问题描述 最近在学习日志服务,发现了腾讯云上面一款CLS产品,致力于解决日志采集分析,刚开始用的时候感觉还不错,但是发现当创建第二个日志主题的时候发现不对劲了,前一个竟然失效了,排查了老半天也没发现啥…

jupyter notebook介绍、安装和使用

简介 Jupyter Notebook是基于网页的用于交互计算的应用程序。其可被应用于全过程计算:开发、文档编写、运行代码和展示结果。——Jupyter Notebook官方介绍 简而言之,Jupyter Notebook是以网页的形式打开,可以在网页页面中直接编写代码和运…

关于职场伪勤奋

前段时间看了一些关于勤奋学习、职场成长类的书籍,就在思考勤奋学习和职场的关系时,结合个人的理解,我定义了一种勤奋叫职场“伪勤奋”。那关于职场“伪勤奋”的定义和理解,与大家分享: 1、选择性任务完成 伪勤奋特征…

两款顶尖大语言模型Claude2.1和Llama2在Amazon Bedrock正式可用

在亚马逊云科技2023 re:Invent美国拉斯维加斯现场,亚马逊云科技数据和人工智能副总裁Swami Sivasubramanian宣布了众多在生成式AI领域的发布和创新,其中就包括Anthropic Claude 2.1和Meta Llama 2 70B两款大语言模型已在Amazon Bedrock正式可用。 亚马逊…

用23种设计模式打造一个cocos creator的游戏框架----(十五)策略模式

1、模式标准 模式名称:策略模式 模式分类:行为型 模式意图:定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换。此模式使得算法可以独立于使用它们的客户而变化 结构图: 适用于&#xff1…

NCNN 源码学习【三】:数据处理

一、Topic:数据处理 这次我们来一段NCNN应用代码中,除了推理外最重要的一部分代码,数据处理: ncnn::Mat in ncnn::Mat::from_pixels_resize(bgr.data, ncnn::Mat::PIXEL_BGR, bgr.cols, bgr.rows, 227, 227);const float mean_v…

Github入门

简介 github是一个基于git的代码仓库,可以通过git来上传和下载代码。国内类似的有gitee。 开源项目一般会申明开源协议。我们可以基于可商用的代码开发我们自己的项目,以期进行快速开发。 一般情况下gitee上的项目基本都够我们使用了。 git基础 Git…

Caché/M 数据库上面的那个 é 怎么打

Cach/M 数据库名字上的 e 有一撇,这个 e 是法语字符,通常英语键盘还不是那么好打。 因最近在研究这个数据库,所以这个字符会用得比较多,简单点的方法就是直接用 e 代替,并且后面加个斜杆 M 用于区分英文的 Cache。 拷…

WEB 3D技术 简述React Hook/Class 组件中使用three.js方式

之前 已经讲过了 用vue结合three.js进行开发 那么 自然是少不了react 我们 还是先创建一个文件夹 终端执行 npm init vitelatest输入一下项目名称 然后技术选择 react 也不太清楚大家的基础 那就选择最简单的js 然后 我们就创建完成了 然后 我们用编辑器打开创建好的项目目…

数据结构与算法:冒泡排序

原理 从前到后,连续相连两个数对比,如果前一个数大于后一个数,则交换。 第一次: arr[0] 和 arr[1] 对比,若arr[0] 大于 arr[1], 交换两个值。 arr[1] 和 arr[2]对比,若arr[1] 大于 arr[2]&…

【大话数据结构】- 读书笔记

2023-12-13 读书笔记 第一章 数据结构绪论 逻辑结构 集合结构线性结构树形结构图形结构 物理结构 顺序存储结构链式存储结构 可能在学习的时候会困惑、不懂、不理解、不会应用,甚至不知所云,可实际上无论学什么都是通过努力才可以学到真东西。只有…