作为后端工程师,大多数负责为这种类型的“无状态应用程序”的项目,在正常工作中暴露于工作的最常用的控制器是,但仅适用于安排“无状态申请”。所有应用程序都是完全相同的,没有订单依赖彼此,并且在哪个主机上都没有关系。
但是,并非所有应用程序都是无状态的,尤其是每个实例之间主要关系的应用和数据存储应用程序。对于此类应用程序,控制器无法实现正确的调度。适用于状态申请,维护应用程序的当前状态始终等于应用程序定义的所需状态。
它也是一个可以帮助您部署和扩展的控制器。在大多数情况下,您不在乎调度方法。但是,当您需要关心部署订单,相应的持久存储或具有固定网络徽标的请求(即使重新启动或重新调整之后),则控制器将帮助您并完成调度目标。
每个创建的都有一个序列号(从0开始),固定的网络徽标。您还可以在定义中添加卷式磁盘以声明pod存储。部署时,每个人都将从数字0逐个部署到最终数字。只有在上一个部署完成并处于运行状态之后,下一个将开始部署。
它是一个基于扩展的控制器。1.9版后,添加了控制器家族。
因此,状态表的核心功能是以某种方式记录这些状态,然后在重新创建POD时为新POD恢复这些状态。
如果要维护拓扑的应用,则必须确保可以访问带有固定网络徽标的固定实例。它是为每个添加固定的网络徽标,因此我们将花费一些时间来理解。
在文章中结合文章,快速掌握Kubernetes服务
它是在逻辑抽象层上定义的组,可为它们提供统一的固定IP和访问此组访问的载荷平衡策略。
对于模式,其记录的格式是:
serviceName.namespace.svc.cluster.local,当您访问此记录时,它会分析服务的VIP地址。
对于指定clusterip =无头的无头服务,其记录格式与上述相同,但是在访问记录后,返回了POD的IP地址集合。POD还将分配相应的DNS记录。格式为:podname.servicename.namesapce.svc.cluster.local
有普通的,它实际上是一个虚拟的,它会将请求转发给代理之一。
仍然将文章结合在一起,并迅速掌握Kubernetes服务中使用的示例来分析它。
在Kubernetes中创建上述资源后,您可以输入查看服务的A记录之一
如果您希望DNS刚刚通过名称直接分析相应的IP,则不可能:
因为存在,它直接由DNS解析,我们如何通过分析它的IP制作DNS?
创建和创建之间的唯一区别是在定义中指定,也就不需要。
下面我在上面的示例中创建两个应用程序。定义如下
创建服务命令
t kubectl apply -f无head-service.yaml服务/app-headless-svc创建
创建后,让我们看一下与DNS相对应的记录
仍在我刚输入的吊舱中,请记住,服务DNS记录的格式是service.namespace.svc.cluster.local
DNS查询将返回代理的两个相应的IP,以便客户端可以通过获取每个IP来获取每个IP。如有必要,您可以在客户端上执行一些负载平衡策略。还有一个重要的目的(也是使用的真正原因),该目的将为每个代理创建DNS域名分析,可以彼此之间访问。
重点:
让我们修改上面的示例,并添加一个新对象以创建它以验证。
这个文件,我们之前使用的唯一区别是还有一个字段。
由其管理的所有名称都是编号,数字规则为:statusfulset name-serial number。这些数字是从0累积的,对应于一个逐个状态的每个pod实例,并且永远不会重复。
我们可以输入此内容以检查这两个DNS记录
提示:无头服务添加到POD的DNS的格式是podname.serviceName.namesapce.svc.cluster.local
因此,这确保了它可以相互交流。如果要使用具有主奴隶关系的应用程序,则可以通过DNS域名访问确保彼此之间的通信。不会更改。
创建由上面名称创建的控制器的过程可以发现它管理的所有名称均为:statefulset名称 - 串行号码。序列号累积了0,该编号从0累积,该序列号与状态填充的每个POD实例一一相对应,从不重复重复它。
因此,在上面,我们看到了通过命令命名和和谐的两个POD实例。
更重要的是,它们的创建也严格基于名称的顺序。例如,在输入运行状态和细分(条件)之前,它将始终处于悬而未决的等待状态。
这种拓扑状态将始终记录下来。即使进行调整,重新安排也严格遵守该命令。在完成数字并输入就绪操作状态后,下一个数字将开始创建。
了解真实用途后,如何在内部内部进行独特的网络标识的答案是:将DNS域名分析添加到每个代理中。,podname.servicename.namesapce.svc.cluster.local可以在彼此之间的部分关系与其他节点上的IP变化之间进行传达。
当上一篇文章Kubernetes Pod介绍指南引入了引言使用的数据量时,我提到有必要在一个语句中声明,只需在定义中添加一个字段,然后您可以在此字段中定义特定类型,例如: 类型。
但是,使用数据卷的方法不适用于每个绑定数据存储数据存储数据的实例。由于卷的类型基于主机目录,如果您重新划分和其他节点,则无法还原新节点上的存储数据。
由于主机上的数据量不适用,因此只能用于存储群集以存储资源。群集耐用数据卷资源的配置和使用已传递和完成。让我们首先了解这两个概念。
PersistEntVolume(PV)是集群中的一块存储空间,可以预先由管理员或使用存储类动态提供。长期的卷卷是一个集群资源,就像节点和群集资源一样。他们的生命周期与任何用途无关。
作为应用程序开发人员,我可能知道分布式存储项目(例如CEPH,GFS,HDFS等)。自然,他们不会编写其相应的卷定义文件,不仅超过了开发人员的知识储备,而且还揭示了基础架构敏感信息的风险(秘密,管理员密码和其他信息)。。
表达对存储的请求。类似于概念。它消耗了节点资源,并且该应用程序将消耗资源。拥有后,您只需要在长期卷的卷的定义中声明这一点。这是有关用户存储的很多信息。例如,我根本不知道远程存储。空间名称,服务器地址,AccessKey和其他将远程存储存储在容器中的信息。例如,如下:
可以看出,在此定义中,我们只需要声明其类型,然后指定的名称不需要关心持久卷本身的定义。
它需要在创建后完成并完成,但是对于用户,我们首先不关心此细节。
您可以理解并实现编程和实施界面之间的关系。
关于状态填充,POD,PVC和PV之间的关系,可以用以下图片表示
我们可以在定义中添加一个其他字段。它类似于模板(字段)的作用。
注意:状态满集和部署都有POD模板。他是控制器创建POD实例的基础。对于知识的这一部分,您可以查看上一篇有关部署的文章。
换句话说,所有受管理的人都会声明一个相应的人。更重要的是,此模板字段的定义来自此模板字段,此名称将被分配为一个完全一致的数字。
全部由“ PVC名称-StateFulset Name -serial Number”创建。
对于以上,其创建的名称如下:
如果重新安排此功能,则将重新创建并计划在其他节点上。在此新对象的定义中,由于存在,它使用的名称称为:www-web-0。因此,在创建了这个新的名称之后,它将找到其绑定的名称。因为生命周期独立于它将接管旧旧的数据。
这就像一个特殊的。它在其中使用了两个标准功能:和谐以实现主要拓扑和存储状态。
通过,为其每个由其控制的固定DNS域名创建了一个群集中的网络徽标。与数字顺序相关的调度次数,这些机制可确保支持维护应用程序拓扑状态。
通过定义文档中的语句,它创建了由名称编号创建的名称的绑定。应用程序存储状态的维护。
今天的文章在这里。后来,我们将继续分享有关Kuberntes的文章,并努力创建适合工程师的Kubernetes学习教程。如果您喜欢,可以在微信上关注“ Internet Management BI”。
作者:Kevinyan的版权属于作者。
