00:00
上一节课我们安装好了English环境,而且呢,我们说我们安装的这个English啊,它其实就是NS做的,并且安装好以后呢,它会给我们开两个端口,一个是处理HTP请求的31405和处理HTPS的32401,而且呢,这两个端口又是通过note notde port方式来确认一下给我们暴露出来的,而所谓的这两个notde port这种类型的端口,也就是说在集群内的所有集器都会开这个端口,我们可以看一下集群内我们现在是K8S3台节点,那这样就形成了这样的一个架构,我们K8S集群呢有三个节点,这三个节点呢,分别都开了31405和32401端口,其实呢,我们以后所有的请求流量进来以后,就可以发给我们集群的任何一个节点就行了,所以呢,我们把这一层我们称为层,所以我们处理English的目的就是希望请求流量一进来,先由它来处理,那由它。
01:00
处理以后呢,接下来该交给什么?所以我们接下来实战测试一下,首先呢,大家复制一下我们的这段实战用的压妹,把这个压面呢,先来创建出来,比如VIVI呢,我们这个就叫test点压面随便叫,我们是来测试我们English的,我们来粘贴WQ退出并保存,并且呢把它让它生效啊对杠F叫test羊好,我们一生效以后呢,我们发现我们的这个测试环境啊,产生了几个部署,第一次部署呢叫hello server,还有一次部署呢,叫NSTEM,所以啊,我们这个文件是干什么用的,我们可以参照这个文件,我们来画一个架构图,首先呢,我们这个文件它是一个压面,它呢这是一次部署,那这个部署呢,我们之前说过K8S里边的部署是什么,其实就是为了让我们部署是不是产生pod,所以呢,我们有一次部署,这次的部署的名呢,我随便写叫hello server,按照我们这个配置文件,而这次部署呢,有两副本。
02:00
这个写一个二,而且呢,这次部署是用了一个镜像叫hello server,我们也不管这个镜像是什么了,两个副本呢,相当于就是两个pod,然后呢,容器工作的端口是9000,所以相当于我们的这次部署,接下来会给我们产生两个pod,这两个pod呢,我们就画上两台机器吧,比如这个pod呢,是9000 9000,然后呢,我们再来画一个机器,那这个pod呢,是我们的9000,这两个pod呢,都是这一次部署而产生的,好,我们呢,把它们用同样的颜色来标记起来,这是我们这次部署产生的两个pod。另外呢,我们还有一次部署,我们可以来看一下,除了部署hello server,我们还有一次部署,它呢也是一次部署,部署的名字呢叫in DEMO,好,那我们呢,相当于又做了一次部署,我们叫in DEMO in DEMO,然后呢,我们这次部署呢,我们来看它会做什么样的事情。
03:00
这次部署呢,REPLICATE2意思呢,也是两个副本,两个副本呢,使用NG镜像给我们产生了两个副本,而且NG镜像呢,我们鉴定的八口端口肯定都是八零,所以呢我就直接再来画两个pod,又是我们这次部署产生的这个pod呢,它是来监听八零端口的,包括这个一样,这个pod呢,它是来监听八零端口的,好,我呢把这几个这次部署产生的两个pod我再来标注一个颜色,相当于我们刚才的测试呢产生的两两个部署,第一个呢是部署了一个叫hello server在9000端口,第二个呢在叫在八零端口来进行工作,而且呢,这次部署还产生了这几个叫service,所谓的这个service我们也知道它代表负载均衡网络,它的负载均衡网络呢,第一个service叫select DEMO,相当于呢,它选中部署的这几个DEMO,就这两个,嗯,它相当于选选中。
04:00
NDEMO部署的这两个pod,那我就来画一个,我把这个背景图拿过来,所以呢,我们相当于有一个网络,我就来画成它就是这一层网络,这一层网络呢,它选中了恩ex的DEMO,然后呢,这一层网络的名字叫什么?我们来看一下这个网络的名字,估计呢叫NX service什么吧,我们来看一下配置文件,那第一个service就叫DEMO,嗯,那就叫它名字呢,当然在这啊,在这,这是我们的第一个service,我们叫inex DEMO,现在我们NDEMO这次部署产生的两个pod被这个service所来管理了,对吧?而且呢,这个service用的端口是什么呢?所以接下来我们想要访问这两个pod,其实使用它的service以及它的这个端口,我们来看它的端口呢,Port是8000,目标端口是八零现。
05:00
你访问我这个service的8000端口,就会来到我们的目标pod的八零,正好呢,它是负载均衡这两个,所以呢,我们这次部署呢,产生了一个deployment,我们的一次部署以及一个service,我们可以看一下cooper controller get service确定一下,那我们产生的这个service呢,叫NDEMO,而且呢,它会有一个IP地址,那先来访问一下,保证能访问,我们按照这个IP地址,而且呢是8000端口,所以我来写8000回车,诶这是能访问的,那这次部署成功了,那继续按照我们来画出架构图,那NSDEMO呢,部署产生了一个service,我们画出来了,还有hello service的部署,我们也会产生一个service,把hello service拿来,我们会看到它看的又有一个service,产生一个service,所以接下来在这呢再画一层,这个service呢,其实我们也不用看压面文件了,它的意思呢,就是。
06:00
我们的这次部署hello service的这次部署也产生一个负载均衡,而负载均衡的名字叫什么呢?可以给大家看一下get service,那负载均衡的名字呢,叫hello server,它呢暴露的是也是8000端口,所以呢,你相当于访问这两个service的8000端口,就能分别访问到它负载均衡的这些pod,那我来访问上面的这个8000端口,我来看一下吧,就是他们的访问都会带来什么样的效果,8000回车,好,这个访问呢,Hello server部署的应用访问回来呢,会给你打印一个字叫hello word,就是这么一个简单的访问,好那我们的测试环境就打起来,相当于我的这个hello server部署的两个po,它呢会有一个负载均的service,然后呢,NDEMO部署的两个pod也会有一个负载均衡的,当然他们两个呢。
07:00
都是deployment,我们来写上,标注上,他们都是什么deploy,哎,我们产生的一次部署,下边呢也一样,那SDEMO呢,也是做了一次部署,这一次部署呢,会产生两个pod,而最终呢,我们又在下边是有service,所以呢,这两个都是大家的service。就来写上吧,叫service,叫service好,那我们最终的效果呢,就是这样,我们的部署了相当于这四个pod产生了两个service,那我希望我未来的请求流量呢,可能这样举一个例子,我希望呢,假设你给我访问hello点,比如at硅谷点com,我们按照域名访,对吧,你按照域名呢,来到我们这个服务器,当然访的时候呢,还要带上端口,因为我们默认呢,不是八零端口,是31405端口,对吧?当你呢,访hello at硅谷点com给我们呢,把请求,把请求转给谁来处理呢?因为未来啊,我们除了这些部署,我们未来可能整个集群内会部署很多的应用,每一个应用呢,都可以产生它的service负载均衡网络,而我希望呢,如果你是hello开始的,把请求转给hello的service,就是hello service的service。
08:22
意思这是我们的一个要求hello server进行处理,而如果呢,你是以这个,比如比如我们还有一个叫DEMO,那你叫呢,以DEMO点2AT硅谷点com,你呢是访问这个的31405,我呢就要求你把请求转给谁,转N几DEMO他对应的pod进行处理,因为我们接收了外部流量,所以外部流量呢,一进来先打给我们层,那我们层呢,其实接下来就要配置这两个规则,那这两个规则该怎么配置,让我们给大家的这个压面尔文件,比如我们来测试第一个,我们刚才把这个测试环境搭好了,我先来做第一个叫域名访问,把这一段代码呢,我来复制过来,大概呢给大家看一下,相当于我们接下来呢,要让K8S集群的English。
09:22
知道这两个规则,第一个规则,访问hello and Google谷com给我呢让hello server处理,访问DEMO and硅谷。com给我让DEMO处理,所以呢,我现在把它复制来,然后我们复制之前呢,改一下,大概看一下这一块该怎么用,在这一块呢,这个压ma是创建了一个English,所谓的English相当于一个转发规则,转发规则呢,剩下都不用看,随便name幕呢起一个跟别人不重复的就行了,主要这一块是host host叫我匹配的域名,由我来匹配hello.at硅谷,如果呢,你是hello.at硅谷给这个域名下给我发的请求,而且呢,注意叫pass prex啥意思,就是说你给我呢这个域名下发请求,而且呢是前缀模式,前缀的路径是杠,也就是说你给我这个域名杠下的所有请求,比如以杠为开始的所有请求,然后呢,Bank的班摁的翻译过来是不是叫后台服务呀,后台。
10:22
服务相当于我就转交给后台,哪个服务呢?我们这有一个service,写上service的名叫hello server,所以相当于我配了一下,如果是hello and硅谷,那我呢就转给hello server,而hello server服务呢,要处理它是在8000端口处理的,所以呢,我们再来写上hello server的端口8000,所以这是一个规则和CTRLC,当然如果有更多的规则,那我们就应该是这样子的,我们看到roses呢是这样写的,有一个叫host,这是一个杠,代表一个数组,所以我把这个东西CTRLC我拿来再复制一份,注意这两个呢,只要对齐就没问题,然后呢,我再来写一个叫DEMO at硅谷,他说如果呢,你接下来访问DEMO at硅谷下的所有请求,你就呢给我转到哪一块呢?我们接下来还有一个服务叫in DEMO,当然要写service名字,我们最好呢查一下ctrl get service,我们的的service的名叫DEMO。
11:22
然后呢,它也是8000端口,所以呢,我们接下来的这个文件其实就应该这么来写,如果你访问DEMO at硅谷下的所有请求,就来到NSDEMO的8000端口,好,这是我的准备的一个文件,Ctrl a ctrl c来测试一下,我们只需要告诉他这个规则就行了,比如English increase room,我们就叫English规则,点一个压面,我们把这个文件的内容给这一复制好,WK退出并保存,并且呢,让它应用上cooper controller play,杠F有写错了English的肉,我们English规则,他说呢,这个规则已经创建了,而且呢,我们可以在集群里面看到这个东西,比如get English,我看集群里面到底有多少个规则,诶,这不就是由我们一个规则,这个规则呢,匹配两个域名叫hello and硅谷点com和DEMO at硅谷点。com,只要呢,你是这两个域名发的。
12:22
请求,那我呢就会有人相应的进行处理,所以呢,我们接下来就来进行测试,当然测试之前你的这个域名得先抵达我们集群里边任意一台服务器的这个什么31405端口,对吧?所以呢,我随便呢使用一个域名工具,我这儿呢有一个叫修改Windows域名映射的工具,那域名呢,完整情况应该是你自己来申请购买,但是我就不做这么麻烦了,我们直接呢用一个域名工具,我让他呢来给我们转给这个master,我把master的IP地址来复制一份,就是它来配置一下,把我们的这个域名工具,我来配置一下hosts。
13:13
诶,点点错了,来重新搜索一下hosts,这是我的域名的切换工具。啊,分离出来,好,我来做一个映射,就是呢,以后呀,给我发hello.hello.an硅谷来写上硅谷点。com这个域名呢,应该对应的我们的这个IP地址,我们来找一下我们的master的IP地址,Master的IP地址再复制一下。好,我来添加上一个映射,比方说hello,点硅谷点com对应的呢是这个IP,当然我们因为呢有两个测试,还有一个叫DEMO,所以我就把这两个呢全部写上,点一个保存。
14:01
并且呢,最好让它应用生产环境方案好,那这个应用好了以后呢,那接下来我就访问hello.at硅谷点com,那按照我们的架构应该是访问hello.at硅谷点com就会来到我们集群的里边的某一台机器,因为我们刚才配的是master IP,但是呢,你要访问到31405端口,这个呢才是处理HTTP请求的,做CTRLC我来一复制,大家看一下效果,回车回车,当我来访问hello的31405端口的时候,我来刷新一下,按照我们现在期望的规则,就应该是访问hello.at硅谷点com下的所有请求是不是要转给hello server呀,因为我们之前已经配了这个东西,我们在我们的压面是这么来写的,Hello and硅谷com对,加上杠下的所有请求,所以呢,我来访问它下面的请求,那就应该转给hello server,我来加一个HTPPTTP吧,回车,而我们这呢?
15:01
啊,没看到内容,但是呢,Hello server就给给我们呢,应该有响应,我们可以看一下network刷新啊,那我们network呢,这一块内容是拿不到的,那的hello,艾特硅谷点com域名有没有配对,那也是配对的,我们包括我们现在呢,切换成IP地址好保证呢有我们的English网关的返回就行,那我可以来换一个浏览器再来进行测试,因为有时浏览器呢,也可能会出现这有些异常的效果,那现在来访问哈,硅谷点com http hello,硅谷点com的什么呢?呃,因为我们这儿配了一个域名,现在呢就是来访问这个叫,诶我们这儿端口拿过来叫31405 3140531405回车找不到我们的这个IP地址,那就。
16:01
确定一下你这个IP地址有没有复制,对啊,我们在这儿呢,把这个master的IP地址拿过来,在我们域名配置这一块都确认一下这个IP地址,这是没问题的,Hello,硅谷点com,这都是没问题的,包括我们来看以前的这些配置应该也没有什么冲突的。应该也没有什么冲突的,来让它应用此方案,好,我们来测试一下31405,诶那就没问题,那可能呢,刚才我们域名呢没应用上,那么现在的效果就是当们来访问哈at硅谷点com的时候呢,它就会访问hello word,而当我们访问DEMO的时候呢,它就会返回NGS页面,这就是我们按照域名进行了这个映射,这就是我们英层的优点,所有请求流量一进来以后,那英层呢,可以先提前做一个处理,当我发现你满足我哪个规则的时候,我打给哪个服务进行处理,甚至于呢,我们再来加上一个实验,我们刚才呢是测试了域名访问,而我现在呢,再来加一个,当你访问我哪一个域名下的什么请求,我呢就给你访问到这儿,所以这一块的这个路径啊,你也可以变成。
17:25
这种请求我呢就不用下面的这个了,我呢还是用我们上面的这个,比如我现在把这个杠我变成杠NX,然后呢,那就是你访问我DEMO硅谷点com下边的,我才给你来到这儿,所以如果我们想要修改,那也可以这么来修改,我们呢以前已经有一个English了,就是这个,所以想要修改的话呢,也可以使用这个命令叫edit来修改,修改我们的什么资源叫English,它的简称ing,然后呢,我们资源的名叫它复制粘贴,因为我们在默认名称空间,所以不用加杠N指定名称空间,我来回车,现在就进入我们的修改模式,修改模式呢,我现在想要改变一个这个匹配路径,就是这我进入A模式,我们现在呢,想要让他访问杠下的NS才来到NDEMO来WQ,退出并保存,所以大家看一下。
18:25
啊,我刚才不加这个NG路径和加这个NG路径有什么不同呢?咱们修改完以后呢,它在这也会给我们提示这个已经修改了,所以我们来到这儿来进行测试,当我要访问DEMO,访问DEMO下的所有请求,本来是不是要去NG4,然后呢,但是现在好,现在404了啊,因为我们把这个杠呢已经取消映射了,但是呢,我们接下来给我访问NG4,我才给你转到NG4回车,但是大家会发现这两个404有啥不同,来看一下,第一个404打印的叫NG4404NOTE found,而第二个呢,我们真正访问NS,它呢叫NS121404NOTE found,为什么呢?来我们给大家参照这个图,因为第二次呢,我又来了一个处理,在这儿呢,给大家额外扩展一下,我第二次呢,又来了一个处理,我说DEMO下的inx。
19:25
把它呢转给NSDEMO来进行处理,所以呢,如果是第一次我直接访问DEMO下的杠,我访问杠,或者呢,我访问DEMO下的任意东西,也不说杠了,我随便访吧,或者呢,我来访随便的域名,然后呢,当然这个域名呢,抵不了,抵达不了啊,因为我们域名要做映射,所以呢,因为我们现在随便返的话,返回的这个NG4404是由谁返返回的,是由我们English层返回的,因为呢,请求发过来,Englishce告诉你这个请求没有得到我的映射,我呢不能往下交,所以呢,我English层返回404,相当于就是我们网关层直接给你打回,但是呢,你要访问这个杠in,这的话,我们English是不是能处理啊,因为我们之前的写法是当你杠N的时候,我就交给N4,但是为什么此时又出现了404呢?为?
20:25
什么此时又出现了404,这正是因为你看啊,这个404的返回是inx带了版本号,而前边呢没带版本号,带了版本号的是我们部署的这些pod,所以呢,我们这一次的返回404的原因是请求带了NG4交给网关层了,网关也知道,只要呢你路径前缀是它,我呢就交给N几这个service,但是呢,我交回去以后呢,相当于由这些pod是不是来真正处理请求,而这些pod呢,相当于要在它内部去来能处理到你的这个N请求,相当于如果是我们的nt pod,那我们的这个pod内部呢,它就要找这个杠NX该咋办呀,对吧?所以呢,假设你但凡这个里边呢有一个杠NX资源,它也不至于返回404,所以呢,我来给大家做一个实例,我现在重新登录进来,我们拿我们的这个令牌,我重新登录进我的单是我。
21:25
跟NG里边呢,我就放一个NG的内容,呃,我们以哪次部署我们NGDEMO好这次部署啊,这次部署呢,我们会产生几个pod,嗯,我们的pod呢,来写一个pod,我们是部署到NDEMO好,我随便呢进某一个pod里边,我点一个执行,然后呢,因为我们in啊默认处理请求,它呢都是去它的静态资源目录叫user share in htm Mr下面找的,所以呢,我不妨给它下边呢输出一个,我输出一个一一输出给这个文件,所以现在呢,我有一个N,它里边呢,是不是有一个NT4文件了,有这个文件啊,有这个文件呢,它的内容是一一,所以你此时你再来访问,如果你访问的是NT4回车,当然它游四是404,要有负载均衡的样子啊,看有几次呢,负载均衡打到其他了,打到其他以后呢,他给我们把这个N几次文件给下载了,现在有人找到了对吧。
22:25
有人找到了已下载下载的内容,现在我们来看一下,我打开了内容是不是我们刚才写的一一,所以呢,大家一定注意我刚才的这一块的变动,然后我们把请求,把请求会转给下面的服务,下面的服务,如果下面的服务都不能处理,而且呢,我是带路径直接转给你,所以你下面的服务一定要有能处理这个路径的,如果是有路径,下面的服务一定要处理,一定要能处理,能处理这个路子当然不能处理呢,就是404,不能处理就是404找不到资源,对吧?这很正常,所以这是我们层的网络,相当于所有请求的流量入口,我把这一块的东西呢。
23:25
删掉,然后呢,刚才我们的这个问题就是路径,你带一个路径跟不带路径访问的效果一不一样呢,不一样,因为你如果是访问杠来到NGNG能处理,但如果你要访问其他请求,你来到NGNG司呢,默认可能是不能处理的,所以这就是如果你未来在这儿部署的是Java的微辅务,对吧?比如说我们这一块的路径匹配,不仅是匹配,而且往下放的时候,这个路径还会带上,但是如果呢,你只是说一个规则,我呢往下放的时候,比如我们后来开发微服务,所有的后台请求都以API开始,往下放的时候呢,让它要去掉API,所以你呢,就可以在层用更多的功能,比如路径重现,比如使用路径重写,所以呢,这些更高的功能,我可以去掉它的前缀,去掉匹配的前缀,去。
24:25
叫前缀,这些更高级功能呢,大家就应该参照我们English ins的这个官方文档,点过来,点过来这个高级功能里边呢,其中它就有一个来给大家看一下,现在get have呢,没法访问了,没法访问的就算了,如果能访问的话呢,大家会看到我们的使用文档里边,在这儿呢,也有一个路径重写功能,它呢怎么做的,你照着做一下就行啊,那现在呢,这个又出来了,我们给大家可以看一下,在我们用户手册里边,我们该如何使用呢?它可能会有一些功能,比如这有一个rewrite,就是我们说的路径重写,我呢可以相当于给它加上一些注解啦,或者什么叫set an notation,那下一节课呢,我们就来体会一项高级功能,看他该如何使用。
我来说两句