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

Kubernetes那点事儿——暴露服务之Ingress

Kubernetes那点事儿——暴露服务之Ingress

  • 前言
  • 一、ingress
    • 负载均衡器Ingress Controller
    • 路由规则Ingress
  • 二、Ingress Controller
  • 三、案例


前言

在 k8s 集群中,如果我们将服务暴露出来,提供访问,可以使用Nodeport方式,但是Nodeport也有缺点,比如端口号用尽,只能支持4层的负载均衡。为了弥补Nodeport的不足,Ingress应运而生。

一、ingress

Ingress 公开了从集群外部到集群内服务的HTTP和HTTPS路由。流量路由由Ingress资源上定义的规则控制。
下面是一个将所有流量都发送到同一Service的简单Ingress示例:

在这里插入图片描述

Ingress分为两部分:负载均衡器和路由规则:

在这里插入图片描述

负载均衡器Ingress Controller

在这里插入图片描述

路由规则Ingress

# http示例.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: example-ingress
spec:rules:- host: example.ingress.comhttp:paths:- path: /pathType: Prefixbackend: service:name: web-service  # serviceName对应service的名称port:number: 80 # servicePort对应service监听端口# https示例.yaml
apiVersion: networking.k8s.io/v1 
kind: Ingress
metadata:name: tls-example-ingress
spec:tls:- hosts:- sslexample.ctnrs.com secretName: secret-tlsrules:- host: sslexample.ingress.comhttp:paths:- path: /pathType: Prefixbackend: name: web-service  # serviceName对应service的名称port:number: 80 # servicePort对应service监听端口

在这里插入图片描述

二、Ingress Controller

Ingress Controller有很多实现,示例采用官方维护的基于Nginx实现的,其他还可使用haproxy、lvs等。
Github:https://github.com/kubernetes/ingress-nginx
部署:kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/nginx-0.30.0/deploy/static/mandatory.yaml

部署Ingress Controller

方案一(2次反代)
使用DaemonSet部署ingress-controller,ds保证集群每个或者部分满足条件的node运行单个pod,如果是打算让每个node都跑一个ingress还是部分满足条件节点跑ingress都需要ds,这种部署模式ingress-controller需用hostnetwork,直接将pod与host共享网命名空间,host直接监控pod监听的端口。ingress可以直接转发请求到host。

user -> LB -> ingress-controller -> pod

方案二(3次反代)

使用Deployment部署ingress-controller,再使用service的nodeport方法去暴露ingress-controller,与DaemonSet方式部署最大的区别该方式ingress-controller不需要hostnetwork,但deployment可能会出现几个ingress都在一个或几个node上,这不优雅也不能保证集群高可用。

user -> LB -> svc(nodePort) -> ingress-controller -> pod

kubectl apply -f ingress-controller.yamlkubectl get pods -n ingress-nginx -o wideNAME                             READY   STATUS    RESTARTS   AGE   IP           NODE        NOMINATED NODE   READINESS GATESnginx-ingress-controller-hdx4b   1/1     Running   0          22m   10.7.7.221   k8s-node1   <none>           <none>nginx-ingress-controller-pqkx8   1/1     Running   0          22m   10.7.7.222   k8s-node2   <none>           <none>因为controller采用DaemonSet模式,所以集群每个节点都起一个pod,master节点有taint,所以master节点没有pod

三、案例

需求:一个或多个特定的node上只运行ingress(污点+标签+ds)

  1. 打污点,给node打上污点,防止其他pod运行在此node上
  2. 给ingress打上污点容忍,允许pod可以运行在污点node上
  3. 使用nodeSelector,将ingress调度到污点node
  4. 使用DaemonSet控制器,控制每个污点node上都运行一个ingress

相关文章:

Kubernetes那点事儿——暴露服务之Ingress

Kubernetes那点事儿——暴露服务之Ingress 前言一、ingress负载均衡器Ingress Controller路由规则Ingress 二、Ingress Controller三、案例 前言 在 k8s 集群中&#xff0c;如果我们将服务暴露出来&#xff0c;提供访问&#xff0c;可以使用Nodeport方式&#xff0c;但是Nodepo…...

八股文总结

文章目录 项目介绍1.不动产项目项目难点机器学习算法调研图像提取算法调研数据集-ImageNetXceptionVGGInceptionDensenetMobilenet 系统流程图 2.图书项目技术栈ShiroMybatisMyBatis:Mybatis Plus: 面试问题 Java基础基本数据类型反射接口和抽象类异常代理模式1. 静态代理2. 动…...

【浅学 MyBatis 】

MyBatis 笔记记录 一、MyBatis基础1. MyBatis介绍及快速入门2. 相关API介绍2.1 Resources2.2 SqlSessionFactory&&SqlSessionFactoryBuilder2.3 SqlSession 3. 映射配置文件4. 核心配置文件4.1 规范写法4.2 参数和返回类型_起别名 5. 引入Log4j 二、MyBatis进阶1. 接口…...

Windows版Redis安装

最近电脑重装了系统&#xff0c;很多常用的软件、应用都没有了&#xff0c;所以需要重新装&#xff0c;所以想借此机会把一些安装比较复杂的应用的安装过程&#xff0c;重新记录一下&#xff0c;方便后续&#xff0c; 安装 Redis默认只有Linux的版本&#xff0c;但是微软为了更…...

Flume面试题二十道

什么是Apache Flume&#xff1f; 参考答案&#xff1a;Apache Flume是一个可靠、分布式、可扩展的日志收集和聚合系统。它用于将大量的日志数据从不同的源&#xff08;如Web服务器、应用程序日志&#xff09;传输到目标&#xff08;如Hadoop、HBase&#xff09;中进行存储和分析…...

单链表OJ题:LeetCode--138.复制带随即指针的链表

朋友们、伙计们&#xff0c;我们又见面了&#xff0c;本期来给大家解读一下LeetCode中第138道单链表OJ题&#xff0c;如果看完之后对你有一定的启发&#xff0c;那么请留下你的三连&#xff0c;祝大家心想事成&#xff01; 数据结构与算法专栏&#xff1a;数据结构与算法 个 人…...

Chapter7: SpringBoot与数据访问

尚硅谷SpringBoot顶尖教程 1. JDBC 1.1 依赖及配置 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <dependency><groupId>mysql</groupId…...

【Sqlite3】maraidb和sqlite3部分命令操作区别

maraidb和sqlite3部分命令操作区别记录 1.安装sqlite3 在实现我的视频点播系统项目时&#xff0c;我尝试封装了两种数据库的调用逻辑 mysql&#xff08;maraidb&#xff09;sqlite3 这里封装sqlite3的原因是&#xff0c;sqlite3主要针对的就是嵌入式数据库&#xff0c;其性能…...

Linux中新建用户使用sudo问题

文章目录 sudo问题 sudo问题 sudo&#xff1a;权限提示指令&#xff0c;当使用sudo这条指令时&#xff0c;会将普通用户的权限提升为root权限 但是在命令行新建用户&#xff0c;这个用户使用sudo指令对一条指令提权是用不了的 这个用户没有在sudoers file这个文件中&#xff…...

Sentinel源码分析-ProceesorSlotChain调用链及树状资源节点

Sentinel 实现流控&#xff0c;隔离&#xff0c;降级等功能&#xff0c;本质要做两件事&#xff1a; 数据统计&#xff1a; 统计某个资源的访问数据&#xff08;QPS,RT&#xff08;响应时间&#xff09;&#xff0c;异常比例&#xff09;等信息规则判断&#xff1a; 判断流控规…...

springboot 连接 kafka集群(kafka版本 2.13-3.4.0)

springboot 连接 kafka集群 一、环境搭建1.1 springboot 环境1.2 kafka 依赖 二、 kafka 配置类2.1 发布者2.1.1 配置2.1.2 构建发布者类2.1.3 发布消息 2.2 消费者2.2.1 配置2.2.2 构建消费者类2.2.3 进行消息消费 一、环境搭建 1.1 springboot 环境 JDK 11 Maven 3.8.x spr…...

Nacos配置中心使用(Spring Cloud版)

目标 向项目中集成Nacos配置。原项目是一个SpringBoot项目。这里假设我们无法修改原有项目的SpringBoot版本。 注意 在不动SpringBoot版本的前提下&#xff0c;根据SpringBoot的版本&#xff0c;确定Spring Cloud和Nacos版本。Nacos版本其实就是Spring Cloud Alibaba版本。在…...

STM32F407硬件I2C实现MPU6050通讯(CUBEIDE)

STM32F407硬件I2C实现MPU6050通讯 文章目录 STM32F407硬件I2C实现MPU6050通讯cubeide设置写操作与读操作函数实现复位&#xff0c;读取温度&#xff0c;角度等函数封装mpu6050.cmpu6050.h代码分析 DMP移植1.修改头文件路径为自己的头文件路径2.修改I2C读写函数为自己mcu平台的读…...

HTML5 语义元素(一)页面结构

本篇主要介绍HTML5增加的语义元素中关于页面结构方面的&#xff0c;包含&#xff1a; <article>、<aside>、<figure>、<figcaption>、<footer>、<header>、<main>、<nav>、<section>等元素。 目录 1. 语义元素介绍 1.…...

嵌套滚动实践:onInterceptTouchEvent与NestedScrolling【实用为准】

嵌套滚动&#xff1a;内外两层均可滚动&#xff0c;比如上半部分是一个有限的列表&#xff0c;下半部分是WebView&#xff0c;在内层上半部分展示到底的时候&#xff0c;外部父布局整体滚动内部View&#xff0c;将底部WevView拉起来&#xff0c;滚动到顶部之后再将滚动交给内部…...

Redis入门 - 5种基本数据类型

原文首更地址&#xff0c;阅读效果更佳&#xff01; Redis入门 - 5种基本数据类型 | CoderMast编程桅杆https://www.codermast.com/database/redis/five-base-datatype.html 说明 在我们平常的业务中基本只会使用到Redis的基本数据类型&#xff08;String、List、Hash、Set、…...

mybatis-plus用法(一)

MyBatis-plus 是一款 Mybatis 增强工具&#xff0c;用于简化开发&#xff0c;提高效率。下文使用缩写 mp来简化表示 MyBatis-plus&#xff0c;本文主要介绍 mp 整合 Spring Boot 的使用。 (5条消息) mybatis-plus用法&#xff08;二&#xff09;_渣娃工程师的博客-CSDN博客 1…...

源码安装包管理

1. 源码包基本概述 在linux环境下面安装源码包是比较常见的, 早期运维管理工作中&#xff0c;大部分软件都是通过源码安装的。那么安装一个源码包&#xff0c;是需要我们自己把源代码编译成二进制的可执行文件。 源码包的编译用到了linux系统里的编译器&#xff0c;通常源码包…...

Vue|获取表单数据

在Vue中获取表单数据有多种方式&#xff0c;具体取决于你使用的是哪种表单元素和你的需求。 1. 单个表单元素&#xff1a; 如果你只需要获取单个表单元素的值&#xff0c;可以使用v-model指令将表单元素的值绑定到Vue实例的一个属性上。例如&#xff1a; <input type&quo…...

微信小程序入门学习02-TDesign中的自定义组件

目录 1 显示文本2 自定义组件3 变量定义4 值绑定总结 我们上一篇讲解了TDesign模板的基本用法&#xff0c;如何开始阅读模板。本篇我们讲解一下自定义组件的用法。 1 显示文本 官方模板在顶部除了显示图片外&#xff0c;还显示了一段文字介绍。文字是嵌套在容器组件里&#xf…...

测试微信模版消息推送

进入“开发接口管理”--“公众平台测试账号”&#xff0c;无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息&#xff1a; 关注测试号&#xff1a;扫二维码关注测试号。 发送模版消息&#xff1a; import requests da…...

Prompt Tuning、P-Tuning、Prefix Tuning的区别

一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...

.Net框架,除了EF还有很多很多......

文章目录 1. 引言2. Dapper2.1 概述与设计原理2.2 核心功能与代码示例基本查询多映射查询存储过程调用 2.3 性能优化原理2.4 适用场景 3. NHibernate3.1 概述与架构设计3.2 映射配置示例Fluent映射XML映射 3.3 查询示例HQL查询Criteria APILINQ提供程序 3.4 高级特性3.5 适用场…...

Python:操作 Excel 折叠

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...

【解密LSTM、GRU如何解决传统RNN梯度消失问题】

解密LSTM与GRU&#xff1a;如何让RNN变得更聪明&#xff1f; 在深度学习的世界里&#xff0c;循环神经网络&#xff08;RNN&#xff09;以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而&#xff0c;传统RNN存在的一个严重问题——梯度消失&#…...

css3笔记 (1) 自用

outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size&#xff1a;0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格&#xff…...

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 在 GPU 上对图像执行 均值漂移滤波&#xff08;Mean Shift Filtering&#xff09;&#xff0c;用于图像分割或平滑处理。 该函数将输入图像中的…...

AI病理诊断七剑下天山,医疗未来触手可及

一、病理诊断困局&#xff1a;刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断"&#xff0c;医生需通过显微镜观察组织切片&#xff0c;在细胞迷宫中捕捉癌变信号。某省病理质控报告显示&#xff0c;基层医院误诊率达12%-15%&#xff0c;专家会诊…...

GitFlow 工作模式(详解)

今天再学项目的过程中遇到使用gitflow模式管理代码&#xff0c;因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存&#xff0c;无论是github还是gittee&#xff0c;都是一种基于git去保存代码的形式&#xff0c;这样保存代码…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...