【云原生】k8s之Ingress

2023-11-13

内容预知

1.Ingress的相关知识 

1.1 Ingress的简介 

 1.2 Ingress 的组成

1.3 Ingress-Nginx的工作原理 

1.4 新生代Ingress-controller (Traefik)

 Ingress-nginx和Ingress-Traefik的简单对比

 1.5 Ingress的暴露方式

 方式一:Deployment+LoadBalancer 模式的 Service

方式二:DaemonSet+HostNetwork+nodeSelector

方式三:Deployment+NodePort模式的Service

 2. 部署DaemonSet+HostNetwork暴露Ingress

2.1 部署nginx-Ingress-controller 

 (1)下载官方nginx-Ingress的yaml配置方式

 (2)如果采用nginx-0.25.0版本,需要了解的官方变动更新

2.2 DaemonSet+HostNetwork具体的部署过程 

步骤一:下载安放ingress-controller pod及相关资源

步骤二: 为node02节点添加标签

 步骤三:上传 nginx-ingress-controller 镜像压缩包并且进行加载

步骤四:启动 nginx-ingress-controller,并检查该pod的运行状况 

​编辑

 步骤五:创建 ingress 规则

 (1)创建一个业务pod和svc资源

进行访问测试 

 3.Deployment+NodePort模式的Service

3.1 部署Deployment+NodePort模式的Service

步骤一:下载相关的ingress和service-nodeport模板

 步骤二:直接启动官方模板即可使用

3.2 进行Ingress Http代理访问的操作演示

3.3 Ingress HTTP 代理访问虚拟主机 

 (1)设置虚拟主机1资源

 (2)创建虚拟主机2资源

(3) 创建ingress资源

客户机进行测试访问

 3.4 Ingress  HTTPS 代理访问 

(1)创建ssl证书,进行secret资源存储 

 (2)创建 deployment、Service、Ingress Yaml 资源

3.5  ingress设置pod业务nginxBasicAuth认证

(1)生成用户密码认证文件,创建 secret 资源进行存储 

 (2)创建Ingress资源

(3)创建pod和service资源

 3.6 Ingress中设置nginx重写

(1)重写到的资源创建 

 (2)重写ingress资源的编辑

进行客户机访问测试 

 总结


1.Ingress的相关知识 

1.1 Ingress的简介 

service的作用体现在两个方面,对集群内部,它不断跟踪pod的变化,更新endpoint中对应pod的对象,提供了ip不断变化的pod的服务发现机制;对集群外部,他类似负载均衡器,可以在集群内外部对pod进行访问。

在Kubernetes中,Pod的IP地址和service的ClusterIP仅可以在集群网络内部使用,对于集群外的应用是不可见的。为了使外部的应用能够访问集群内的服务,Kubernetes目前提供了以下几种方案:
●NodePort:将service暴露在节点网络上,NodePort背后就是Kube-Proxy,Kube-Proxy是沟通service网络、Pod网络和节点网络的桥梁。
测试环境使用还行,当有几十上百的服务在集群中运行时,NodePort的端口管理就是个灾难。因为每个端口只能是一种服务,默认端口范围只能是 30000-32767。

●LoadBalancer:通过设置LoadBalancer映射到云服务商提供的LoadBalancer地址。这种用法仅用于在公有云服务提供商的云平台上设置 Service 的场景。 受限于云平台,且通常在云平台部署LoadBalancer还需要额外的费用。
在service提交后,Kubernetes就会调用CloudProvider在公有云上为你创建一个负载均衡服务,并且把被代理的Pod的IP地址配置给负载均衡服务做后端。

●externalIPs:service允许为其分配外部IP,如果外部IP路由到集群中一个或多个Node上,Service会被暴露给这些externalIPs。通过外部IP进入到集群的流量,将会被路由到Service的Endpoint上。 

●Ingress:只需一个或者少量的公网IP和LB,即可同时将多个HTTP服务暴露到外网,七层反向代理。
可以简单理解为service的service,它其实就是一组基于域名和URL路径,把用户的请求转发到一个或多个service的规则。

 1.2 Ingress 的组成

 ●ingress:
ingress是一个API对象,通过yaml文件来配置,ingress对象的作用是定义请求如何转发到service的规则,可以理解为配置模板。
ingress通过http或https暴露集群内部service,给service提供外部URL、负载均衡、SSL/TLS能力以及基于域名的反向代理。ingress要依靠 ingress-controller 来具体实现以上功能。

●ingress-controller:
ingress-controller是具体实现反向代理及负载均衡的程序,对ingress定义的规则进行解析,根据配置的规则来实现请求转发。
ingress-controller并不是k8s自带的组件,实际上ingress-controller只是一个统称,用户可以选择不同的ingress-controller实现,目前,由k8s维护的ingress-controller只有google云的GCE与ingress-nginx两个,其他还有很多第三方维护的ingress-controller,具体可以参考官方文档。但是不管哪一种ingress-controller,实现的机制都大同小异,只是在具体配置上有差异。
一般来说,ingress-controller的形式都是一个pod,里面跑着daemon程序和反向代理程序。daemon负责不断监控集群的变化,根据 ingress对象生成配置并应用新配置到反向代理,比如ingress-nginx就是动态生成nginx配置,动态更新upstream,并在需要的时候reload程序应用新配置。为了方便,后面的例子都以k8s官方维护的ingress-nginx为例。

 

 Ingress-Nginx github 地址:https://github.com/kubernetes/ingress-nginx
Ingress-Nginx 官方网站:https://kubernetes.github.io/ingress-nginx/

1.3 Ingress-Nginx的工作原理 

 (1)ingress-controller通过和 kubernetes APIServer 交互,动态的去感知集群中ingress规则            变化。
(2)然后读取它,按照自定义的规则,规则就是写明了哪个域名对应哪个service,生成一段                  nginx配置。
(3)再写到nginx-ingress-controller的pod里,这个ingress-controller的pod里运行着一个                Nginx服务,控制器会把生成的 nginx配置写入 /etc/nginx.conf文件中。
(4)然后reload一下使配置生效。以此达到域名区分配置和动态更新的作用。

1.4 新生代Ingress-controller (Traefik

Traefik是一个为了让部署微服务更加便捷而诞生的现代HTTP反向代理、负载均衡工具。 它支持多种后台 (Docker, Swarm, Kubernetes, Marathon, Mesos, Consul, Etcd, Zookeeper, BoltDB, Rest API, file…) 来自动化、动态的应用它的配置文件设置。 

 Ingress-nginx和Ingress-Traefik的简单对比

ingress-nginx

使用nginx作为前端负载均衡,通过ingress controller不断的和kubernetes api交互,实时获取后端service,pod等的变化,然后动态更新nginx配置,并刷新使配置生效,达到服务发现的目的。 

 Ingress-traefik:

traefik本身设计的就能够实时跟kubernetes api交互,感知后端service,pod等的变化,自动更新配置并重载。相对来说traefik更快速方便,同时支持更多的特性,使反向代理,负载均衡更直接更便捷。(GO语言编写的,原生支持K8S等云原生应用,兼容性更好,但并发能力是 ingress-nginx 的6成)

 1.5 Ingress的暴露方式

 方式一:Deployment+LoadBalancer 模式的 Service


如果要把ingress部署在公有云,那用这种方式比较合适。用Deployment部署ingress-controller,创建一个 type为 LoadBalancer 的 service 关联这组 pod。大部分公有云,都会为 LoadBalancer 的 service 自动创建一个负载均衡器,通常还绑定了公网地址。 只要把域名解析指向该地址,就实现了集群服务的对外暴露

eg:以阿里云为例 

方式二:DaemonSet+HostNetwork+nodeSelector

 
用DaemonSet结合nodeselector来部署ingress-controller到特定的node上,然后使用HostNetwork直接把该pod与宿主机node的网络打通,直接使用宿主机的80/433端口就能访问服务。这时,ingress-controller所在的node机器就很类似传统架构的边缘节点,比如机房入口的nginx

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【云原生】k8s之Ingress 的相关文章

随机推荐

  • Cplex—java集成,idea配置 步骤大全 windows版本

    首先搜索官网cplex下载安装包 本次示例以windows版本 1 双击打开安装包 2 选择简体中文 3 都是默认 修改路径的同学请记得自己的安装路径后面配置环境变量要用 4 这里我已经安装过了中间步骤直接跳过 5 接下来我们需要在java
  • 郑州大学校园网故障问题解决方法

    1 郑州大学校园网学生用户使用指南 可进入郑州大学网络管理中心网站 校园网交流QQ群 群一475137403 群二685466506 微信公众号 郑州大学网络管理中心 一 校园网注册 1 微信扫码并关注 郑州大学网络管理中心 点击进入微信公
  • FFMPEG对于rtp的推流以及VLC验证

    前言 参考资料 https blog csdn net zhoubotong2012 article details 86711097 https blog csdn net zhoubotong2012 article details 8
  • 2021-10-23

    对于算法题 还是要及时地进行总结和收获 不然 对于核心的知识掌握过几天就忘记了 相当于之前付出的努力都打了水漂 多浪费啊 LRU缓存机制 LRU 缓存机制 运用你所掌握的数据结构 设计和实现一个 LRU 最近最少使用 缓存机制 实现 LRU
  • 【转】在java中,OOA是什么?OOD是什么?OOP是什么?

    Object Oriented Analysis 面向对象分析方法 是在一个系统的开发过程中进行了系统业务调查以后 按照面向对象的思想来分析问题 OOA与结构化分析有较大的区别 OOA所强调的是在系统调查资料的基础上 针对OO方法所需要的素
  • C++ vector容器-44-vector插入和删除以及存取

    本篇继续学习vector容器 前面学习了vector是一个单端数组 也就是说vector的插入和删除 基本上都是在数组的末端进行 本篇要学习的vector插入和删除的方法就能体现这个特点 最后学习vector的存取操作 1 vector的插
  • 论文笔记 2023.5.22

    图像分类的深度卷积神经网络模型综述 图像分类的过程 图像预处理 图像特征提取 人工提取 传统图像分类算法 卷积操作提取 卷积神经网络 使用分类器对图像进行分类 以图像分类为载体 深度卷积神经网络模型主要包括以下四个类别 1 经典深度卷积神经
  • KVM处理器管理和硬件辅助虚拟化技术

    KVM处理器管理和硬件辅助虚拟化技术 Intel 在2006年发布了硬件虚拟化技术 其中支持X86体系结构的称为Intel VT x技术 AMD称为SVM技术 VT x引入了一种新的处理器操作 叫做VMX Virtual MachineEx
  • 基于多项贝叶斯的三分类的情感分析实现

    写在前面 本实验报告是一篇很水的水课的期末大作业 代码 数据集均为原创 意在用最少的代码和最简单的数据集完成老师留下的题目 仅供交流学习使用 禁止直接洗稿嗷 目录 写在前面 一 实验目的 二 实验手段和方法 三 实验内容 四 实验总结 一
  • 量子计算(13)基础知识4:量子测量

    量子测量是量子电路中最后一个元素 在电路中我们经常用到 下面 我将描述量子测量的数学依据以及与量子测量相关的科学定理 目录 一 量子测量 1 理论知识 2 计算基下测量单量子比特 二 两个原理 1 延迟测量原理 2 隐含测量原理 一 量子测
  • Linux下查找文件(日志)中的关键字

    进入到需要查看日志文件的目录 执行以下命令 即可快速定位到想要查看日志内容所在行 1 查看日志 前 n行 cat 或者 tail 日志文件名 head n 数量 示例1 cat api log head n 200 查看log前200行 示
  • three.js加载纹理总是黑色的问题

    什么是纹理 简单理解就是贴在几何体或平面的纹路 就比如一个杯子上的图案 菜鸟 包括我 根据three js教程上代码敲上去之后 纹理没有效果 查阅了半天 总结有以下几个原因 1 图片路径 谷歌浏览器需要在属性中按照如图配置 allow fi
  • SYS_PTRACE容器

    docker run cap add SYS PTRACE security opt seccomp unconfined security opt apparmor unconfined
  • 基于springboot+vue的电影视频订票咨询网站系统-Java项目毕业设计

    项目介绍 随着网络不断的普及发展 影城管理系统依靠网络技术的支持得到了快速的发展 首先要从用户的实际需求出发 通过了解用户的需求开发出具有针对性的首页 电影信息 电影资讯 个人中心 后台管理 在线客服功能 影城管理系统的主要使用者分为管理员
  • 全数字锁相环的研究与设计

    参考文档 http www doc88 com p 4364928925689 html 一篇硕士学位论文 全数字锁相环的研究与设计 https www docin com p 1390623327 html 基于延迟锁定环的TDC的设计
  • mysql 连接池断开后自动连接

    MySQL对所有连接的有效时间默认为28800秒 正好8小时 也就是说 如果一个连接8小时没有请求和操作 就会自动断开 但是对于 Hibernate来说 它的连接池并不知道它所管理的连接中是否有被MySQL断开的 如果一个程序要使用数据库连
  • 实时数仓之实际落地如何选型和构建

    往期类似文章 实时数仓之 Kappa 架构与 Lambda 架构 奔跑者 辉的博客 CSDN博客 企业级 实时数仓架构图 奔跑者 辉的博客 CSDN博客 第一部分 Spark基础篇 奔跑者 辉的博客 CSDN博客 第一部分 Flink基础篇
  • 找不到msvcp120dll,无法继续执行代码的修复方法

    本教程操作系统 Windows系统 msvcp120 dll是电脑文件中的dll文件 动态链接库文件 如果计算机中丢失了某个dll文件 可能会导致某些软件和游戏等程序无法正常启动运行 并且导致电脑系统弹窗报错 msvcp120 dll文件丢
  • 32 --> 详解 OpenWRT系统框架基础软件模块之netifd

    一 简介 OpenWrt路由操作系统的框架基础软件有很多 大部分是通用的软件模块 如 dhcp dnsmasq iproute cmwp vpn ipsec等等 OpenWrt还集成部分具有专属特征软件模块 也是OpenWRT系统核心框架软
  • 【云原生】k8s之Ingress

    内容预知 1 Ingress的相关知识 1 1 Ingress的简介 1 2 Ingress 的组成 1 3 Ingress Nginx的工作原理 1 4 新生代Ingress controller Traefik Ingress ngin