00:00
各位大家好,在之前内容中呢,我们讲到了KYS里边的controller控制器,还说到了service,而在控制器里边呢,我们主要讲到的是里边用deployment部署无状态应用,但是controltrl里边还有其他的应部署,比如说有状态,包括等等其他东西,那咱们下面也来学习它的其他controller,比如说咱们先看一下,之前呢,我们用deployment部署是这些无状态的应用,那我们下面来部署一下这个有状态应用,给各位team来说明,那咱们首先先看我们的第一个内容。就是关于这个无状态。还有这个有状态,他们有什么区别,给各位先做一个比较,然后咱们再进行一个详细的部署,给各位来写一下啊。首先我们看第一个啊,就关于这个无状态。
01:01
诶,各位知道咱们之前呢,用deployment部署的应该都是无状态的这个应用,那无状态有什么特点呢?各位同学可以想一下咱之前哺乳应用有什么特点。给各位总结一下啊,首先第一个就是我们通过无状态这个部署中的这个应用,我们认为啊,就是现在。这里边它这个pod都是。一样的,比如现在我这里边创建pod,然后有三个副本,然后这三个副本那种都是一样的,这是它的第一个,就认为pod都是相同的,比如说我们看一下我这里边有之前部署那个就是相关内容,那咱们查看一下啊酷。Ctl get pods。我们看里边有web,就是现在认为里边都是一样的,因为这里边有两个部分,包括咱看的详细点杠O。Y的啊,你看啊,里边每个IP是不是一样的,就是现在认为他们都是一样的,这个是它的第一个特点,然后我们看第二个就是咱们之前部署无状态的时候,它是不是没有这个顺序的一个要求,就是我现在这里边两个node我是用哪个。
02:14
是没有什么要求,只要在里边能够给它部署到能运行上就可以了啊,这是第二个特点,然后第三个就这里边呢,我们不考虑我这个应用在哪个,就是pod上运行,它可以随意伸缩,就是现在比如说我启动,我是先启动第一个还是先从第二个没有要求,另外我运行node是在哪个上面运行,是不是也没有什么要求,所以这些都不用考虑。啊,就是不用考虑我在。哪个node上运行,另外用无状态的好处,还有一个好处,它可以我们就是随意进行,我这个就是。伸缩。包括这个。扩展啊,所以这些都是无状特点,就是他这做法很随意,认为都是一样的,没有顺序要求,就是你先求哪个后去哪个都一样,不考虑在哪个都能执行,只要里边能执行就可以,另外它可以随意进行伸缩和扩展,这个啊就关于无状态这些做法,咱这些应该都演示过,所以各位知道无状态用的特点。
03:22
但是咱们现在要部署这个叫有状态,那有状态什么特点,给各位来写一下。关这个。有状态,首先第一个我强调就是上面这些因素我们肯定都需要考虑到,什么意思呢?比如说这里边有状态,那他认为我泡的都不一样,另外他要顺序要求,另外他要考虑在哪个漏洞执行,他进行扩展伸缩有特点,比如说在区域内部,你扩展伸缩有一些特定要求,所以这个叫有状态,也就说咱们在无状态中里边的特点。不需要考虑的,在有状态中我们都需要进行考虑啊,这是我们提到的啊,而有状态中的还有一些其他特点,什么特点呢?就是他让我们里边的每个pod都是独立的,比如说咱们看啊,之前我这边2POD,其实他目前这2POD是一样的,你看啊,它目前区分的话,是不是有个IP啊。
04:21
但是这里边有个缺点,因为比如说我这pod我进行了伸缩扩展,或者给它重启,或者给它飘到其他的里面去,那这里边IP是不变,所以它这不唯一,而IP变的话,你再访问肯定访不到,虽然咱之前有其他方式,但是现在我用这个有状态的话,他认为我里边的每个pod都是独立的。而这里边它要保持我这个pod什么,就是它的启动顺序。还有他的。唯一性就是让每个po都不一样,它要用一些特定方式进行区分,比如说我第一个pod,第2POD,到底他们怎么不一样,它有特定方式进行区分,而这里边怎么区分,其实它是通过里边有一个叫唯一的这么一个。
05:11
网络标识符进行区分,包括里边还有一些持久的存储进行做到,另外里边就是它这过程中是有序的一个特点。举个例子啊,就是比如说我们那个买circle,大家知道里面有个主从嘛,那你启动肯定是先用主再用从嘛,所以这些就是关于有状态一个基本特点给各位啊,我再重复一遍。在这个过程中呢,咱们通过第1DEPLOYMENT部署都是无状态应用,然后认为你pod都一样的,没有顺序启用,要求先启用谁后启用谁都一样,另外里边也不考虑在哪个坡中运行,它可以随意伸缩扩展。而有状态就不一样了,上面因素都要考虑到,就是在有状态中呢,他让我们每个pod都是独立的,就都不一样的,然后它里边启动顺序肯定要保证唯一性,另外它通过网络标识、持有存储等等约定,每个都是不一样,它里边有序,比如说咱们知道那个买so主从,那你有主有从,它肯定有一个顺序的特点。
06:17
所以这个就是关于我们说的有状态还有无状态的这么一个特点,各位把这个给他知道。然后这个说完之后,咱们下面就来部署一下这个有状态的这么一个应用啊,我们来做个操作,就是第二个我们来部署一个。有状态应用,但是部署之前给各位先说一个概念,什么概念呢?它就叫做这个无头的service。注意啊,听这个词啊,可能感觉比较这种啊,不好听,什么叫无头service呢?给各位强调一下,Service咱之前讲到过,它是不是一个网络访问的一种规则的定义,比如说举个例子啊,假如现在我在里边做个查看,叫这个库。
07:06
Ctl get s VC,大家看我现在这里面的web,它对外是不是有一个IP都有端口号,咱通过任何节点的这个。加多少个号是可以进行访问,就是这里边你看啊是不是有一个IP,然后它类型叫这个node pod上面这个自带的这个cool,它叫做这个啊,就是class IP,所以这里边你看他们是不是都有IP地址,而什么叫无头IP呢?就是现在我让这个class IP,这个只等于那它不是用这种IP方识进行约定,而它有一个V标识,V标识就是列为生成一个特定规则,一个域名,然后通过域名进行相为操作,所以这个啊就叫无头的这么一个service,说的通俗点。我写一下啊。什么叫无service,也就是里边我们这个叫cluster。
08:04
IP。它的这个值等于这个。那。这个就叫无头的service啊,所以我们需要部署有状态应用中,首先需要先做这件事情,这个我也知道,然后这个说完之后,下面咱就实际部署一个就是有状态应用,那怎么做,给各位进一步描述啊。就是现在在我们这个CTRL里边,如果说你要部署一个就是无状态,咱用的肯定是deployment,如果你部署有状态,那里面用一个控制器,它叫做successfulful set。然后写一下啊,Sat four。在。用这个来部署一个有状态的应用,那怎么部署,给各位来演示一下啊,首先我这里边给各位提供好了一个样文件,这文件我就叫sts点样了,里边有我需要一个格式,然后咱们来看一下,通过它我们做个部署。
09:12
那我们看啊,首先里边的第一部分这位置大家清楚看到,这是一个service,而里边重点是在这个地方叫卡IP,等于那咱们刚才刚说过这是什么,是不是一个无状态的这么一个service,所以第一部分我们先建一个无状态service,然后创建之后下面有它的具体内容啊,但这个位置也改成不一啊。就这个,然后下面我们是建一个inexx inex里边有三个副本,而三个副本按照我们这种就是有状态部署,让它里边每个都是独立的po,然后它根据一些特定规则做一个唯一的区分,就根据一个网络标识,这叫sful site,这就是一个ex。所以这样的话,现在这里边就是有一个样文件,咱通过这个样文件就完成这么一个操作,但你注意啊,里边首先需要有一个无头的这么一个service。
10:10
我把这个给各位接过来,无头sweat写法就是在里面加一个cluster it等于这个,那这表示就是一个。无头的,然后下面咱们部署这么一个就是。有状态应用啊,按照这种方式,这些跟之前应该基本上都类似,然后主要就是在里边我们加上。这么一个。叫做faithful。有状态应用,所以这样的话,通过它这个样子文件,咱们可以做一个部署,而这里边我这位置创建三个副本,这里边就有三个pod,他们每个肯定都不一样,那当然执行一下啊,我现在样文件在里边应该已经给他。复制过来了啊,就是这个sts样了,然后咱们查看一下啊。
11:02
样了,咱们来看一下。首先我们看啊,在里边。Service是一个无头的这里,然后再往下看。在下面有这么一个sful set啊,注意这里用的是V啊,因为它之前版本已经没了,有了V1,然后现在就是创建这个index镜像。然后咱们给他。保存。现在这里边样文件就有了,然后有之后我们下面把这个样文件给他就执行一下,咱看一下特点啊,我们来执行库ctl。Play-FSTS样了,把它做个创建啊,你看现在它已经创建出来了,就是把这个样的文件我们做一个。创建。这个啊,都是咱们之前的这么一个基本过程,然后创建之后呢,下面我们来做一个查看,那怎么查看,咱看一下啊,首先第一个呢,我们先看这个pod。
12:04
Get。大家看啊,目前这里边其是它正在创建,你看这里边有一个ND这词sit for set,零,就刚才我写的里边的这个名字,因为它要标识每个不一样,所以它的名字肯定是唯一的,就唯一的这么一个名字,那咱们给他等待啊,比如说我再看一下,你看现在0RUNNING了,然后一正在启动。啊,咱们多等一会儿啊,因为它里边我现在是有三个部分,它会创选出零一,还有这个二。咱等它串出来,等于你看啊,零和一是不是都成功了,都是running,然后二一会马上就成功。所以现在啊,我们看到这里边有三个就是这个pod,它们都是用了一个唯一的一个名称,分别是NEX set set0,一,还有这个二。包括现在你看啊都启动了,所以这个啊是它里边的第一个特点。
13:02
给各位特别说明一下啊。就是现在我们执行,我们看到一个特点。就是咱们查看pod,我们看到这里边就是有三个这个po,他们每个都有一个唯一的这么一个名称。三个pod,每个都是。唯一的名称这个啊,是我们刚才看到的啊,所以里边这个特点,然后这个做到之后,咱们再来看一下里边那个service,就是来查看创建之后那个。Service,这service刚才说的是个什么?是不是一个无头的service,那咱来查看一下哈,注意是无头service啊,不是无头的别的东西啊。然后我叫SVC。咱们看啊,大家看里面这个地方是不是叫恩ex,包括啊我刚才起的名字就叫恩这个,然后这个N这个里边这格哈斯IP的位置是什么,是不是那么nu就表示它是一个无头的这么一个S。
14:09
给各位啊,截个图就在里边的。这个位置。所以咱们现在也做了一个查看,而它这过程中刚才提到了,就是现在它要保证让每个pod是独立的,保持pod的启动顺序和唯一性,那怎么保证它独立并且唯一性的,这里边使用一个叫唯一的网络标识,或者说一些持有存储,那这里边唯一表的标识是怎么约定的呢?给各位来说一下啊,我这里写一下。就是我们的下一个啊,它的约定呢,并不简简单单通过一个名称约定,不是说零一和二,肯定比这过程更加复杂,因为通过名称它有重复的几率,所以我强调啊,就是现在这里边,咱之前用那个叫deployment。和现在用,这叫successful set。
15:03
这应该叫啊。这两的一个最大区别是什么呢?就这个sful set,它是一个有身份的,或者它里边有一些特殊的标识啊,就是它是有这个。唯一的。标识的,那它标识怎么做呢?这里边其实它是根据啊。根据我们这个第一个。主机名就你这个SET01和二,然后加上里边还一个是它按照。啊,写一下啊,按照一定规则生成的一个域名来组成的,然后这里边你注意啊,也就是说我们现在你看啊,每个pod是不是一个主域名,就是这零一和二,然后这里边根据这个规则,它会生成这么一个域名,那域名什么规则给各位来说一下啊,这是一种比较固定的规则。
16:00
就是它那个。每个pod。都会有一个。唯一的主机名,然后它会生成这么一个唯一的这么一个域名,然后这个域名呢,有一个特定的生成规则给大家写一下啊,首先啊,我就写到这位什么就是它一个格式。在格式里边,首先是你的主机名称。啊,主机名称,然后点上你这个service的名称,就是咱说那个无头service名称,然后再上你里边那个名称空间。就是它是一个规则啊,名称空间是一个固定规则,然后后面固定的叫SVC,点上这个class。点上这个叫local。所以这个啊,是里边一个最基本的一个规则,比如说按照我们的实际,如果咱们这个要生成这个特点,那我们怎么做,肯定是来一个NEX。
17:05
杠STTS,然后杠比如这个零。点上wis名称,咱swis应该是index什么那个无头services,然后名称空间,如果没有,其实一般用的是默认的啊default。点上SVC。点local,这个是最终生成的这么一个域名,所以现在这里边就是有状态的这么一个pod,它里边就是根据这些来做到的啊,这是我们提到的这么一个特点,就用这个faithful set部署一个有状态的应用,里边就是这么一个特点。所以各位做了一个演示,然后最终我来总结一遍啊,咱们之前学的第deployment是一个无状态应部署,现在说这个s set是有状态,有状态部署中,首先第一个要先来一个无Switch,就这class IP等于呢,然后咱们用s set进行部署,在部署过程中有一个特点,第一个它每个pod都有唯一的名称,另外里面有一个无Switch,就是卡IP抖音的,另外它在区分你不同身份的时候,根据你的主机名,还有按照一定规则生成的域名进行区分的,主机名就是这个012,每个都是唯一的,然后你的域名根据主机名称S名称,名称空间加上后面固定值,把这个就终做到,所以这样的话,咱就把这个有状态的应用完成这一个部署,包括这个特点给各位做了一个介绍,所以大家把这过程给他知道啊,就是如何来部署一个有状态的这么一个应用,用sful set把。
18:47
啊,最终做到。这个啊,我们就演示完成了。
我来说两句