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一样)

11、基于ingress实现https代理访问(证书、密钥)

(1)生成密钥、证书
openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -keyout tls.key -out tls.crt -subj "/CN=nginxsvc/0=nginxsvc"

req

生成证书文件的请求

-x509

生成x.509自签名的证书

-sha256

表示使用sha-256的散列算法

-nodes

表示生成的密钥不加密

-day 365

证书有效期是265天

-newkey rsa:2048

RSA的密钥对,长度2048位

-keyout tls.key -out tls.crt

密钥文件key、证书文件crt

-subj"/CN=nginxsvc/O=nginxsvc"

主题CN(common name)O:表示organization组织

(2)创建secret,保存证书和密钥
kubectl create secret tls tls-secret --key tls.key --cert tls.crt

(3)创建pod、service、ingress

(4)设置映射

(5)测试访问

①虚拟机测试访问

②负载均衡

内部实现ingress访问https:DNS域名解析
外部实现ingress访问https:购买域名

12、ngixn的登录账户认证

(1)htpasswd生成一个认证文件,认证文件只能是auth
yum -y install httpd
htpasswd -c auth hyde

2创建secret保存auth认证文件
ubectl create secret generic basic-auth --from-file=auth

(3)创建ingress

(4)配置映射

(5)测试访问

13、nginx的重写rewrite(nginx的重定向)

(1)创建ingress

(2)设置映射

3测试访问

nginx-ingress-controller全部完成
14、traefik ingress controller(和nginx ingress controller的原理一样)

(1)traefik是一个为了让部署微服务更加快捷而诞生的一个http反向代理、负载均衡
①traefik设计时就能够实时的和k8s的api进行交互,可以感知后端service以及pod的变化,可以自动更新配置和重载
(2)traefik的部署方式
①daemonset
②deployment
(3)daemonset部署的特点
①每个节点都会部署一个traefik
②节点感知,可以自动发现、更新容器的配置,不需要手动重载
③缺点:资源占用,在大型集群中,daemonset可能会运行多个traefik的实例,尤其是在不需要大量容器运行的情况下(资源利用率不是很好,没有办法扩缩容)
④应用于部署对外集群(对外的业务会经常变更,使用daemonset可以更好的、自动的发现服务配置变更)
⑤设定标签:traffic-type:internal(对内服务)
(4)deployment部署的特点
①优点:集中办公控制,可以使用少量的实例来运行处理整个集群的流量,更容易升级和维护
②缺点:deployment的负载均衡不会均分到每个节点;无法感知容器内部的配置变化,需要手动更新
③应用于部署对内集群(内部的业务相对稳定,更新和变化也比较少,更适合deployment)
④设定标签:traffic-type:iexternal(对外服务)
(5)traefix-ingress和nginx-ingress的区别
①工作原理都一样,都是七层代理,都可以动态的更新配置,都可以自动发现服务
②traefix自动更新的重载速度更快,更方便
③traefix适用于小集群,traefix处理并发的能力只有nginx-ingress的60%
(6)traefik的实例之deployment+nodeport模式
①生成模版文件
wget  https://gitee.com/mirrors/traefik/raw/v1.7/examples/k8s/traefik-deployment.yaml
wget  https://gitee.com/mirrors/traefik/raw/v1.7/examples/k8s/traefik-rbac.yaml
wget  https://gitee.com/mirrors/traefik/raw/v1.7/examples/k8s/traefik-ds.yaml
wget  https://gitee.com/mirrors/traefik/raw/v1.7/examples/k8s/ui.yaml

②运行配置文件

③访问:20.0.0.71:31800

* 删除ingress

④创建pod、service、ingress

⑤测试访问

⑥设置映射

⑦配置自动发现
* 缩容

* 扩容

15、总结

(1)ingress的组件(开源):nginx-ingresscontroller、traefik-ingress-controller
(2) nginx-ingress的部署方式
①deployment+loadbalancer:公有云提供负载均衡的公网地址
②daemonset+hostnetwork+nodeselector:和节点服务器共享网络,一个节点只能部署一个controller pod,使用宿主机的端口,性能最好,适合大并发
③deployment+nodeport:最常见、最常用、最简单的方法,但是性能不太好,多了一层nat的地址转发,不太适合大并发
(3)traefik-ingress的部署方式
①对外:daemonset,可以自动更新容器的配置(host,使用节点的网络)
②对内:deployment,无法自动更新容器的配置(nodeport)
(4)基于ingress实现https代理访问(证书、密钥)
①先生成密钥、证书
②创建secret,保存证书和密钥
③创建ingress的时候把secret导入进去
(5)nginx登录加密认证
①htpasswd生成一个认证文件,认证文件只能是auth
②创建ingress的两个代码
第一条:声明认证类型
第二条:导入认证的密钥文件(以secret的方式存储在集群中)

(6)nginx的rewrite重定向
①在指定的ingress文件当中声明的url都会跳转到指定的页面

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MongoDB Compass当前版本及历史版本下载安装

mongoDB compass 当前版本下载 官网 https://www.mongodb.com/try/download/compass 官网下载一般只能下载最新版本。 github https://github.com/mongodb-js/compass MongoDB Compass与MongoDB的版本对应关系 MongoDB CompassMongoDB1.9.12MongoDB 2.6.11 Community

conda install命令无法安装pytorch

由于网络问题,直接采用conda install命令可能无法直接下载对应的cuda包。 方法一:采用pip命令替代 步骤1:切换pip的源为国内源: 若只是临时切换: pip install -i https://pypi.tuna.tsinghua.edu.cn/simple some-p…

appium之联动pycharm

前置条件: 1.java环境安装好了 2.android-sdk安装好(uiautomatorviewer 也可以把这个启动起来) 3.appium安装好 4.adb devices查看下设备是否连接 pycharm入门代码--固定写法 from appium import webdriver# 定义字典变量 desired_caps …

ONLYOFFICE:开源、免费、安全,打造定制化办公平台的最佳选择

文章目录 写在前面ONLYOFFICE是什么?ONLYOFFICE的惊艳之处齐全的插件,助你锦上添花部署一款自己的安全可靠的办公平台写在最后 写在前面 说起 Office 办公软件,我想大家最常用的应该就是微软的 Microsoft Office 以及国产的 WPS Office。两款…

C++设计模式(李建忠)笔记4(完结)

C设计模式(李建忠) 本文是学习笔记,如有侵权,请联系删除。 参考链接 Youtube: C设计模式 Gtihub源码与PPT:https://github.com/ZachL1/Bilibili-plus 豆瓣: 设计模式–可复用面向对象软件的基础 总结23种设计模式…

Qt应用开发(安卓篇)——Linux下Qt15.5.2配置Android

目录 一、前言 二、Qt安装 三:JDK安装 四:安装SDK,NDK 五、其他事项 六、新建项目 一、前言 看网上教程,多数是windows环境下的,配置也很简单,想不到自己配置的时候却遇到很多问题,传了一…

给WordPress网站增加一个带时间的led广告牌

WordPress 后台》外观》小工具》自定义html》添加到合适位置 其他系统可自行添加合适位置 <style type"text/css">.studytextgzbox {background: #F9F9F9; border: 1px solid #999999;margin: 1px;text-align:center; float: left;line-height: 28px;hei…

2018年认证杯SPSSPRO杯数学建模B题(第一阶段)动态模糊图像全过程文档及程序

2018年认证杯SPSSPRO杯数学建模 B题 动态模糊图像 原题再现&#xff1a; 人眼由于存在视觉暂留效应&#xff0c;所以看运动的物体时&#xff0c;看到的每一帧画面都包含了一段时间内 (大约 1/24 秒) 的运动过程&#xff0c;所以这帧画面事实上是模糊的。对电影的截图来说&…

【STM32】STM32学习笔记-MPU6050简介(32)

00. 目录 文章目录 00. 目录01. MPU6050简介02. MPU6050参数03. MPU6050硬件电路04. MPU6050框图05. MPU6050常用寄存器06. 附录 01. MPU6050简介 •MPU6050是一个6轴姿态传感器&#xff0c;可以测量芯片自身X、Y、Z轴的加速度、角速度参数&#xff0c;通过数据融合&#xff0…

STM32标准库开发——USART串口协议

通信接口 通信的目的:将一个设备的数据传送到另一个设备&#xff0c;扩展硬件系统通信协议:制定通信的规则&#xff0c;通信双方按照协议规则进行数据收发 差分电平&#xff08;Differential Voltage Level&#xff09;是指用两个相对的电平来表示信号的电压差异。它是通过将…

LabVIEW精确测量产品中按键力和行程

项目背景 传统的按键测试方法涉及手工操作&#xff0c;导致不一致和效率低下。在汽车行业中&#xff0c;带有实体按键的控制面板非常常见&#xff0c;确保一致的按键质量至关重要。制造商经常在这些组件的大规模、准确测试中遇到困难。显然&#xff0c;需要一个更自动化、精确…

SpringBoot基础:一步步创建SpringBoot工程

摘要 本文介绍了&#xff0c;从零开始创建SpringBoot工程&#xff0c;且在每一步给出分析和原因。创建maven – 转Springboot – 引入jdbc – 引入数据库操作框架&#xff0c;最后给出了不同场景指定不同配置文件的方案。 背景 为什么要使用SpringBoot工程&#xff1f; 使用Sp…

Linux--进程控制

进程终止 进程终止是指一个正在运行的进程结束其执行并释放占用的系统资源的过程。进程可以通过以下几种方式终止&#xff1a; 正常终止&#xff1a;进程完成了它的任务&#xff0c;或者遇到了终止条件&#xff0c;例如调用了exit()函数或主函数执行完毕。 异常终止&#xff1…

金融CRM系统是什么?有哪些功能和作用

今年市场经济下行&#xff0c;投资趋向于保守、人们消费降级&#xff0c;对于金融行业来说影响很大。受经济形式的影响加上行业的数字化转型升级&#xff0c;金融企业都在寻求客户管理的新策略&#xff0c;维护好忠实客户、吸引新客户投资。小编认为CRM系统是管理客户的不二之选…

计算机网络——运输层(1)暨小程送书

计算机网络——运输层&#xff08;1&#xff09;暨小程送书 小程一言专栏链接: [link](http://t.csdnimg.cn/ZUTXU) 运输层概述两个主要协议运输层和网络层的关系网络层运输层总结 多路复用与多路分解多路复用多路分解不同的技术实现时分复用&#xff08;TDM&#xff09;频分复…

74.网游逆向分析与插件开发-背包的获取-物品名称与物品编号的映射关系分析

内容参考于&#xff1a;易道云信息技术研究院VIP课 上一个内容&#xff1a;73.网游逆向分析与插件开发-背包的获取-物品数据的初步数据分析-CSDN博客 还是打开 Cheat Engine&#xff0c;搜索字符串&#xff0c;先把名字找到 然后又两个 然后第二个好像是根据悬浮窗来的&#…

投简历没回复?先做到这点。。

大家好&#xff0c;我是程序员鱼皮。 秋招告一段落&#xff0c;几家欢喜几家愁。不过这都无所谓了&#xff0c;上岸的同学继续努力&#xff0c;没上岸的同学发现问题&#xff0c;抓紧准备春招才是。 如果你投了几百份简历都没回复&#xff0c;那么一定有原因。比如环境、运气、…

瑞_Java开发手册_(四)安全规约

&#x1f64a;前言&#xff1a;本文章为瑞_系列专栏之《Java开发手册》的安全规约篇。由于博主是从阿里的《Java开发手册》学习到Java的编程规约&#xff0c;所以本系列专栏主要以这本书进行讲解和拓展&#xff0c;有需要的小伙伴可以点击链接下载。本文仅供大家交流、学习及研…

springBoot 添加自定义类库包

一、新建SpringBoot Web 二、添加类库包 com.saas.pdf 删除掉多余的类&#xff0c;新建类&#xff1a;PdfUtil.java package com.saas.pdf;public class PdfUtil {public static void Save(String filePath) {System.out.println("保存成功&#xff01;");} }三、…

1.5计算机网络的分类

1.5计算机网络的分类 1.5.1按照网络的作用范围进行分类 1、广域网WAN 广域网WAN&#xff08;WideAreaNetwork&#xff09;&#xff1a;广域网的作用范围通常为几十到几千公里&#xff0c;因而有时也称为远程网(longhaulnetwork)。广域网是互联网的核心部分&#xff0c;其任务…