36、k8s-Ingress的使用-搭建ingress-nginx服务和ingress-controller控制器--http代理

1、搭建ingress服务环境(安装ingress-controller控制器)--这里使用nginx做负载均衡

1、创建文件:·mkdir /opt/ingress·cd /opt/ingress
2、获取ingress-nginx和ingress控制器的yaml文件:##创建ingress-controller控制器的yaml文件·wget https://github.com/kubernetes/ingress-nginx/blob/nginx-0.30.0/deploy/static/mandatory.yaml        ##创建 ingress-nginx服务的yaml文件·wget https://github.com/kubernetes/ingress-nginx/blob/nginx-0.30.0/deploy/static/provider/baremetal/service-nodeport.yaml 
3、去到ingress目录下修改镜像仓库地址:·vim /opt/ingress/mandatory.yaml------------------------------------------------------------------------------------搜/image#将:image: quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.30.0#改为国内仓库:image: quay-mirror.qiniu.com/kubernetes-ingress-controller/nginx-ingress-controller:0.30.0#@如果国内镜像不行直接用国外镜像下载#@注意使用    kubectl describe pods -n ingress-nginx  查看pod的下载启动情况#@更换镜像后、先把yaml创建的pod和service删除:kubectl delete -f ./#@再创建------------------------------------------------------------------------------------------------------------------
4、执行yaml文件:·cd /opt/ingress·kubectl apply -f ./
5、查看pod状态:·kubectl get pods -n ingress-nginx----------------------------------------------------------------------------------------NAME                                        READY   STATUS    RESTARTS   AGEnginx-ingress-controller-7f74f657bd-97jbm   1/1     Running   0          12m#只有READY  是1/1时pod才是正常运行状态-----------------------------------------------------------------------------------------
6、查看service状态:    #重点是这个服务(起到外部访问内部集群的作用、外部访问内部的集群通过这个ingress-nginx服务的端口来访问的)·kubectl get service -n ingress-nginx-----------------------------------------------------------------------------------------------NAME            TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)                      AGEingress-nginx   NodePort   10.97.145.253   <none>        80:30090/TCP,443:32457/TCP   13m#这里service的类型是NodePort的#80是http的端口#443是https的端口------------------------------------------------------------------------------------------------

2、准备service和pod

·创建如下图架构

 

2、创建tomcat-nginx.yaml

1、创建dev空间:kubectl create ns dev
2、vim tomcat-nginx.yaml
---------------------------------------------------------------
#创建两个deployment控制器和6个pod、两个serviceapiVersion: apps/v1
kind: Deployment
metadata:name: nginx-deploymentnamespace: devspec:replicas: 3selector:matchLabels:app: nginx-podtemplate:metadata:labels:app: nginx-podspec:containers:- name: nginximage: nginx:1.17.1ports:- containerPort: 80---apiVersion: apps/v1
kind: Deployment
metadata:name: tomcat-deploymentnamespace: devspec:replicas: 3selector:matchLabels:app: tomcat-podtemplate:metadata:labels:app: tomcat-podspec:containers:- name: tomcatimage: tomcat:8.5-jre10-slimports:- containerPort: 8080---apiVersion: v1
kind: Service
metadata:name: nginx-servicenamespace: devspec:selector:app: nginx-podclusterIP: Nonetype: ClusterIP  ports:- port: 80targetPort: 80---apiVersion: v1
kind: Service
metadata:name: tomcat-servicenamespace: devspec:selector:app: tomcat-podclusterIP: None  type: ClusterIP    #集群内部访问的service类型ports:- port: 8080targetPort: 8080-------------------------------------------------------------------------------------3、创建deploy、pod、service:kubectl apply -f tomcat-nginx.yaml
4、查询service、pod、deploy的状态:·kubectl get deployment,pods,svc -ndev -owide------------------------------------------------------------------------------------------------NAME                                READY   UP-TO-DATE   AVAILABLE   AGE     CONTAINERS   IMAGES                  SELECTORdeployment.apps/nginx-deployment    3/3     3            3           2m24s   nginx        nginx:1.17.1            app=nginx-poddeployment.apps/tomcat-deployment   3/3     3            3           2m24s   tomcat       tomcat:8.5-jre10-slim   app=tomcat-podNAME                                     READY   STATUS    RESTARTS   AGE     IP            NODE     NOMINATED NODE   READINESS GATESpod/nginx-deployment-6696798b78-g489b    1/1     Running   0          2m24s   10.244.1.7    node-1   <none>           <none>pod/nginx-deployment-6696798b78-m2b9r    1/1     Running   0          2m24s   10.244.1.10   node-1   <none>           <none>pod/nginx-deployment-6696798b78-wx2r2    1/1     Running   0          2m24s   10.244.1.8    node-1   <none>           <none>pod/tomcat-deployment-58467d5474-d7cn5   1/1     Running   0          2m24s   10.244.1.9    node-1   <none>           <none>pod/tomcat-deployment-58467d5474-kwhrf   1/1     Running   0          2m24s   10.244.1.5    node-1   <none>           <none>pod/tomcat-deployment-58467d5474-lhbcj   1/1     Running   0          2m24s   10.244.1.6    node-1   <none>           <none>NAME                     TYPE        CLUSTER-IP   EXTERNAL-IP   PORT(S)    AGE     SELECTORservice/nginx-service    ClusterIP   None         <none>        80/TCP     2m24s   app=nginx-podservice/tomcat-service   ClusterIP   None         <none>        8080/TCP   2m24s   app=tomcat-pod-----------------------------------------------------------------------------------------------------------------------------------------------------

 

3、http代理(也就是ingress规则、配置规则才能使外部访问集群内部的应用)

1、创建ingress-http.yaml文件:vim ingress-http.yaml
-----------------------------------------------------------------------------------------------
apiVersion: extensions/v1beta1
kind: Ingress
metadata:name: ingress-httpnamespace: devspec:rules:- host: nginx.xiaoxin.com        #自定义域名(正式环境需要正确备案的域名)http:paths:- path: /                         #这个路径如果是 /test 那么访问的时候就加上 http://nginx.xiaoxin.com/testbackend:                        #转发配置、转发到下面配置的服务serviceName: nginx-service    #这个就是上面创建的service、当访问http://nginx.xiaoxin.com/时 就会转发到这个service上servicePort: 80- host: tomcat.xiaoxin.comhttp:paths:- path: /backend:serviceName: tomcat-serviceservicePort: 8080
------------------------------------------------------------------------------------------------------------------------------
2、创建Ingress:kubectl create -f ingress-http.yaml
3、查看ingress状态:·kubectl get ing ingress-http -ndev        #ing是ingress的缩写------------------------------------------------------------------------------------NAME           HOSTS                                  ADDRESS         PORTS   AGEingress-http   nginx.xiaoxin.com,tomcat.xiaoxin.com   10.97.145.253   80      73s#hosts  是域名        #posts  是http暴露的端口----------------------------------------------------------------------------------------
4、查看ingress更详细的信息:·kubectl describe ing ingress-http -ndev--------------------------------------------------------------------------------------------Name:             ingress-httpNamespace:        devAddress:          10.97.145.253Default backend:  default-http-backend:80 (<none>)Rules:Host                Path  Backends----                ----  --------nginx.xiaoxin.com                        #看这里即可  意思是 访问nginx.xiaoxin.com + /  就转发到nginx-service:80 (10.244.1.10:80,10.244.1.7:80,10.244.1.8:80) 这三个pod去处理/   nginx-service:80 (10.244.1.10:80,10.244.1.7:80,10.244.1.8:80)tomcat.xiaoxin.com/   tomcat-service:8080 (10.244.1.5:8080,10.244.1.6:8080,10.244.1.9:8080)Annotations:Events:Type    Reason  Age    From                      Message----    ------  ----   ----                      -------Normal  CREATE  3m58s  nginx-ingress-controller  Ingress dev/ingress-httpNormal  UPDATE  3m19s  nginx-ingress-controller  Ingress dev/ingress-http----------------------------------------------------------------------------------------------------------------------------5、测式:·先在本机的hosts文件做域名解析:··路径:C:\Windows\System32\drivers\etc\hosts··添加域名 192.168.177.160 nginx.xiaoxin.com  ··添加域名 192.168.177.160 tomcat.xiaoxin.com·查看第一步安装的ingress-nginx服务给的端口号:··kubectl get svc -n ingress-nginx-------------------------------------------------------------------------------------------------NAME            TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)                      AGEingress-nginx   NodePort   10.97.145.253   <none>        80:30090/TCP,443:32457/TCP   134m#这里PORT 80指http协议 30090就是ingress暴露给外界访问的端口号---------------------------------------------------------------------------------------------------·浏览器访问:··http://nginx.xiaoxin.com:30090··http://tomcat.xiaoxin.com:30090

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

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

相关文章

25、k8s-pod的控制器-第四种-DaemonSet(DS)-有几个node就自动创建几个pod

概念:DaemonSet类型的控制器可以保证集群中的每一台(或指定)节点上都运行一个副本、一般适用于日志收集、节点监控场景等、也就是说、如果一个pod 提供的功能是节点级别的(每个节点都需要且只需要一个)、那么这类pod就适合使用DaemonSet类型的控制器创建 DaemonSet的特点…

24、k8s-pod的控制器-第三种-HPA(Horizontal Pod Autoscaler)-自动调整pod的数量

监测pod的使用情况来做调整 概念:HPA可以获取每个pod的利用率、然后和HPA中定义的指标(如cpu、内存等使用情况)进行对比、同时计算出需要伸缩的具体值、最后实现pod数量的调整、其实HPA与之前的Deployment 控制器一样、也属于一种kubernetes资源对象、它通过追踪分析目标pod…

编译安装Haproxy

一、三种软负载均衡器的区别 1、关于三种负载均衡器的性能对比: LVS是基于内核实现的,他的性能最好; 其次是haproxy,最后是nginx 关于三种负载均衡器的代理类型对比: LVS只支持基于ip的四层代理转发,也不支持正则匹配; haproxy和nginx都可以作为四层代理和七层代理,同时…

CentOS7.9部署站点运行

简介 本章节主要讲的是在Linux系统CentOS7.9上去完成.NET Core 6.0软件的安装,确定Linux的版本是x64还是arm64的,然后到.NET Core的官网下载6.0的SDK,并进行安装 步骤 1.进入站点目录 2.运行站点 3.配置 Nginx 站点代理 4.浏览站点 实施 1.进入站点目录[root@ml006 /]# cd /…

三大财务报表之间的勾稽关系

财务须知:三大财务报表之间的勾稽关系是怎样,附合并报表系统 三大财务报表是利润表、资产负债表、现金流量表,财务报表之间有勾稽关系,好比资产负债表是底子,利润表就是外面的面子,而现金流量表就是实实在在的日子,可以通过财务报表看出企业财务经营状况是怎么样,那他们…

MMM高可用配置

目录1.MMM的概述2.MMM的工作原理3.如何实现主主复制 1.MMM的概述 MMM(Master-Master replication manager for MySQL,MySQL主主复制管理器) 是一套支持双主故障切换和双主日常管理的脚本程序。MMM 使用 Perl 语言开发,主要用来监控和管理 MySQL Master-Master (双主)复制…

《Programming from the Ground Up》阅读笔记:p1-p18

《Programming from the Ground Up》学习第1天,p1-18总结,总计18页。 一、技术总结 1.fetch-execute cycle p9, The CPU reads in instructions from memory one at a time and executes them. This is known as the fetch-execute cycle。 2.general-purpose vs special-pu…

SpringMVC-02-什么是SpringMVC

1、概述Spring MVC是Spring Framework的Web开发部分,是基于Java实现MVC的轻量级Web框架。官方文档:https://docs.spring.io/spring-framework/docs/4.3.24.RELEASE/spring-framework-reference/html/ 中文官方文档:https://www.w3cschool.cn/spring_mvc_documentation_lines…

视图控制器UINavigationController的介绍与基本使用

UINavigationController 是 iOS 中用于管理视图控制器层次结构的一个重要组件,通常用于实现基于堆栈的导航。它提供了一种用户界面,允许用户在视图控制器之间进行层次化的导航,例如从列表视图到详细视图。 UINavigationController 的主要功能管理视图控制器堆栈:使用一个堆…

拉普拉斯网格变形实现

因为课题需要,除了RBF还做了一个Laplace网格变形,其他大佬已经把原理写的很详细了,我就简单介绍一下公式,主要还是写写实现过程。过程同样参考了大佬的部分代码,而且实现的时候刚开始敲代码不久,所以有点乱QAQ。 首先,计算离散拉普拉斯坐标,网格上的点vi的拉普拉斯坐标…

文本三剑客之grep和awk

文本三剑客之grep和awk 目录文本三剑客之grep和awk 一、grep命令 grep命令的语法:grep[选项]...查找条件 目标文件命令 作用-m数字 多个匹配只取第一个-v 取反-i 忽略大小写-n 显示匹配的行号-c 统计匹配的行数-o 仅显示匹配到的字符串-A 数字 匹配后几行-B 数字 匹配前几行-C…

shell之条件测试语句

shell之条件测试语句 目录shell之条件测试语句一、test命令或[]中括号判断1、test命令2、[]中括号2.1 整数值比较[]2.2 实例操作2.2.1 查看系统内存是否超出预定值2.2.2 比较两个数的大小2.3 字符串比较2.3.1 案例:判断字符串是否相同2.3.2 案例:判断字符串是否为空2.4 逻辑测…

ikbc poker 2说明书

Poker II电子版说明书这是带6个dip开关,type-c接口,背后有理线槽支持侧向出线的一款poker。背后的金属铭牌型号为Poker Ⅱ。ikbc官网已经没有poker相关的内容了,说明书固件都无从下载。这份电子版说明书是找客服要的,这里存一下以作备份。原文档链接:ikbc_poker_II_说明书…

Django数据库

一、MySQL驱动程序安装 我们使用Django来操作MySQL,实际上底层还是通过python来操作的。因此我们想要用Django来操作MySQL,首先还是需要安装一个驱动程序。在Python3中,驱动程序有多种选择。比如pymysql以及mysqlclient等。这里我们就使用mysqlclient来操作。mysqlclient安装…

最后两次oop作业总结

1.前言 最后两次作业(即第七八次作业)大题目都是家居强电电路模拟程序,每次作业分别给了一个礼拜的时间去完成,题量较少,难度逐渐升高,以下为依次对两周题目集的知识点,题量和难度进行概述:第六次作业: 第六次作业只有一道题 家居强电电路模拟程序3,题目大概是输入设…

日志采集/分析

目录EFK1. 日志系统2. 部署ElasticSearch2.1 创建handless服务2.2 创建sts3. 部署kibana4. 部署ilogtail(docker-compose)4.1 编写docker-compose4.2 配置ilogtail采集4.3 查看容器采集的日志4.4 采集容器标准输出日志(可选)4.5 查看采集的容器日志5. 部署kafka5.1 kafka介绍…

AOD始终显示时间和信息(Dream)简析

AOD始终显示时间和信息(Dream)简析DreamManagerService启动在SystemServer的startOtherServices方法中会启动DreamManagerService服务这里是调用SystemServiceManager的startService方法显然,在SystemServiceManager的startService方法中首先将要启动的系统服务添加到其mSer…

操作系统——学习笔记(2)CPU虚拟化

学习黑皮书的一些呆瓜行为hhhhh

免费的攻击面管理平台-森罗

产品简介 森罗是有安科技推出的一款全新综合网络安全攻击面管理平台,集网络空间测绘与漏洞扫描于一体。森罗自带万象漏洞扫描器,与Nessus和Nuclei等许多产品一样,但它更现代,具有免等待的OOB测试策略、高级漏洞PoC IDE和强大的VDSL(漏洞域特定语言)引擎,使您能够轻松快速…