k8s的声明式api到底是什么

840 阅读1分钟

声明式与命令式

命令式是一步一步的告诉其要怎么做,而声明式是告诉其结果,就像坐出租车去某个地方一样,命令式是要告诉司机每个路段怎么走,而声明式就是直接告诉目的地就可以了。

YAML文件

YAML 语言创建于 2001 年,比 XML 晚了三年。XML 你应该知道吧,它是一种类似 HTML 的标签式语言,有很多繁文缛节。而 YAML 虽然在名字上模仿了 XML,但实质上与 XML 完全不同,更适合人类阅读,计算机解析起来也很容易。YAML 的官网(yaml.org/)有对语言规范的完整介… Kubernetes 相关的要点,帮助你快速掌握。

什么是声明式API

即kubectl apply 命令

因为 apiserver 是 Kubernetes 系统的唯一入口,外部用户和内部组件都必须和它通信,而它采用了 HTTP 协议的 URL 资源理念,API 风格也用 RESTful 的 GET/POST/DELETE 等等,所以,这些概念很自然地就被称为是“API 对象”了

例如下面的这个Nginx配置,Kubernetes 收到这份“声明式”的数据,再根据 HTTP 请求里的 POST/DELETE 等方法,就会自动操作这个资源对象,至于对象在哪个节点上、怎么创建、怎么删除完全不用我们操心。


apiVersion: v1
kind: Pod
metadata:
  name: ngx-pod
  labels:
    env: demo
    owner: chrono

spec:
  containers:
  - image: nginx:alpine
    name: ngx
    ports:
    - containerPort: 80

这是我在极客时间的2月第19天的学习,内容来源于 11|YAML:Kubernetes世界里的通用语 (geekbang.org)