哪个找房网站好,基于django的电子商务网站设计,南昌关键词优化软件,东莞网站建设-搜盟网文章目录 1、什么是kubernetes对象2、如何描述kubernetes对象3、服务器端字段验证 1、什么是kubernetes对象
在k8s系统中#xff0c;kubernetes 对象是持久化的实体#xff0c;kubernetes使用这些实体去表示 整个集群的状态,具体而言#xff0c;他们描述了以下信息#xf… 文章目录 1、什么是kubernetes对象2、如何描述kubernetes对象3、服务器端字段验证 1、什么是kubernetes对象
在k8s系统中kubernetes 对象是持久化的实体kubernetes使用这些实体去表示 整个集群的状态,具体而言他们描述了以下信息
哪些容器化应用正在运行运行在哪个节点上可以被应用使用的资源关于应用运行时行为的策略如重启策略、升级策略、容错策略等
kubernetes对象是一种 意向表达 一旦创建该对象kubernetes系统将不断工作以确保该对象存在。
通过创建对象本质上是在告诉k8s系统我们想要的集群工作负载状态看起来应该是什么样子这就是k8s集群所谓的期望状态Desired State
操作k8s对象无论是创建、修改还是删除都需要使用 kubernetes API。比如在使用kubectl命令行CLI接口时CLI会调用必要的kubernetes API也可以在程序中使用客户端库来直接调用kubernetes API 对象规约Spec与状态Status 几乎每个k8s对象都包含两个嵌套的对象字段对象规约 和 对象状态他们负责管理对象的配置。
对于具有Spec的对象必须在创建对象时设置其内容描述你希望对象所具有的特征即 期望状态Desired State
Status描述了对象的当前状态Current State他是由k8s系统和组件设置并更新的。在任何时刻k8s控制平面都一直在积极地管理着对象的实际状态以使之达成期望状态。
例如Kubernetes 中的 Deployment 对象能够表示运行在集群中的应用。 当创建 Deployment 时你可能会设置 Deployment 的 spec指定该应用要有 3 个副本运行。 Kubernetes 系统读取 Deployment 的 spec 并启动我们所期望的应用的 3 个实例 —— 更新状态以与规约相匹配。 如果这些实例中有的失败了一种状态变更Kubernetes 系统会通过执行修正操作来响应 spec 和 status 间的不一致 —— 意味着它会启动一个新的实例来替换
2、如何描述kubernetes对象
创建k8s对象时必须提供对象的spec用来描述该对象的期望状态以及关于对象的一些基本信息。当使用kubernetes API或者经由kubectl创建对象时API请求必须在请求主体中包含JSON 格式的信息大多数情况下我们是通过 清单Manifest文件为kubectl提供这些信息。按照惯例清单是yaml格式的当然也可以使用JSON格式。
像kubectl这样的工具在通过HTTP进行API请求的时候会将清单中的信息转换为JSON 或者其他受支持的 序列化格式
这里有一个清单示例文件展示了 kubernetes Deployment的必须字段
apiVersion: apps/v1
kind: Deployment
metadata:name: nginx-deployment
spec:selector:matchLabels:app: nginxreplicas: 2 # 告知 Deployment 运行 2 个与该模板匹配的 Podtemplate:metadata:labels:app: nginxspec:containers:- name: nginximage: nginx:1.14.2ports:- containerPort: 80与上面使用 清单 的方式创建 deployment一致另一种方式是使用kubectl命令行接口(CLI)的kubectl apply 命令将 .yaml文件作为参数。具体如下所示
kubectl apply -f https://k8s.io/examples/application/deployment.yaml输出类似下面这样
deployment.apps/nginx-deployment created必需字段 在想要创建的kubernetes对象所对应的清单yaml文件或JSON文件中需要配置的字段如下
apiVersion 创建该对象所使用的 kubernetes API 版本kind 想要创建的对象的类别metadata 帮助唯一标识对象的一些数据包括一个name字符串、UID和可选的namespacespec 你所期望的该对象的状态
3、服务器端字段验证
从k8s v1.25 开始API 服务器提供了服务器端字段验证可以检测对象中未被识别或重复的字段。他在服务器端提供了kubectl --validate的所有功能
kubectl工具使用--validate标志来设置字段验证级别。可以接受的值为ignore warn strict同时还接受值 true等同于strict和 false等同于ignore kubectl的默认验证设置为--validatetrue
strict 严格的字段验证。验证失败的时候会报错warn 执行字段验证但错误会以警告形式提供而不是拒绝请求ignore 不执行服务器端字段验证
当 kubectl 无法连接到支持字段验证的 API 服务器时它将回退为使用客户端验证。 Kubernetes 1.27 及更高版本始终提供字段验证较早的 Kubernetes 版本可能没有此功能