应用编排和管理
Kubernetes的资源对象主要包括了Spec和Status两个部分,其中Spec部分用来描述期望的状态,而Status部分用来描述观测到的状态,这些都属于Kubernetes的资源对象的部分,而Kubernetes还包含了一个Metadata部分,也就是元数据部分。元数据主要包括了用来识别资源的标签Labels,用来描述资源的注解和资源之间的相互关系。
其中Label是一个最重要的元数据,它代表的内容是资源标签,资源标签是一个具有标识性的KEY:VALYE键值对。这个标签的主要作用是筛选资源和组合资源,这样用户可以根据Label查询相关的资源内容。
其次就是Kubernetes的服务选择Selector,这也可以被称为标签选择器,这是Kubernetes的核心的分组机制,通过label selector客户端/用户能够识别一组有共同特性或者属性的资源对象,其中包括基于值相等的查询条件和基于子集相等的查询条件。
Selector的作用:
1.kube-controller进程通过资源对象RC上定义的Label Selector来筛选要监控的Pod副本的数量,从而实现Pod副本的数量始终符合预期设定的全自动控制流程
2.kupe-proxy进程通过Service的Label Selector来选择对应的Pod,自动建立器每个Service到对应Pod的请求转发路由表,从而实现Service的智能负载均衡机制
3.通过对某些Node定义特定的Label,并且在Pod定义文件中使用NodeSelector这种标签调度策略,Kube-scheduler进程可以实现Pod定向调度的特性
另外一种重要的元数据是:annotations。一般是系统或者工具用来存储资源的非标示性信息,可以用来扩展资源的 spec/status 的描述
控制循环模式
控制循环模式是控制型模型的核心,在控制循环中包括了控制器,被控制的系统,以及能够观测系统的传感器这三个逻辑组件。
这些组件都是逻辑上的,外部系统可以通过修改spec来控制资源,控制器会比较资源的spec和status,从而判断两个资源的区别,也就是diff,diff会决定最终对系统进行什么样的控制操作,控制操作将会产生全新的输出,传感器将会将当前应用的状态向上层转发,最终系统的各个组件都是独立运行的,系统将会最终趋向于稳定的状态。
声明式API
而声明式API是指通过设置目标等方式向目标系统设置要求,让目标系统以自治的方式达成目标,最终实现系统的任务,而我们的Kubernetes就是采用的声明式API实现调用。
命令式API
命令式API是指我们需要向系统发出明确的指令,告诉吸引同要做什么,从而实现我们要完成的任务的具体细节。