k8s的对外服务ingress

1、service的作用体现在两个方面

(1)集群内部:不断跟踪pod的变化,更新deployment中的pod对象,基于pod的ip地址不断变化的一种服务发现机制
(2)集群外部:类似于负载均衡器,把流量ip+端口,不涉及转发url(http/https),把请求转发到pod当中

2、service

nodeport

容器端口——service端口——nodeport

设定了nodeport,每个节点都会有一个端口被打开(30000-32767)

ip+端口:节点ip+30000-32767,实现负载均衡

loadbalancer

云平台上的一种service服务,云平台提供负载均衡ip地址

extrenal

域名映射

3、ingress:基于域名进行映射,把url(http/https)请求转发到service,再由service把请求转发到每个pod

①ingress:只要一个或者少量的公网ip/LB,可以把多个http请求暴露到外网,七层反向代理
②ingress:是service的service,是一组基于域名和url路径,把一个或者多个请求转发到service的规则
④先是七层代理(ingress)——再是四层代理(server)——pod(nginx)

4、ingress的组成

(1)ingress是一个api对象,通过yaml文件来进行配置

(2)ingress的作用:定义请求如何转发到service的规则,配置模版

(3)ingress通过http和https暴露集群内部的service,给service提供一个外部的url、负载均衡、ssl/tls(https)的能力,实现基于域名的负载均衡

ingress-controller

具体的实现反向代理和负载均衡的程序,对ingress定义的规则进行解析,根据ingress的配置规则进行请求的转发

ingress-controller不是k8s自带的组件功能,ingress-controller是一个统称

③ingress-controller:nginx ingress controller、traefik(开源)

ingress-controller的运行方式:pod形式运行在节点上

5、ingress资源的定义项

(1)定义外部流量的路由规则
(2)定义服务的暴露方式:主机名、访问的路径(url)和其他的选项
(3)负载均衡(ingress-controller实现)

6、下载nginx ingress controller

wget https://gitee.com/mirrors/ingress-nginx/raw/nginx-0.30.0/deploy/static/mandatory.yaml

7、ingress暴露服务的方式

(1)deployment+LoadBalance模式,ingress部署在公有云
①ingress的配置文件里面会有一个type,type键值对形式type:LoadBalance
②公有云平台会为LoadBalance的service创建一个负载均衡器,绑定一个公网地址,通过域名指向这个公网地址,就可以实现集群对外暴露
(2)daemonSet+hostnetwork+nodeselector(七层代理upstream)
①daemonset:在每个节点都会创建一个pod
②hostnetwork:pod共享节点主机的网络命名空间,pod中的容器直接使用节点主机的ip+端口,pod中的容器可以直接访问主机上的网络资源
③nodeselector:根据标签选择部署的节点,nginx-ingress-controller部署的节点

缺点:直接利用节点主机的网络和端口,一个node只能部署一个ingress-controller的pod,适合大并发的生产环境

优点:性能最好

(3)deployment+NodePort(七层+四层)

8、部署daemonSet+hostnetwork+nodeselector

(1)修改配置文件mandatory.yaml

(2)每个节点上传控制器的镜像
tar -xf ingree.contro-0.30.0.tar.gz
docker load -i ingree.contro-0.30.0.tar

(3)节点设置标签
kubectl label nodes node2 ingress=true

netstat -antp | grep nginx

8181端口:nginx-controller默认配置的一个bachend,反向代理的端口

所有的请求当中,只要是不符合ingress配置的请求会转发到8181,相当于一个error的页面

(4)创建PVC、pod、service、ingress规则

(5)配置映射

(6)测试访问

8、deployment+NodePort(七层+四层)

(1)修改配置文件vim mandatory.yaml

(2)下载nodeport模版文件:
wget https://gitee.com/mirrors/ingress-nginx/raw/nginx-0.30.0/deploy/static/provider/baremetal/service-nodeport.yaml

①nodeport在每一节点上都暴露32110和32336的端口

3创建PVC、pod、service、ingress规则

(4)配置映射

(5)访问测试

(6)deployment+NodePort总结
①nodeport由ingress的service创建的,不是deployment的service创建的
②nodeport适用于小集群
③ingress根据标签匹配ingress-nodeport,ingress-nodeport再根据标签匹配service,service再匹配deployment
④每个节点都有一个controller,controller接收到解析后的请求ip和端口
(7)ingress暴露服务的方式:核心的控制组件nginx-ingress-controller
①host——ingress的配置找到pod——controller转发请求到pod
②nodeport——controller——ingress——service转发请求到pod
③nodeport暴露端口的方式是最简单的方法,但是nodeport多了一层nat地址转换
并发量大的对性能会有一定的影响,内部都会用nodeport

9、通过虚拟主机的方式实现http代理

(1)通过ingress方式实现:一个ingress可以访问不同的主机
(2)创建pod和service

3创建ingress

4配置映射

10、总结:
(1)ingress的核心组件:nginx-ingress-controller、traefik,都是开源的ingress-controller
(2)ingress的三种工作方式(重点)

deployment+loadbalancer:

需要云平台提供一个负载均衡的公网地址,公有云上配置

daemonset+hostnetwork+nodeselector:指定节点部署controller

①缺点:和宿主机共享网络,只能是一个controller的pod,多个端口会造成冲突

②hostnetwork会和宿主机共享网络

deployment+nodeport:最常见、最常用、最简单的方式

①集中一个nodeport端口,所有的ingress的请求都会转发到nodeport,再由service把流量转发到pod

(3)一个ingress的nodeport可以实现访问多个虚拟主机(和nginx一样)

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

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

相关文章

PuTTY的ppk密钥与OpenSSH密钥之间的相互转换

几个概念说明:id_rsa、id_rsa.pub、ppk、pem 目前有两个主流的密钥格式:OpenSSH格式的密钥 和 PuTTY格式的密钥。 id_rsa和id_rsa.pub 都是OpenSSH格式的密钥。 id_rsa是OpenSSH格式的SSH私钥。 id_rsa.pub是OpenSSH格式的SSH公钥。ppk文件 ppk文件是P…

机器视觉系统在汽车车轮毂检测上的应用

将机器视觉用于轮毂检测,可以利用图像分析的方法来测量轮毂特征尺寸、判断轮毂形状,并获取其位置坐标等信息,从而能够辨识流水生产线上的各种款式和型号的汽车轮毂。 市面上对汽车车轮毂具体检测要求如下 : 1.为了分辨流水线上…

HTTPS:如何确保您的网站数据传输安全?

目录 博客前言 一.HTTPS 1.1 HTTPS简介 1.2 HTTP和HTTPS区别 1.3 TLS/SSL协议工作原理 1.3.1 TLS/SSL协议结构 1.3.2 SSL/TLS握手协议建立连接过程 1.2.3 SSL/TLS报文分析 博客前言 以下是一个关于HTTPS协议的博客前言示例: 欢迎来到我的博客,今…

2024年腾讯云轻量服务器和CVM云服务器性能如何?

腾讯云轻量服务器和云服务器有什么区别?为什么轻量应用服务器价格便宜?是因为轻量服务器CPU内存性能比云服务器CVM性能差吗?轻量应用服务器适合中小企业或个人开发者搭建企业官网、博客论坛、微信小程序或开发测试环境,云服务器CV…

【面试】测试/测开(ING3)

190. 栈和堆在内存管理上的区别 栈 1) 栈是由系统自动分配和回收的内存。 2)栈的存储地址是由高地址向低地址扩展的。 3)栈是一个先进后出的结构。 4)栈的空间大小是一个在编译时确定常数,即栈的大小是有限制的&#x…

2024年回炉计划之排序算法(一)

算法是计算机科学和信息技术中的重要领域,涉及到问题求解和数据处理的方法。要学习算法,你可能需要掌握以下一些基本知识: 基本数据结构: 了解和熟练使用各种数据结构,如数组、链表、栈、队列、树和图等。数据结构是算…

新能源汽车智慧充电桩方案:基于视频监控的可视化智能监管平台

一、方案概述 TSINGSEE青犀&触角云新能源汽车智慧充电桩方案围绕互联网、物联网、车联网、人工智能、视频技术、大数据、4G/5G等技术,结合云计算、移动支付等,实现充电停车一体化、充电桩与站点管理等功能,达到充电设备与站点的有效监控…

【汇编】实验12 编写0号中断的处理程序

记录一下代码 assume cs:code code segment start:mov ax,csmov ds,axmov si,offset do0mov ax,0mov es,axmov di,200hmov cx,offset do0end-offset do0cldrep movsb ;将ds:si的字节单元byte送入es:di,也就是将从do0处往下的指令复制到0:200h中。mov word ptr es:[…

阿赵UE学习笔记——11、地形系统

阿赵UE学习笔记目录 大家好,我是阿赵。   继续学习虚幻引擎的用法,这次来学习一下虚幻引擎的地形系统的用法。 一、创建地形 在选项模式里面,选择地形: 进入到地形界面之后,需要先创建一个地形: 留意看…

Springboot+vue的智能家居系统(有报告),Javaee项目,springboot vue前后端分离项目

演示视频: Springbootvue的智能家居系统(有报告),Javaee项目,springboot vue前后端分离项目 项目介绍: 本文设计了一个基于Springbootvue的前后端分离的智能家居系统,采用M(model&a…

【Android】为什么在子线程中更新UI不会抛出异常

转载请注明来源:https://blog.csdn.net/devnn/article/details/135638486 前言 众所周知,Android App在子线程中是不允许更新UI的,否则会抛出异常: android.view.ViewRootImpl$CalledFromWrongThreadException: Only the origin…

芯片新闻-Global Semiconductor Sales Increase 5.3% Year-to-Year in November

11 月标志着一年多以来市场同比增长的第一个月;全球芯片销量环比增长2.9% 华盛顿——一月。 2024 年 12 月 9 日——半导体行业协会 (SIA) 今天宣布,2023 年 11 月全球半导体行业销售额总计 480 亿美元,比 2022 年 11 月的 456 亿美元总额增…

rust获取本地外网ip地址的方法

大家好,我是get_local_info作者带剑书生,这里用一篇文章讲解get_local_info的使用。 get_local_info是什么? get_local_info是一个获取linux系统信息的rust三方库,并提供一些常用功能,目前版本0.2.4。详细介绍地址&a…

大屏数据可视化的设计流程及原则

随着数字经济的快速发展和信息化在各行业各领域的深入推进,可视化大屏在各行各业得到越来越广泛的应用。可视化大屏不再只是电影里奇幻的画面,而是被实实在在地应用在政府、商业、金融、制造、交通、城市等各个行业的业务场景中,切切实实地实…

「alias」Linux 给命令起别名,自定义bash命令

0. 背景 Arch 系统没有 ll命令,在其他发行版用惯了一时间没有真不习惯,来配置一下吧! 1. 全局配置 我希望 ll 命令可以被所有人使用,所以应该配置在全局的bash配置文件中,一般这个全局bash配置文件在: /etc/bash.bashrc 切好管理员权限后,命令如下 echo “alias ll‘ls -l -…

React的合成事件

合成事件:通过事件委托,利用事件传播机制,当事件传播到document时,再进行分发到对应的组件,从而触发对应所绑定的事件,然后事件开始在组件树DOM中走捕获冒泡流程。 原生事件 —— > React事件 —— >…

TMDB电影数据分析(下)

TMDB电影数据分析(下) 本文对源自Kaggle TMDB电影数据集进行分析影响电影票房的因素,数据分析流程包含数据集概分析、数据清洗、数据统计以及分析影响电影票房的因素。影响票房因素可能是电影预算、电影类型、电影时长、受欢迎程度、电影评分…

十二、Qt 操作PDF文件(2)

一、在《十、Qt 操作PDF文件-CSDN博客》中我们用Poppler类库打开了PDF文件,并显示到窗体上,但只能显示一页,功能还没完善,在本章节中,加入了: 通过选择框选择PDF文件并打开,默认打开第一页。通…

【机器学习300问】11、多元线性回归模型和一元线性回归有什么不同?

在之前的文章中,我们已经学习了一元线性回归模型,其中最关键的参数是w和b。机器学习的目的就是去得到合适w和b后能准确预测未知数据。但现实世界是复杂的,一个事情的发生绝大多数时候不会是一个原因导致。 因此多元线性回归模型区别与一元线性…

虚幻UE 特效-Niagara特效实战-火焰、烛火

在上一篇笔记中:虚幻UE 特效-Niagara特效实战-烟雾、喷泉 我们进行了烟雾和喷泉的实战,而今天这篇笔记 我们在不使用模板的前提下对火焰和烛火特效进行实战 文章目录 一、火焰1、创建火焰的Niagara系统2、分析火焰是怎样的特征3、优化设置 二、烛火1、创…