美文网首页kubernetes
【k8s】为什么说空调是“声明式”的?

【k8s】为什么说空调是“声明式”的?

作者: Bogon | 来源:发表于2022-10-21 07:26 被阅读0次

两个思考题:

1.你是如何理解“命令式”和“声明式”的?为什么说空调是“声明式”的?

2.使用 --v=9 参数,试着解释一下 YAML 是如何被 kubectl 转换成 HTTP 请求的

image.png
  1. 因为空调的使用是我们设置温度,然后空调尽量去达成设置的温度,即我们设置的是我们想要达成的效果,而不像电视遥控器,每次操作都发送一个指令。
    声明式还有一个特点是容易 patch,拿空调举例,当前气温 30 度,我们先设置了 24 度,然后升高到 26 度,空调并不会先降低到 24 度,再升高到 26 度,而是将两次传递的意图 patch,直接降低到 26 度,k8s 也是如此。

  2. yaml 转换 json 的过程基本上字段一一对应,除了最后会把当前的 json 再序列化为字符串,存储到 "kubectl.kubernetes.io/last-applied-configuration" 这个 annotations 中。

  1. 你是如何理解“命令式”和“声明式”的?为什么说空调是“声明式”的?
    从kubernetes相关知识点中学习并理解到的“声明式”一个最直白的地方是新增与修改两个命令式操作写成apply,如果创建对象不存在则创建、对象已存在就比较spec进行相应变更,当然k8s的修改实际上是先delete再create。至于kubectl create、kubectl edit、kubectl delete等都是"命令式"操作,告诉k8s应该怎么做。
    空调是“声明式”的原因是我不知道当前温度是多少,只需要我知道应该开成多少度即可,即我们在操作遥控器之前就知道我们要将空调调成多少度,这是预期值。

  2. 使用 --v=9 参数,试着解释一下 YAML 是如何被 kubectl 转换成 HTTP 请求的。
    虽然yaml格式是json的超集,但在k8s中的yaml文件最终都是被转换为json格式字符串放在request body中提交到apiserver的,从kubectl -v=9对各种操作的调试中可以看到。
    除此之外,还发现一些有规律的地方,如下:
    可见简单对象(如pod, configmap, secret, serviceaccount等)调用的接口形式如 /api/<apiVersion>/namespaces/<namespace>/<kinds>[/<name>],其中对象类型为复数形式即kubectl api-resources中的name字段,修改、删除与查询具体对象时在URL中有/<name>部分,其它如创建、查询所有就没有。
    对于复合对象(简单对象的包装对象,如replicaset, deployment, statefulset, cronjob等)的URL不同的是以/apis开头,说明是属于复合型的接口(组合服务)。

YAML被转换成两部分,一部份是apiversion、 metedata、kind作为header,剩余的转换为body。

curl -v -X  GET   'https://192.168.49.2:8443/openapi/v2?timeout=32s' \
  -H "Accept: application/com.github.proto-openapi.spec.v2@v1.0+protobuf" \
  -H "User-Agent: kubectl/v1.23.3 (linux/amd64) kubernetes/816c97a" 

相关文章

  • 【k8s】为什么说空调是“声明式”的?

    两个思考题: 1.你是如何理解“命令式”和“声明式”的?为什么说空调是“声明式”的? 2.使用 --v=9 参数,...

  • 编程范式:命令式编程(Imperative)、声明式编程(Dec

    最近接触到了K8S的架构,其中有一点很重要的是整体架构采用的是声明式编程,主要的编程范式有三种:命令式编程,声明式...

  • k8s informers 开发

    为什么需要informer 关于K8S的设计理念,耳熟能详的概念有很多,比如 声明式API 最终一致性 水平触发 ...

  • 4:k8s基础概念

    一、k8s对象k8s对象:是一种持久化的,用于表示集群状态的实体。1,对象的定义本身是声明式的,它定义了对象被k8...

  • 声明式 UI

    Flutter 采用了声明式 UI 布局方式。 为什么是声明式 UI 从 Win32 到 Web 再到 Andro...

  • Flutter UI布局方式

    Flutter采用声明式UI布局方式 为什么是声明式UI 从win32到web再到Android和iOS的框架通常...

  • Testops之路6.Kubernetes之Pod

    先来一起回忆一下上节课内容,k8s的几个组成部分: 研发采用声明式定义自己的应用: 应用运行在k8s集群上的全景图...

  • k8s资源管理概念

    Kubernetes 资源管理k8s的设计理念—API设计原则• 所有API应该是声明式的。• API对象是彼此互...

  • k8s简介以及使用kubeadm本地搭建k8s集群

    k8s是什么 Kubernetes 是一个可移植的,可扩展的开源平台,用于管理容器化的工作负载和服务,方便了声明式...

  • 管理K8S核心资源

    管理K8S核心资源的三种基本方法: 陈述式管理方法–主要依赖命令行CLI工具进行管理 声明式管理方法–主要依赖统一...

网友评论

    本文标题:【k8s】为什么说空调是“声明式”的?

    本文链接:https://www.haomeiwen.com/subject/adqiartx.html