当前位置: 首页 > article >正文

k8s之ingress解释以及k8s创建业务的流程定义

matchLabels
ingress

Ingress 是反向代理规则,用来规定 HTTP/S 请求应该被转发到哪个 Service 上,比如根据请求中不同的 Host 和 url 路径让请求落到不同的 Service 上。

Ingress Controller 就是一个反向代理程序,它负责解析 Ingress 的反向代理规则,如果 Ingress 有增删改的变动,所有的 Ingress Controller 都会及时更新自己相应的转发规则,当 Ingress Controller 收到请求后就会根据这些规则将请求转发到对应的 Service。

Kubernetes 并没有自带 Ingress Controller,它只是一种标准,具体实现有多种,需要自己单独安装,常用的是 Nginx Ingress Controller 和 Traefik Ingress Controller

一个集群中可以有多个 Ingress Controller, 在Ingress 中可以指定使用哪一个 Ingress Controller

Ingress Controller 是部署在集群中的,怎么让 Ingress Controller 本身能够被外面访问到呢?

1、Ingress Controller 用 Deployment 方式部署

给它添加一个 Service,类型为 LoadBalancer,这样会自动生成一个 IP 地址,通过这个 IP 就能访问到了,并且一般这个 IP 是高可用的(前提是集群支持 LoadBalancer,通常云服务提供商才支持,自建集群一般没有);

2、使用 hostPort;

  • 1、Ingress Controller 用 DaemonSet 方式部署,使用集群内部的某个或某些节点作为边缘节点,给 node 添加 label 来标识,使用 nodeSelector 绑定到边缘节点,保证每个边缘节点启动一个 Ingress Controller 实例,用 hostPort 直接在这些边缘节点宿主机暴露端口,然后我们可以访问边缘节点中 Ingress Controller 暴露的端口,这样外部就可以访问到 Ingress Controller 了;

  • 2、使用非亲缘性策略,使需要部署 Ingress Controller 的节点,每个节点都有一个 Ingress Controller 部署,然后用 hostPort 直接在这些边缘节点宿主机暴露端口,我们就能通过这些节点的 IP 和 hostPort来访问 Ingress Controller 了。

不过使用 hostPort 这种方式,我们还需要再上面部署一层负载均衡。

什么是 hostPort

这是一种直接定义 Pod 网络的方式。

hostPort 是直接将容器的端口与所调度的节点上的端口路由,这样用户就可以通过宿主机的 IP 加上来访问 Pod 了,比如:

 k8s 中的部署过程

首先创建namespace

1、创建命名空间

$ kubectl create namespace study-k8s

2、使用 deployment 部署 pod

apiVersion  版本 v1是版本号

kind    此处创建的是Pod,根据实际情况,此处资源类型可以是Deployment、Job、Ingress、Service等。

metadata    包含Pod的一些meta信息,比如名称、namespace、标签等信息。

creationTimestamp   当前对象创建日期的时间戳

labels  标识当前对象的标签,键值数据,常被用作挑选条件

app   名称

name  容器名称

namespace  命名空间名称

spec   资源的具体规格

replicas  Pod 的副本数量

selector  用于选择管理的 Pod

matchLabels   matchLabels通常与selector字段一起使用,出现在Deployment、Service、DaemonSet等资源的定义中。它的作用是指定哪些标签(Labels)应该被用来选择和关联Pods

strategy   strategy字段用于定义Deployment的更新策略,主要包含两种策略:RollingUpdateRecreate  默认RollingUpdate

containers    定义 Pod 中的容器列表

image   使用的容器镜像

resources  字段用于指定Pod或容器可以使用的计算资源量,包括CPU和内存等

type    Service 的类型(如 ClusterIP、NodePort、LoadBalancer)

selector    用于选择与 Service 关联的 Pod

ports   定义服务的端口映射

protocol    使用的协议

port    Service 的端口

targetPort   Pod 的端口

‌运行

kubectl apply -f go-web.yaml  -n study-k8s

查看运行状态

kubectl get pods  -n study-k8s

kubectl describe deployment nginx-deploy  -n  study-k8s

3、为服务创建 service

protocol    使用的协议

port    Service 的端口

targetPort   Pod 的端口

创建

kubectl apply -f go-web-svc.yaml -n study-k8s

 4、配置 ingress 的转发策略

service 已经创建成功了,接下来我们使用 ingress

 部署 ingress

 通过K8S创建过程大概理解为:

1.创建namespace

2.创建Deployment,定义pod、业务、pod数量、更新方式

3.创建service 为pod 提供外网访问的方式,TCP形式  port:service端口  targetPort: pod端口

4.创建Ingress  利用HTTP/HTTPS 定义转发到哪个service上 根据host  和path 定义哪个service

注意:不管是Deployment  service  Ingress  都是先后顺序的  里面关联了先后顺序的name名称

总结

1、Pod 是 k8s 中集群部署应用和服务的最小单元;

2、RC 是 k8s 集群中最早的保证 Pod 高可用的 API 对象。它的作用就是保证集群中有指定数目的 pod 运行;

3、RS 是新一代 RC,提供同样的高可用能力,是目前主要使用的对象;

4、Deployment 提供了一种对 Pod 和 ReplicaSet 的管理方式,RS 的使用都是结合 Deployment 来完成的。

5、一般使用 Deployment 来滚动升级一个服务,滚动升级一个服务,实际是创建一个新的 RS,然后逐渐将新 RS 中副本数增加到理想状态,将旧 RS 中的副本数减小到 0 的复合操作;这样一个复合操作用一个 RS 是不太好描述的,所以用一个更通用的 Deployment 来描述。

6、RC、RS 和 Deployment 只是保证了支撑服务的微服务 Pod 的数量。但是没有解决如何访问这些服务的问题。一个 Pod 只是一个运行服务的实例,随时可能在节点上停止,然后再新的节点上用一个新的 IP 启动一个新的 Pod,因此不能使用确定的 IP 和端口号提供服务。这对于业务来说,就不能根据 Pod 的 IP 作为业务调度。kubernetes 就引入了 Service 的概 念,它为 Pod 提供一个入口,主要通过 Labels 标签来选择后端Pod,这时候不论后端 Pod 的 IP 地址如何变更,只要 Pod 的 Labels 标签没变,那么 业务通过 service 调度就不会存在问题。

7、Service 是后端真实服务的抽象,一个 Service 可以代表多个相同的后端服务;

8、Ingress 是反向代理规则,用来规定 HTTP/S 请求应该被转发到哪个 Service 上,比如根据请求中不同的 Host 和 url 路径让请求落到不同的 Service 上;

相关文章:

k8s之ingress解释以及k8s创建业务的流程定义

matchLabels ingress Ingress 是反向代理规则,用来规定 HTTP/S 请求应该被转发到哪个 Service 上,比如根据请求中不同的 Host 和 url 路径让请求落到不同的 Service 上。 Ingress Controller 就是一个反向代理程序,它负责解析 Ingress 的反向…...

LVGL对象的盒子模型和样式

文章目录 🧱 LVGL 对象盒子模型结构🔍 组成部分说明🎮 示例代码📌 总结一句话 🧱 一、样式的本质:lv_style_t 对象🎨 二、样式应用的方式🧩 三、样式属性分类(核心&#…...

从0开始学习大模型--Day05--理解prompt工程

提示词工程原理 N-gram:通过统计,计算N个词共同出现的概率,从而预测下一个词是什么。 深度学习模型:有多层神经网络组成,可以自动从数据中学习特征,让模型通过不断地自我学习不断成长,直到模型…...

计算机视觉——基于树莓派的YOLO11模型优化与实时目标检测、跟踪及计数的实践

概述 设想一下,你在多地拥有多个仓库,要同时监控每个仓库的实时状况,这对于时间和精力而言,都构成了一项艰巨挑战。从成本和可靠性的层面考量,大规模部署计算设备也并非可行之策。一方面,大量计算设备的购…...

【计算机视觉】OpenCV项目实战:OpenCV_Position 项目深度解析:相机定位技术

OpenCV_Position 项目深度解析:基于 OpenCV 的相机定位技术 一、项目概述二、技术原理(一)单应性矩阵(Homography)(二)算法步骤(三)相机内参矩阵 三、项目实战运行&#…...

LAMMPS分子动力学基于周期扰动法的黏度计算

关键词:黏度,周期扰动法,SPC/E水分子,分子动力学,lammps 目前分子动力学计算黏度主要有以下方法:(1)基于 Green - Kubo 关系的方法。从微观角度出发,利用压力张量自相关函数积分计算…...

unity通过transform找子物体只能找子级

unity通过transform找子物体只能找子级,孙级以及更低级别都找不到,只能找到自己的下一级 如果要获取孙级以下的物体,最快的方法还是直接public挂载...

ThinkPad T440P如何从U盘安装Ubuntu24.04系统

首先制作一个安装 U 盘。我使用的工具是 Rufus ,它的官网是 rufus.ie ,去下载最新版就可以了。直接打开这个工具,选择自己从ubuntu官网下载Get Ubuntu | Download | Ubuntu的iso镜像制作U盘安装包即可。 其次安装之前,还要对 Thi…...

PostgreSQL给新用户授权select角色

✅ 切换到你的数据库并以超级用户登录(例如 postgres): admin#localhost: ~$ psql -U postgres -d lily✅ 创建登录的账号机密吗 lily> CREATE USER readonly_user WITH PASSWORD xxxxxxxxxxx; ✅ 确认你授予了这个表的读取权限&#xf…...

嵌入式开发学习(阶段二 C语言基础)

C语言:第05天笔记 内容提要 分支结构 条件判断用if语句实现分支结构用switch语句实现分支结构 分支结构 条件判断 条件判断:根据某个条件成立与否,决定是否执行指定的操作。 条件判断的结果是逻辑值,也就是布尔类型值&#…...

【RAG技术全景解读】从原理到工业级应用实践

目录 🌟 前言🏗️ 技术背景与价值🚨 当前技术痛点🛠️ 解决方案概述👥 目标读者说明 🔍 一、技术原理剖析📊 核心概念图解💡 核心作用讲解⚙️ 关键技术模块说明🔄 技术选…...

从人体姿态到机械臂轨迹:基于深度学习的Kinova远程操控系统架构解析

在工业自动化、医疗辅助、灾难救援与太空探索等前沿领域,Kinova轻型机械臂凭借7自由度关节设计和出色负载能力脱颖而出。它能精准完成物体抓取、复杂装配和精细操作等任务。然而,实现人类操作者对Kinova机械臂的直观高效远程控制一直是技术难题。传统远程…...

NX949NX952美光科技闪存NX961NX964

NX949NX952美光科技闪存NX961NX964 在半导体存储领域,美光科技始终扮演着技术引领者的角色。其NX系列闪存产品线凭借卓越的性能与创新设计,成为数据中心、人工智能、高端消费电子等场景的核心组件。本文将围绕NX949、NX952、NX961及NX964四款代表性产品…...

【Bootstrap V4系列】学习入门教程之 组件-输入组(Input group)

Bootstrap V4系列 学习入门教程之 组件-输入组(Input group) 输入组(Input group)Basic example一、Wrapping 包装二、Sizing 尺寸三、Multiple addons 多个插件四、Button addons 按钮插件五、Buttons with dropdowns 带下拉按钮…...

VS “筛选器/文件夹”

每天学习一个VS小技巧: 我在VS创建筛选器的时候,想要想要同步计算机上的文件目录,但是发现并未 同步。 例如我在这儿创建了一个筛选器IoManager 但是在UI这个文件夹里并未创建对应的IoManager文件夹 我右击也没有打开文件所在位置 然后我…...

RAG与语义搜索:让大模型成为测试工程师的智能助手

引言 AI大模型风头正劲,自动生成和理解文本的能力让无数行业焕发新生。测试工程师也不例外——谁不想让AI自动“看懂需求、理解接口、生成用例”?然而,很多人发现:直接丢问题给大模型,答案貌似“懂行”,细…...

从 JMS 到 ActiveMQ:API 设计与扩展机制分析(三)

三、ActiveMQ API 设计解析 (一)对 JMS API 的实现与扩展 ActiveMQ 作为 JMS 规范的一种实现,全面且深入地实现了 JMS API,确保了其在 Java 消息服务领域的兼容性和通用性。在核心接口实现方面,ActiveMQ 对 JMS 的 C…...

powerbuilder9.0中文版

经常 用这个版本号写小软件,非常喜欢这个开发软件 . powerbuilder9.0 非常的小巧,快捷,功能强大,使用方便. 我今天用软件 自己汉化了一遍,一些常用的界面都已经翻译成中文。 我自己用的,以后有什么界面需要翻译,再更新一下。 放在这里留个…...

小程序消息订阅的整个实现流程

以下是微信小程序消息订阅的完整实现流程,分为 5个核心步骤 和 3个关键注意事项: 一、消息订阅完整流程 步骤1:配置订阅消息模板 登录微信公众平台进入「功能」→「订阅消息」选择公共模板或申请自定义模板,获取模板ID&#xff…...

互联网大厂Java求职面试实战:Spring Boot微服务与数据库优化详解

💪🏻 1. Python基础专栏,基础知识一网打尽,9.9元买不了吃亏,买不了上当。 Python从入门到精通 😁 2. 毕业设计专栏,毕业季咱们不慌忙,几百款毕业设计等你选。 ❤️ 3. Python爬虫专栏…...

基于C语言的TCP通信测试程序开发指南

一、TCP通信基础原理 1.1 通信流程概述 TCP通信采用客户端-服务器模型,核心流程如下: 服务器端: 创建套接字(Socket) 绑定地址和端口(Bind) 开始监听(Listen) 接受…...

Git 分支指南

什么是 Git 分支? Git 分支是仓库内的独立开发线,你可以把它想象成一个单独的工作空间,在这里你可以进行修改,而不会影响主分支(或 默认分支)。分支允许开发者在不影响项目实际版本的情况下,开…...

教育系统源码如何支持白板直播与刷题功能?功能开发与优化探索

很多行业内同学疑问,如何在教育系统源码中支持白板直播和刷题功能?本篇文章,小编将从功能设计、技术实现到性能优化,带你全面了解这个过程。 一、白板直播功能的核心需求与技术挑战 实时交互与同步性 白板直播的核心是“实时性”。…...

SSM框架整合MyBatis-Plus的步骤和简单用法示例

以下是 SSM框架整合MyBatis-Plus的步骤 和 简单用法示例&#xff1a; 一、SSM整合MyBatis-Plus步骤 1. 添加依赖&#xff08;Maven&#xff09; <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.…...

【LeetCode 热题 100】206. 反转链表

&#x1f4cc; 难度&#xff1a;简单 &#x1f4da; 标签&#xff1a;链表、双指针、迭代、递归 &#x1f517; 题目链接&#xff08;LeetCode CN&#xff09; &#x1f9e9; 一、题目描述 给你单链表的头节点 head&#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 ✅…...

centos8.5.2111 更换阿里云源

使用前提是服务器可以连接互联网 1、备份现有软件配置文件 cd /etc/yum.repos.d/ mkdir backup mv CentOS-* backup/ 2、下载阿里云的软件配置文件 wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo 3、清理并重建…...

再度深入理解PLC的输入输出接线

本文再次重新梳理&#xff1a; 两线式/三线式传感器的原理及接线、PLC的输入和输出接线&#xff0c;深入其内部原理&#xff0c;按照自己熟悉的方式去理解该知识 在此之前&#xff0c;需要先统一几个基础知识点&#xff1a; 在看任何电路的时候&#xff0c;需要有高低电压差&…...

k8s(11) — 探针和钩子

钩子和探针的区别&#xff1a; 在 Kubernetes&#xff08;k8s&#xff09;中&#xff0c;钩子&#xff08;Hooks&#xff09;和探针&#xff08;Probes&#xff09;是保障应用稳定运行的重要机制&#xff0c;不过它们的用途和工作方式存在差异&#xff0c;以下为你详细介绍&…...

使用jmeter对数据库进行压力测试

&#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 前言 很多人提到 jmeter时&#xff0c;只会说到jmeter进行接口自动化或接口性能测试&#xff0c;其实jmeter还能对数据库进行自动化操作。个人常用的场景有以下&…...

Scala与Go的异同教程

当瑞士军刀遇到电锯&#xff1a;Scala vs Go的相爱相杀之旅 各位准备秃头的程序猿们&#xff08;放心&#xff0c;用Go和Scala不会加重你的发际线问题&#xff09;&#xff0c;今天我们来聊聊编程界的"冰与火之歌"——Scala和Go的异同。准备好瓜子饮料&#xff0c;我…...