粉丝241获赞1445

嗯,接下来我们来看一下这 k p s 当中如何创建一个 pod 啊,也就是说这个 pod 的一个创建的一个流程。嗯,先大致梳理一遍哈,大致梳理一遍,然后再谈一谈他这个组件之间的一个交互。首先肯定是客户端提交 这个 pro 的一个创建的一个请求,比方说你 pro ctr run 一个 run, run 一个 pod 啊,那么在旧版本的这个 run run 这个动作是 run 一个 deployment。 呃,在新版本呢,这些 run 它直接就是 run 的是一个 pod, 而不是 deployment 啊, 那这个就是通过 api server 啊,这边是 api server 这个组件提供这个 restop 这个接口啊。嗯,你可以通过这个 api 这个接口来进行创建,也可以通过 ctr 这个命令行的工具啊,或者说通过一个压门啊,还压门啊,命令啊,这些,这些还不是通过这个 pro ctr 来让这个客户端工具来提交的嘛,对不对?那你可以提交结实,也可以提交压门,或者直接写命令啊,也是一样的,那 a b s server 就会处理这个用户的请求,你创建这个 pod 啊,那个 pod 名称是什么呀?或者什么用到哪些镜像啊?这些就像个 po pod 相关这个信息,他肯定要把它先存起来,他存在哪儿?存在 etcd 啊?存 etc。 接下来就是 cube scale 它以后它会介入,它通过这个 api server 提供这个接口啊,监控到这个未绑定的这个 pod 啊,就会尝试为这个 pod 分配。尝试啊,这是尝试,还没有认识分配 为炮的分配这个漏结点。那这个过程呢,又分为两个子阶段,就是预选阶段和这个优选阶段, 预选阶段就是便利所有这个漏节点,根据这个策略筛选筛选出这个候选的节点。而优选阶点阶段就是在第一步的这个基础上,就是说这个预选阶段的基础之上,为每每一个这个候选节点就是打分啊, 分数最高者伸出啊,那接下来就会呃进行一个 pod 的一个绑定的一个操作,叫 pod 奔, pod 奔边的啊, 这个是依据什么?依据就是上一阶段这个产生的分数最高这个节点,他进行这个就把这个 pod 绑定了这个节点,并且将这个节 结果存储到 e、 t、 c、 d 当中啊,也就是说这个 pod 最终跟哪个节点进行绑,进行绑定,这个信息也得记录下来,就是存 e、 d、 c、 d, 随后就是这个目标节点,这个 couplet 我们知道肯定调做到目标节,目标节点肯定是有这个工作节点,上面肯定有这个 couplet 这个进程, 他又通过这个 apisower 提供这个接口监测到这个 cool skeleta 啊,产生这个 pod 这个绑定世界,然后从这个 etcd 当中获取这个 pod 这个清单这个信息啊, 所以前面存的东西现在都用得着了,就是 cooper light 啊,他会,他会去啊,他要根据你存的这些信息去下载进项,并且启动这个容器啊,这是 cooper light, 最终要完成这个过程。嗯,所以这是创建 po 的一个大致 一个流程啊,那接下来就看一下他的组件之间其实有很多细细小的一个步骤啊。嗯,再来 先去了解个大概,接下来我们了解一些细节,呃,用户通过这个,呃 cube ctr, 嗯,现在我就把它归为两类,一个是 cube ctr, 这种方式,你无论是 opply 也好,还是 run 也好,都是 cube ctr, 对不对?另外一种就是酷通过这个 qs api, 那你用 go 的客户端也好,加我的客户端,就是 sdk 这种客户端也好,都可以向这个 api server 发送请求来创建这个 pod, 他提供了完整的这个 rest for 各种资源对象的操作非常丰富啊, 而且有 fabric 啊,有现成的一些库啊,而无需你自己再去写啊,什么之类的啊, 有线绳的鼓啊,用起来也特别特别简单。 然后就这个,呃 a p i server, 他就接受到这个创建 pose 的请求啊,他肯定会对这个请求啊进行 合法性的一个教验啊,一些相关的一些教验。如果说这个教验通过了的话,那一边搜文就会将请求转化,转转发给这个调度器啊,在这之前啊,刚刚说了,这个 etcd 会存储这个 pod 的信息 啊,至少你这 pose 名称,使用的镜像啊,等等啊,这些信息都会存储起来。 然后就是这个 scheduler, 根据 e d e 的这个调度策略和这个资源的约束啊,选择一个合适的节点来运行 pos 啊,这就是一言以以必知,就是 一眼就是。简而言之,是这么一个动作,实际上他会进行一个平分啊,这个各个节点之间他会进行打分啊,选择分数最高的那个节点来调度这个 pod, 那调度器啊,就会将这个 pose 调度决策发送给这个 api server, 也就是说告诉 api server 啊,我已经选好了,这个就应该调制到哪去?调制到这个,呃,比如说 note 二这个节点, 那 a p s 收耳就会将这个调度角色保存到这个 etc 当中啊,作为集群状态的一部分啊,大家知道这个现在已经, 嗯,就是会频繁的跟这个 etcd 进行交互,除了 aps over ecd 就是个数据库对不对?就是一个 q qw 的一个数据库,跟 redis 差不多,只不过他这里面,嗯,他 还是作为这个,呃,就是作为这个数据库分布式的建职队的这种数据库来使用的,嗯, release 一般都是做缓存用的比较多,当然也要把 release 当数据库来用的啊。 然后调度器将这个 pose 的绑定信息发送给 cooper light 接点啊。呃。其实这个 cooper light, 呃 呃,就是这个绑定信息是什么信息呢?就是 pod 最终会调制到哪个节点啊,跟哪个节点进行绑定呢?那这个也反正也已经存到 egcd 了,他只是告诉一下啊,通知一下这个 coplite cooper light 收到这个调去发送这个绑定信息之后,就会在相应的这个节点上面创建这个 pose 这个容器。接下来就是 cooper light 通过容器运行时啊,但是新版本的默认你们 没做调整的话,默认的话是使用的空乘车的老版本的一点二零之前他这个版本,呃,他用的是这个多口哈,他就会通过这个多口啊,空乘车地或者多口来创建和管理这个 pose 这个容器,他就会下载进项啊啊,然后把这个容器给启启动起来。 溶建容器创建完成之后,然后 couple light 也会像这个 api server 报告 pose 的状态和健康的情,这样健康状况 couple light 不仅仅是报告这些 pose 的啊,包括漏的节点呢,它也是由它来负责啊,它就像那个管家一样,工作节点的一个管家 啊。荣兴平时调用这个,呃,调用这个,荣兴平时和 c r i 啊,呃,还来来创建这个,创建这个 容器,那 api server 就会更新这个 pose 状态啊,就是说啊,这个 pose 现在是是不是 running 啊,像这些状态啊,啊,是不是健康的这些这信息又会落入到 etcd, 所以现在大家知道没有,看清楚?没有,就是像这个 api server, 他很忙, etcd 更忙, 所以我们一般推荐在生产环境下这个 etcd。 呃,这个集群啊,最好至少要三个节点吧,对不对?当然还也要根据负载的这个数量啊,负载情况来决定, 最好是用 ssd 啊,这种思盘,那这个可以显著的提升这个性能。如果说 pod 定义当中定义了这个 service 啊,就是定义了这个服务啊, service ips server 将创建相应的这个服务对象,并且将 这个 service 跟这个 pod 关系起来,因为 service 其实它就是对这个 pod 进行负载均衡啊, 仅是一个流量的一个。呃,入口啊,就是这个 pod 流量它的一个入口就是通过这个 service 啊。然 service 跟 pod 之间,它其实还有一个 in the point 的, in the point 的里面才真正维护了这个 pod 的 ip 啊,这些信息啊。 然后就是 cooper proxy 啊,就是负载聚拢器,根据服务的利益将流量转发到 pod 所在的节点上的一个容器。嗯, cooper proxy 在一点一四之前啊, 一点一四 kps 一点一四这个版本之前 overpose 使用的是 iptables, 我们知道 iptables 主要用来干什么?用防护墙做防护墙管理啊,这块流量的一个管理。 那么在一点四版本之后呢?它这里呃提供了一个方案,另外一个方案就是 i p o s, 那 i p o s 是零,能用 i p o s 就用 i p o s 啊。 但是 ipos 呢,又对这个服务器超系统这个内核的版本有要求,最好是四四以上啊,四以上,那你才能 呃,就是 ipos 它唯一。比如说如果非得鸡蛋里挑骨头说 ipos 有有什么不好,那你就只能说,呃,它对这个内核的版本,内核的版本有要求啊, 其实其他的就是各各方面,他就是跟这个 iptables 相比,他应该是碾压啊。可以这么说啊,我一般不说这么绝对,但是现在基本上 就是用 ipus 什么方案做这个服务的一个代理啊。好,那这就是它大概一个过程,相对来说是跟刚刚大致梳理的这个这个步骤呢,进行了一个补充。 然后我们再来梳理一下这个几个关键组件的一个通信,就是用户与这个 cube c, t r 和 a p i server 之间的一个通信啊,用户就是一般他能可见的就是 库布斯列尔这些命令或者使用代码啊,加入代码也好,购物代码也好,当然推荐用购的代码哈,购的 s d k。 接下来这样的说要爽一点,就是使用这个 k s d k 啊,这种 a p i 跟这个 a p i 搜尔进行通信,发送上 pose 请求 api server 与这个 proper scheduler 啊,就是 schedule 这个组件,它之前会进行通信, api server 会将这个创立 pose 请求转发给这个调度器,并且接收这个调度器返回的这个调度角色, 还而且还会记录这个 pod 信息到这个 e t c d 这也是 e s o r 跟 e c e 这个交互啊,之间的一个通信, 就是像这个集群状态信息,调度角色, pod 状态更新这些等等,都都是由 a p i server 维护,它维护到哪儿呢?维护到这个 e g c d 里面去啊?从 e g c d 当中读取集群状态这个信息, 那调度器跟这个 a p i 就是 scheduler 跟这个 a p i server etc 一直进行同系,那 scheduler 接收到这个 a p i server 发送这个创建 pose 这个请求之后,就会呃,并且向这个 a p i server 报告这个 这个调度的决策,那这些信息通过 hpi server 跟这个 h d c d 进行同系 scheduler 啊,与这个 cooper light 之间同系。 scheduler 将这个 pose 这个绑定的信息发送给相应的 cooper lights 这个节点,以指示在哪个节点上面创建创建 pod 啊你, 你告诉了 cooper light 啊? cooper light 它这里面肯定它是每个节每个呃工作节点上面都有这个 cooper light 这个进程。 cooper light 它是知道这些节点的信息的啊,在哪个节点上面去创建 cooper letter 与荣幸运行时,就是这个 c r i。 接口的实线这一块啊,就不仅仅是 contend d 啊,还有什么?呃,多壳啊啊,这是只是里面用的比较比较多的啊,这样 跟这个 darker 呃,就是 container d 这一块儿啊,具体的就是要交给 corrette 会通过这个 darker 或者 container d 来创建和管理这个 pod 容器, cool light 也会跟这个 a p i server 之间进行通信, cool light 会向这个 a p i server 报告 pose 的状态和健康的信息,以接收这个 a p i server 发送这个更新的信息。 现在就是 api server 跟这个负载均衡器之间这个东西,就是如果 pos 当中定义了这个 service 啊, api server 会将创建创建,会创建相应的这个 service 这个对象, 并且与这个 cool cooper proxy 啊,那篇 server 跟 cool proxy 它之间进行同行,这个就会将这个流量正确的转发到 pod 所所在这个节点。 啊,那我的课件啊,我在这个博客里面也记录了,就是这个 coolboard proxy 如何来切换啊,如何来配置这个 ipos 作为它的一个 呃,真正的这个服务代理的这个这个这个组件,而是取已取代这个 ipty boss 啊,感兴趣的可以关注一下我的 book。 好,这是这节内容。

cubernets 创建一个 pod 的主要流程如下,一、用户创建一个 pod 清单文件, 包括 pod 的描述信息、容器镜像、资源需求等。二、用户将 pod 清单文件提交给 api server 进行验证和存储, api server 将检查 pod 的规范性,并将其存储在 it said 中。 三、 cubernet 调度器根据 pad 的资源需求和 note 节点的可用性等因素,选择合适的 note 节点来运行。 part, 如果没有可用的 note 节点,则 pad 将一直处于喷定状态。 四、调度器向选定的 note 节点发送调度请求,并将 pod 的清单文件传输到 note 节点上。五、 note 节点上的 cubelit 进 程接收到调度请求,并开始准备炮的的运行环境,这包括拉取容器镜像、配置网络和存储等。六、 oblix 进程通过容器运行时,例如 doctor 或 container 在 note 节点上启动 pod 中定义的各个容器。七、当所有容器都已经成功启动并运行时, pod 状态将被更新为 running 状态。 此时用户可以使用 q back 命令或 a t a 接口查询和管理 pod 的状态信息。

刚才我们给大家讲了亚没有语言的一个书写的格式,那下面呢我们就使用亚没有语言来完成我们对 k 八子集群当中的资源对象的一个描述方法的介绍。 在 k 八字集群当中,我们一般话使用雅妙语言的格式的文件来创建符合我们预期期望的 pod, 比如说 pold 的标签, pold 里边包含的容器的名称,容器的镜像,容器所打开的端口,容器所使用的存储券等等, 那么这些呢都要写到也没有格式的文件当中,我们把这种格式的文件呢就叫做资源清单文件。那么我们如何来描述一个 pold? 我们会有一些常用的一些字段,那么在这里呢,我们给大家介绍一些常用的字段,由于常用字段比较多,所以呢我们从中间抽几个给大家来讲解,那么 呃表格当中所表现的常用字段呢?大家有空的话可以去全部去了解,并且呢后期我们要经过啊大量的案例来让大家进一步的去熟悉这些常用字段,以便于大家在没有表格的情况下,也能够顺利的写出我们的资源的一个描述。那么下面呢我们看一些这个 呃参数。那首先呢第一个常用的字胆呢,就是一般话表示的是涡神,涡圣表什么意思呢?表示版本, 那么他所对应的字段类型呢是一个什么?是一个字符类型的,那在这里一般话指的是什么呢?这里边我们使用莴笋来指明 我们资源在 k 八 s 集群当中所使用的 api 的版本,那基本上呢都是唯一的,我们可以通过扣波、 ctr a p 卧室的命令来进行查询,也就什么意思呢?我们在 k 八 s 集群当中要来创建某一个资源,那我们要去请求 k 八 s 集群 当中的某一种类型资源的这个版本,还有呢就是包括他的类型,那么类型在哪呢?在下一个参数当中,我们看一下这个看字, 真的呢,就是啊,他的一个资源啊类型了,那他也是一个自负串类型的,那么在这里面呢,主要定义我们的资源类型,比如说他是一个 pode 呀,他还是一个控制器,或者他是一个啊服务叫做斯维斯,那这个是 ctrl, 那么如果我们要想描述一个这个资源对象,我们还应该给这个资源对象怎么样啊?比如说给他起个名字呀, 包括给他加上标签呀,那么这个时候呢,我们就要使用 mattet, 那么这个啊参数了,那么这个参数呢,就是一个啊啊不借格的对象,也就是我们讲的养没有当中的这个对象类型的,他是一个原数据的对象,固定值呢,就写上一个啊 mat 就可以了。但是呢下面啊会有,比如说啊,这个资源对象的标签呀,资源对象的名字都可以在里面去写,那比如说我们下面看到的这个内容,就是 看到这两个内容,就是大家可以看一下,那么这两个内容呢,一个是 mattet 点内蒙,他表什么呢?哎,他表示我们这个资源对象的啊与 他的名称啊,比如说我们给这个 pold 命名啊,这是可以的。那么还有呢就是 matet, nims 被子,那这个表什么呢?哎,这个表示我们这个资源对象所处的命名空间,也就是他处的 max 是什么,这个都是由我们自身来定义的。 好,那么这三个啊是非常重要的哈,一个是莴笋,一个是看的,一个是麦特,对的,都有相当重要的,当然第四个也是非常重要的,这个呢是,呃, spa 干嘛呢?他是用来定义我们资源对象的一些详细的一些词的啊,那么我们对于这 资源对象的相关的,嗯,那期望啊,相关的这个描述啊,我们都应该把它写到 spice 的里面去,比如说啊, style 里面有什么呢?啊?有 这个 ctrl 四,那就是我们讲的容器了,对吧?那如果写 spa 点 ctrl 四的话,那么在这里呢,各位一定要注意他的对象类型的是一个啊,类似的列表,也就是说你可以在这个呃列表里面呢定以 n 多个容器啊, 那么电影容器的哪些内容呢?电影容器的内容包括这么多哈。呃,比如说像我们下面给大家举的三个例子,第一个例子呢就是我们的什么呢啊, 我们的容器名称啊,容器名称,第二个例子呢就是我们容器做出的镜像,第三个呢就是我们容器的镜像的下载策略,那么在这里呢啊,由于我们经常的去使用容器啊,所以呢我们这个容器的镜像的拉取策略的话,那么大家要去注意这个事情啊,比如说啊,奥维,那 这个二维子就是一直下载哈,还有呢,来玩就是从来不下载,我们只使用本地的啊,还有呢衣服 note 的,那么衣服呢 poss 呢?在这个位置表示呢?表示就是啊,我这个本地如果有这个镜像的话,那我就用,如果没有的话我就怎么样,我就去下载,是这个意思, 下面还有很多哈,你包括在容器当中如何运行命令啊,然后包括在容器当中运行命令所对应的参数啊,还有容器的工作目录,还有我们的这个券的挂载啊,以及我们挂载券的时候他的一个名称啊, 呃,等等等等。这些内容呢,我们都是可以通过 spa 给的,然后 ctrl 来定义的,当然我们可以定义还可以定义什么呢? 比如说像我们的容器所对应的端口啊,然后还有我们可以给容器端口起个名字,一边用,我们后续可以啊,直接去使用它,甚至于我们可以指定我们容器所对应的这个端口啊,都是可以的啊,如果你使用的是,呃我们那个主机的这个 什么呢啊?用主机来监听我们这端口的话,我们也可以去定义我们的这个主机的这个 nodod 泡的这种端口也是可以的,甚至于我们可以定义端口的什么呢?端口的黄金变量,那么这些呢,大家会发现都是在 spa 的当中 去定义的,对吧?由此可见呢,我们实拍当中啊,可以定义很多的资源,很多的资源,那么这些呢,就是我们简单的给大家去怎么样啊?去讲到了几个常用的一些字段的参数,那么下面呢,我们举个例子来给大家说明一下我们这个 呃雅妙文件啊,他的一个书写的方式,比如说我们现在给大家看到的,如果我在 k 八四集群当中要来创建一个 maceboys 的话, 那我应该如何来写呢?我们在这里可以这么来写,那首先第一个呢,就是我们在这里有一个叫 a p 二莴笋,就是刚才给大家介绍的那个莴笋,主要指名的是我们这个资源对象,在我们的 k 八四集群当中,他如果去啊请求 k 八四这个 来 kps 集群来创建的话,那么他的这个 ap 的版本应该是哪个版本?这个呢都是官方定义好的,当然我们也可以啊考虑做定义, 还有呢就是坑的了,坑的这个位置呢,就是我们讲的类型种类,他是哪一个类型呢?我们刚才说了要创建一个 mcbas, 他就是 nimsbass 类型,然后呢在这里有个 matdat, 就是我们讲的原数据,那么这个 mcbass 他应该叫什么呢?哎,在这个地方呢,我们 注意空格啊,一定要注意这个地方是两个空格,空格以后呢写上他的 king, 然后再加上他的一个值啊,这样的话 我们就可以把它定下来了,这是关于一个 maims 的一个压没有文件的一个书写格式。那么后续呢,我们会通过创建 max 的方式,让大家进一步的来来熟悉他啊,熟练去掌握他。好,这是第一个例子。第二个例子呢就是我们创建一个 pose, 创建 pose 的话,我们就比刚才创建 mamexs 呢要多很多的内容,那 这我们一个一个给大家讲解,比如说我们在这里看到了这个 api 莴笋啊,冒号空格卫衣,那么这个呢,就是我们讲的这个莴笋字段啊, 看点啊,是什么类型的啊?是我们的 pod 类型的,就是我们资源对象的类型叫 pod 啊,麦德,对的,指的是我们这个 pose 叫什么呢?哎,麦德,对的,我们这里有个内幕,大家冒号 pod 一,指的是我们资源对象哎,他的名字叫 pod 一,那么接下来呢,就是我们对这个 pod 的一个期望啊,我们希望这个 pod 当中都包含什么呢?我们用 spa 来 把它呃标记下来就可以了,那么在这里呢,我们呃 spak 的冒号后面加上呢?旁听的是哎,这个就是我们刚才给大家举例子重点说明的这个内容。 那么看天乐寺呢,他下面的直呢是一个列表的形式,那么列表的话在这里边哎,我们可以用数组的方式来给他变音出来,对吧?那在这个位置呢,我们用一个这个连词符啊,用个连词符 尔联斯服呢,可以和 ctrl 这个位置对齐,然后呢空格以后呢,后面加一个内蒙,那么这个内蒙指的是呢?指的就是我在这个 pold 当中所运行的容器的名字,那么容器的名字 ngx 将 ctrl 四就可以了。 那么这个容器启动的时候用到什么镜像呢?我们同样也可以在数组当中进行定义,那么这个位置呢,加了一个一妹姐冒号空格以后呢,加上了一个 ngx 的啊,这个镜像的名字加上我们的,哎,这个镜像的一个版本就勒他一次就可以了。 那这就是我们的一个用养脉文件来描述创建一个 pos 资源清单,那么这个资源清单呢,我们后续会通过大量的案例来给大家去演示,那么大家要逐渐的去掌握它,好,这就是关于资源清单的一个介绍。

一份标准的带交付的 pod 文件,需要包含收发货公司个人的名称、地址、联系方式、发货时间、订单号、货物的明细、每个物料对应的包装件数、货物总数、重量及体积,另蓄于文件底部留白。 签收公司个人、签收时间、签收人身份信息及对应的货物交接状态的描述。一份标准的已交付的 pro 的文件,则需要 将标准炮的文件中留白部分以文字或是盖章的形式由收货公司个人补齐对应的信息。关注我,带您了解更多物流小知识!