kubernetes七层负载Ingress搭建(K8S1.23.5)

首先附上K8S版本及Ingress版本对照

Ingress介绍

NotePort:该方式的缺点是会占用很多集群机器的端口,当集群服务变多时,这个缺点就愈发的明显(srevice变多,需要的端口就需要多)

LoadBalancer:该方式的缺点是每个service都需要一个外部负载均衡设备的支持才可以

基于这种现状,k8s提供了ingress资源对象。

ingress只需要一个NodePort/一个负载均衡设备就可以满足暴露多个service的需求

实际上Ingress相当于一个7层的负载均衡器(在生产环境中常用的Ingress有Treafik、Nginx、HAProxy、Istio等),是k8s对反向代理的一个抽象,它的工作原理类似于Nginx,可以理解成Ingress里建立诸多映射规则Ingress Colltroller通过监听这些配置规则转化成Nginx的反向代理配置,然后对外部提供服务,在这里有两个核心理念:

  • - Ingress:k8s中的一个对象,作用是定义请求如何转发到service的规则定义转发规则
  • - Ingress controller:具体实现反向代理负载均衡的程序,对Ingress定义的规则进行解析

根据配置的规则来实现请求转发,实现方式有很多,比如Nginx,Contour,Haproxy等等

Ingress的工作原理

ingress-controller通过和 kubernetes APIServer 交互,动态的去感知集群中ingress规则变化;

然后读取它,按照自定义的规则,规则就是写明了哪个域名对应哪个service,生成一段nginx配置;

再写到nginx-ingress-controller的pod里,这个ingress-controller的pod里运行着一个Nginx服务,控制器会把生成的 nginx配置写入 /etc/nginx.conf文件中;

然后reload一下使配置生效。以此达到域名区分配置和动态更新的作用。

kubernetes + ingress-nginx部署

我这里的K8S版本为1.23.5对应的安装ingress-nginx-1.6.4;

下载对应部署文件deploy.yaml(这一步需要魔法,没有的可以从下链接提取)

同时为了方便后续http和https的分辨,固定端口为31080和31443

未修改版本

https://pan.baidu.com/s/1FJ3ai_5YQYypKi72HhpGqg?pwd=weiy 
提取码:weiy

已修改版本

https://pan.baidu.com/s/1CF5UJ8aQy-IDvpv9r2RYuQ?pwd=weiy 
提取码:weiy

注意80对应的是HTTP端口,443对应的是HTTPS端口

部署文件上传后,需要注意切换为国内镜像地址(修改成国内可以下载的相同镜像)

 

 一共需要修改三处镜像

具体修改如下:

 image: registry.k8s.io/ingress-nginx/kube-webhook-certgen:v20220916-gd32f8c343@sha256:39c5b2e3310dc4264d638ad28d9d1d96c4cbb2b2dcfb52368fe4e3c63f61e10f

 将其改为:

dyrnq/kube-webhook-certgen:v20220916-gd32f8c343

  image: registry.k8s.io/ingress-nginx/controller:v1.6.4@sha256:15be4666c53052484dd2992efacf2f50ea77a78ae8aa21ccd91af6baaa7ea22f

将其修改为:

registry.cn-hangzhou.aliyuncs.com/google_containers/nginx-ingress-controller:v1.6.4

部署Ingress

[root@master ~]# mkdir /ingress-controller
[root@master ~]# cd /ingress-controller
[root@master ~]# ls

[root@master ingress-controller]# kubectl apply -f ./

正常为created,我先前已经apply 

1、查看ns(会有一个ingress-nginx的名称空间产生)

2、查看ingress-nginx名称空间的pod 

[root@master ingress-controller]#  kubectl get po -n  ingress-nginx

3、查看service

[root@master ingress-controller]# kubectl get svc -n ingress-nginx

4、部署tomcat与nginx的pod,通过tomcat-nginx.yml文件创建

[root@k8s-master ~]# cat>tomcat-nginx.yml <<EOF
---
apiVersion: apps/v1
kind: Deployment
metadata:name: nginx-deploymentnamespace: dev
spec:replicas: 1selector:matchLabels:app: nginx-podtemplate:metadata:labels:app: nginx-podspec:containers:- name: nginximage: nginx:1.18ports:- containerPort: 80nodeName: node2
---
apiVersion: apps/v1
kind: Deployment
metadata:name: tomcat-deploymentnamespace: dev
spec:replicas: 1selector:matchLabels:app: tomcat-podtemplate:metadata:labels:app: tomcat-podspec:containers:- name: tomcatimage: tomcat:8.5-jre10-slimports:- containerPort: 8080nodeName: node2
---
apiVersion: v1
kind: Service
metadata:name: nginx-servicenamespace: dev
spec:ports:- port: 80name: nginxclusterIP: Noneselector:app: nginx-pod
---
apiVersion: v1
kind: Service
metadata:name: tomcat-servicenamespace: dev
spec:selector:app: tomcat-podtype: ClusterIPports:- protocol: TCPport: 80targetPort: 8080
EOF

这里我固定了调度的node,为node2

5、创建svc与pod

[root@master ~]# kubectl create -f tomcat-nginx.yml

6、查看svc信息

[root@master ~]# kubectl get svc -n dev

7、查看pod信息

[root@master ~]# kubectl get po -n dev

Ingress-HTTP代理

通过ingress代理http服务,创建ingress-http.yml 

[root@master ~]# vim ingress-http.yml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: ingress-httpnamespace: dev
spec:ingressClassName: nginxrules:- host: www.nginx.comhttp:             #访问的方式是以http的形式paths:- backend:service:name: nginx-service  #用户在访问域名的时候,会反向代理给service,也就是后面的pod(service是通过标签去代理的)port: number: 80path: /pathType: ImplementationSpecific- host: www.tomcat.comhttp:paths:- backend:service:name: tomcat-serviceport: number: 80path: /pathType: ImplementationSpecific

1、创建ingress

[root@master ~]# kubectl create -f ingress-http.yml

2、查看ingress信息

[root@master ~]# kubectl get ing ingress-http -n dev

3、查看详细描述

[root@master ~]# kubectl describe ing ingress-http -n dev

测试HTTP代理

浏览器访问由于域名无法正常解析,需要在windows内进行解析

C:\Windows\System32\drivers\etc

添加解析:

 

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

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

相关文章

linux用户组_创建_删除_修改

2.2.2 用户组 每个用户都有一个用户组&#xff0c;系统可以对一个用户组中的所有用户进行集中管理。不同Linux系统对用户组的规定有所不同&#xff0c;如Linux下的用户属于与它同名的用户组&#xff0c;这个用户组在创建用户时同时创建。 组的类型&#xff1a; 基本组&#x…

【Node.js】笔记整理 3 -npm

写在最前&#xff1a;跟着视频学习只是为了在新手期快速入门。想要学习全面、进阶的知识&#xff0c;需要格外注重实战和官方技术文档&#xff0c;文档建议作为手册使用 系列文章 【Node.js】笔记整理 1 - 基础知识【Node.js】笔记整理 2 - 常用模块【Node.js】笔记整理 3 - n…

机器学习模型验证——以数据为中心的方法

构建机器学习模型时&#xff0c;人们往往将激情和精力集中于收集数据和训练模型&#xff0c;对测试模型和验证结果往往缺少应有的关注。正确的验证技术有助于估计无偏见的广义模型的性能&#xff0c;并更好地理解模型训练的效果。您需要确保机器学习模型经过准确的训练&#xf…

游戏开发纪实——一款横板2d跑酷游戏是如何诞生的?

前不久&#xff0c;参加了学校游戏社团Nova独游社举办为期两周的GameJam&#xff0c;算是一段有点意思的经历&#xff0c;遂以本文记录如下。 GameJam是什么 GameJam是指游戏开发者聚集在一起&#xff0c;在有限的时间内合作创作游戏的活动。这种活动旨在通过短时间内集中精力…

re:Invent 构建未来:云计算生成式 AI 诞生科技新局面

文章目录 前言什么是云计算云计算类型亚马逊云科技云计算最多的功能最大的客户和合作伙伴社区最安全最快的创新速度最成熟的运营专业能力 什么是生成式 AI如何使用生成式 AI后记 前言 在科技发展的滚滚浪潮中&#xff0c;我们见证了云计算的崛起和生成式 AI 的突破&#xff0c…

什么是美颜sdk?集成第三方美颜sdk的步骤

本文将深入探讨如何集成第三方美颜sdk&#xff0c;为直播平台引入更先进、更具吸引力的美颜特效。 第一步&#xff1a;选择合适的第三方美颜sdk 在开始集成美颜sdk之前&#xff0c;首要任务是选择适合自己直播平台需求的第三方美颜sdk。不同的sdk可能具有不同的特色和性能&a…

rabbitmq-server-3.11.10.exe

rabbitmq需要erlang环境 otp_win64_25.1.exe erlang-CSDN博客 https://www.rabbitmq.com/download.htmlhttps://www.rabbitmq.com/install-windows.htmlhttps://github.com/rabbitmq/rabbitmq-server/releases/download/v3.11.10/rabbitmq-server-3.11.10.exe C:\Users\Admi…

Tomcat的安装及其使用

一.下载安装 本文下载的是8.5版本的&#xff0c;下载链接&#xff1a;Apache Tomcat - Welcome! 切记解压缩的目录不要有中文存在。 二.启动Tomcat 在解压缩之后&#xff0c;会有很多文件存在&#xff0c;但是我们只需要在意两个文件&#xff01; webapps 目录 . web applica…

阿里健康发布最新公告:收入129.6亿 获阿里妈妈医疗健康类目独家经营权

11月28日&#xff0c;阿里健康发布公告宣布&#xff0c;正式与阿里巴巴集团签署股权认购协议&#xff0c;以135.12亿港元对价&#xff0c;获得阿里妈妈医疗健康类目的独家营销审核权及附属权利。交易完成后&#xff0c;阿里巴巴集团对阿里健康的持股比例从56.99%上升到63.83%。…

【探索Linux】—— 强大的命令行工具 P.18(进程信号 —— 信号捕捉 | 信号处理 | sigaction() )

阅读导航 引言一、信号捕捉1. 内核实现信号捕捉过程2. sigaction() 函数&#xff08;1&#xff09;函数原型&#xff08;2&#xff09;参数说明&#xff08;3&#xff09;返回值&#xff08;4&#xff09;函数使用 二、可重入函数与不可重入函数1. 可重入函数条件2. 不可重入函…

网站优化进阶指南:如何用Python爬虫进行网站结构优化

前段时间一个做网络优化的朋友找我&#xff0c;问我能不能通过爬虫的手段对他们自己的网络进行优化。这个看着着实比较新颖&#xff0c;对于从事爬虫行业的程序员来说&#xff0c;很有挑战性&#xff0c;值得尝试尝试。 说白了使用爬虫进行网站优化需要对网站的结构、内容、链…

深光标准谷歌GMS认证实际EDLA项目分享

一、谷歌EDLA协议简单介绍&#xff0c;设备过认证是做MADA的还是EDLA的&#xff1f;EDLA跟MADA有什么区别&#xff1f; 在了解EDLA跟MADA的差异之前&#xff0c;我们需要先了解这两个协议的中文意思&#xff0c;EDLA&#xff0c;英文为Enterprise Device Licensing Agreeement—…