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

K8S的ingress

一。ingress的介绍

对于NodePort和LoadBalance,这两种方法,都有缺点:

1.NodePort方式缺点会占用很多集群的端口,当集群服务变多的时候,缺点更加显著

2.LB的缺点就是每一个service都需要一个LB,浪费,麻烦,并且需要K8S之外的设备

基于上面两种情况,K8S提供了ingress资源对象,ingress只需要一个nodeport或者一个LB就可以满足暴露多个service需求,实际上,ingress相当于一个7层负载均衡器,是K8S对反向代理的一个抽象,他的工作原理类似于nginx,可以理解为在ingress里建立多个映射规则,ingress controller通过监听这些配置规则并且转化为nginx反向代理,然后对外提供服务,在这李有两个给核心概念:

1.ingress:K8S的一个对象,作用是定义请求如何转发到service的规则

2.ingress controller:具体实现反向代理负载均衡的程序,对ingress定义规则进行解析,根据配置的规则来实现请求转发,事项方式很多:nginx,haproxy等

二。Ingress的工作原理:

1.用户编写ingress规则,说明哪一个域对应K8S集群的哪一个服务

2.ingress控制器动态感知ingress服务规则的变化,然后生成一段相应的nginx反向代理配置

3.ingress控制器会将生成的nginx配置写入到一个运行着nginx的服务中,并动态更新

4.到此为止,其实真正的工作就是nginx了,内部配置了用户定义的请求转发规则

三。环境的准备:

1.下载配置文件:wget -c https://gitee.com/kong-xiangyuxcz/svn/releases/download/ingress-nginx-controller-v1.13.1/deploy.yaml

445         image: ingress-nginx/controller:v1.11.2

546         image: ingress-nginx/kube-webhook-certgen:v1.4.3

599         image: ingress-nginx/kube-webhook-certgen:v1.4.3

kubectl apply -f deploy.yaml:启用yaml

kubectl get -f deploy.yaml:删除yaml

四。ingress的用法:

准备工作:

kubectl create deployment myappv1 --image nginx:1.17.1 --dry-run=client -o yaml > myappv1.yaml:创建一个控制器

kubectl create service clusterip myappv1 --tcp 80:80 --dry-run=client -o yaml >> myappv1.yaml:创建servie服务

--dry-run=client模拟执行命令(客户端 dry run),不会实际创建服务,仅生成配置

 cp myappv1.yaml myappv2.yaml:创建两个yaml

运行结果:

使用ingress进行负载均衡:

1. kubectl -n ingress-nginx get ingressclasses.networking.k8s.io:查看自己所在的类

2.kubectl create ingress ingress-test --class nginx --rule="/=myappv1:80" --dry-run=client -o yaml > ingress-test.yml:生成ingress文件

3.进行检测:

4.测试:

五。ingress基于路径的访问:

1.首先删除以前的ingress,避免冲突:

2.创建基于路径的ingress文件:

3.检测结果:

六。基于域名的访问:

测试:

七。建立tls加密

1.建立私钥和证书:openssl req -newkey rsa:2048 -nodes -keyout tls.key -x509 -days 365 -subj "/CN=nginxsvc/0=nginxsvc" -out tls.crt

2.建立资源存储,假如集群:kubectl create secret tls web-tls-secret --key tls.key --cert tls.crt

3.查看secret内容: kubectl get secrets web-tls-secret -o yaml

4.查看类型:

5.进行配置:

6.测试:

七。建立auth认证:

1.下载软件: 

dnf install httpd-tools

2.建立加密用户

 htpasswd -cm auth admin
3.提取到集群空间,generic存储任意键值对形式的敏感数据

kubectl create secret generic auth-web --from-file auth

4.查看加密详细内容:

kubectl get secrets auth-web -o yaml

5.编写yml文件:

6.测试:

八:rewirte重定向:

http://www.lryc.cn/news/622907.html

相关文章:

  • 玩转云原生,使用k9s管理k8s集群和k3s集群
  • 如何在 MacOS 上安装 SQL Server
  • VS Code配置MinGW64编译ALGLIB库
  • 水分含量低、残留物少且紫外光谱纯净的生物溶剂推荐
  • python学习DAY43打卡
  • VScode 使用遇到的问题
  • 北京JAVA基础面试30天打卡11
  • MQ迁移方案
  • Linux软件编程:进程与线程(线程的传参、属性、通信(互斥锁、信号量))
  • 嵌入式硬件篇---电容本质
  • 【图像算法 - 15】智能行李识别新高度:基于YOLO12实例分割与OpenCV的精准检测(附完整代码)
  • Redis-plus-plus 安装指南
  • IOMMU的2级地址翻译机制及多级(2~5)页表查找
  • 区块链技术原理(14)-以太坊数据结构
  • 解决html-to-image在 ios 上dom里面的图片不显示出来
  • 一次性能排查引发的Spring MVC深度思考
  • 31 HTB Union 机器 - 中等难度
  • pytest介绍(python测试框架)(@pytest.mark.parametrize、@pytest.fixtures)
  • yolo neck特征融合 浅层特征深层特征
  • Python训练营打卡 DAY 38 Dataset和Dataloader类
  • Linux上管理Java的JDK版本
  • B*算法深度解析:动态避障路径规划的革命性方法
  • Go语言指针与内存分配深度解析:从指针本质到 new、make 的底层实现
  • 【最后203篇系列】032 OpenAI格式调用多模型实验
  • RD-Agent for Quantitative Finance (RD-Agent(Q))
  • Spark Shuffle中的数据结构
  • 亚马逊S3的使用简记(游戏资源发布更新)
  • 后台管理系统-4-vue3之pinia实现导航栏按钮控制左侧菜单栏的伸缩
  • 二进制为什么使用记事本读取会出乱码
  • 密码学入门笔记4:分组密码常见算法1——DES