k8s api仅接受及响应json格式的数据,同时,为了便于使用,它也允许用户提供yaml格式的post对象,但apiserver需要事先自行将其转换为json格式后方能提交。每个资源通常仅接受并返回单一类型的数据,而一种类型可以被多个反映特定用例的资源所接受或返回。

1、资源配置清单

资源的创建要通过用户提供的资源配置清单来进行,其格式类似于kubectl get命令获取到的yaml或json形式的输出结果。不过status字段对用户来说为只读字段,它由k8s集群自动维护

对几乎所有的资源来说,apiVersion、lind、metadata字段的功能基本都是相同的,但spec则用于资源的期望状态,而资源之所以存在类型上的不同,也在一它们的嵌套属性存在显著差别,它由用户定义和维护。而status字段则用于记录活动对象的当前状态。它要与用户在spec中定义的期望状态相同或正处于转换为与其相同的过程中。

2、metadata嵌套字段

metadata用于描述对象的属性信息,其内嵌多个字段用于定义资源的元数据,这些字段可分为必要字段和可选字段。对于用户未明确定义的嵌套字段,则需要由一系列的finalizer组件自动予以填充。而用户需要对资源创建的目标资源对象进行强制校验,或者在修改时需要用到initializer组件完成。

3、sepc和status字段

spec用来描述所期望的对象应该具有的状态,而用status字段来记录对象在系统上的当前状态,因此status字段仅对活动对象才有意义,用户不能手动定义。

4、资源对象管理方式

apiserver遵循声明式编程范式而设计,侧重于构建程序逻辑而无须用户描述其实现流程,用户只需设定期望状态,系统自行确定需要执行的操作以确保达到用户期望状态。k8s的自愈、自治等功能都依赖于其声明式机制。

另一种范式称为陈述式编程,侧重于通过创建一种告诉计算机如何执行操作的算法来更改程序状态的语句来完成,它与硬件的工作方式密切相关。它直接通过命令(run、expose、delete、get等)及其选项完成对象的管理操作。

kubectl的命令由此可以分为三类:陈述式命令、陈述式对象配置和声明式对象配置。

声明式对象配置并不直接指名要进行的对象管理操作,而是提供配置清单文件给k8s系统,并委托系统跟踪活动对象的状态变动。资源对象的创建、删除及修改操作全部通过唯一的命令apply来完成,并且每次操作时,提供给命令的配置信息都将保存于对象的注解信息中,并通过对比检查活动对象的当前信息、注解中的配置信息及资源清单中的配置信息三方进行变更合并,从而实现仅修改变动字段的高级补丁机制。

陈述式对象配置相较于声明式对象配置来说,其缺点在于同一目录下的配置文件必须同时进行同一种操作,例如,要么都创建,要么都更新等。而且其他用户的更新也必须反映在配置文件中,不然其更新在下一次的更新中将会被覆盖。因此,声明式对象配置是优先推荐使用的管理机制。

k8s对象类资源格式的更多相关文章

  1. k8s管理pod资源对象(上)

    一.容器于pod资源对象 现代的容器技术被设计用来运行单个进程时,该进程在容器中pid名称空间中的进程号为1,可直接接收并处理信号,于是,在此进程终止时,容器即终止退出.若要在一个容器中运行多个进程, ...

  2. k8s管理pod资源对象(下)

    一.标签与标签选择器 1.标签是k8s极具特色的功能之一,它能够附加于k8s的任何资源对象之上.简单来说,标签就是键值类型的数据,它们可于资源创建时直接指定,也可随时按需添加于活动对象中,而后即可由标 ...

  3. Effective C++ 条款13/14 以对象管理资源 || 在资源管理类中小心拷贝行为

    三.资源管理       资源就是一旦你使用了它,将来不用的时候必须归还系统.C++中最常用的资源就是动态内存分配.其实,资源还有 文件描述符.互斥器.图形界面中的字形.画刷.数据库连接.socket ...

  4. SpringBoot实体类对象和json格式的转化

    1.引入maven依赖 <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson ...

  5. 使用C#中JavaScriptSerializer类将对象转换为Json格式数据

    将对象转换为json格式字符串: private JavaScriptSerializer serializer = new JavaScriptSerializer(); protected voi ...

  6. k8s名称空间资源

    namespace是k8s集群级别的资源,用于将集群分隔为多个隔离的逻辑分区以配置给不同的用户.租户.环境或项目使用,例如,可以为development.qa.和production应用环境分别创建各 ...

  7. 四,k8s集群资源清单定义入门

    目录 资源对象 创建资源的方法 清单帮助命令 创建测试清单 资源的三种创建方式 资源对象 workload:Pod, ReplicaSet, Deployment, StatefulSet, Daem ...

  8. 容器编排系统K8s之crd资源

    前文我们了解了k8s节点污点和pod的对节点污点容忍度相关话题,回顾请参考:https://www.cnblogs.com/qiuhom-1874/p/14255486.html:今天我们来聊一下扩展 ...

  9. JSon_零基础_005_将po(bean)对象转换为JSon格式的对象字符串,返回给界面

    将po(bean)对象转换为JSon格式的对象字符串,返回给界面 导入jar包: 编写po(bean)类: package com.west.webcourse.po; /** * 第01步:编写be ...

随机推荐

  1. 从 RNN 到 LSTM (Short-Term Memory)

    理论上循环神经网络可以支持任意长度的序列,然而在实际中,如果序列过长会导致优化时出现梯度消散(the vanishing gradient problem)的问题,在实际中一把会规定一个最大长度,当序 ...

  2. C/S和B/S两种架构区别与优缺点分析

    C/S和B/S,是再普通不过的两种软件架构方式,都可以进行同样的业务处理,甚至也可以用相同的方式实现共同的逻辑.既然如此,为何还要区分彼此呢?那我们就来看看二者的区别和联系. 一.C/S 架构 1. ...

  3. Cocostudio学习笔记(3) ImageView + Slider

    此记录使用两个控制流:ImageView 和 Slide. ---------------------------------------------------------------------- ...

  4. TypeScript Array Remove

    定义一个数组 tags:any[]; 方法1:filter 删除并不留空位 this.tags = this.tags.filter(tag => tag !== removedTag); 方法 ...

  5. dumpbin判断windows程序是32还是64位(包括DLL)

    http://blog.csdn.net/csfreebird/article/details/10105681 dumpbin /HEADERS gdal18.dll(or xxx.exe) 如果安 ...

  6. EntityFrameworkCore 一对一 && 一对多 && 多对多配置

    基本数据结构 表设计如下: 入学记录 public class AdmissionRecord { [Key] public long Id { get; set; } public DateTime ...

  7. QT添加openssl的方法

    Assuming Windows you can download its installation from Win32 OpenSSL Installation Project page. You ...

  8. win32Helper

    点击别的winform窗口的按钮 #region 点击别的窗口的按钮 [DllImport("user32.dll", EntryPoint = "FindWindowA ...

  9. 自定义View实现图片热区效果

    我司主要从事工业物联网领域软件的开发,现有个需求,在外废品处理时需要对产品的不良位置进行标记,点选图片实现图片网格的着色功能. 需求是通过自定义view来实现,实现思路如下: 首先将点击的小方格对象实 ...

  10. <转>C# 动态创建DataTable

    C# 动态创建DataTable,有时候在做些测试Demo中用来模拟一些数据比较不错.记在这里避免以后重写呵呵... DataTable dt = new DataTable(); dt.Column ...