为什么 Kubernetes REST API 势在必行?

Why Kubernetes REST API is imperative?

编辑:如Jonas'响应中所述,Kubernetes REST API实际上可以被视为声明式而非命令式。

Kubernetes 以其声明式模型而闻名。 控制器正在监视 ETCD 中包含所需状态(声明性)的对象。它将它与当前状态进行比较并生成命令式命令 imperative Kubernetes API.

哪些原因导致 Kubernetes 项目不公开声明性 HTTP API?

因此让 controller/operator 进行对帐。

声明式 REST API 的示例,我发现 F5 AS3. And I guess their Kubernetes operator 构建在这个声明式 API 之上非常简单。

Kubernetes API既可以声明式使用,也可以命令式[​​=42=]使用。对于快速开发,命令式工作流可能效果更好,而对于可追溯性和生产工作负载,建议使用声明式工作流。

使用 curl 的声明性 HTTP 示例

这需要先运行 kubectl proxy

curl -X POST -H 'Content-Type: application/yaml' --data '
apiVersion: apps/v1
kind: Deployment
metadata:
  name: deployment-example
spec:
  replicas: 3
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14
        ports:
        - containerPort: 80
' http://127.0.0.1:8001/apis/apps/v1/namespaces/default/deployments

Kubernetes API 是 声明式的 在这个意义上你总是指定 what 你想要的,例如replicas: 2 而不是例如create 2 replicas 命令式 API 中就是这种情况。然后,控制器将状态“驱动”到您在协调循环中指定的“什么”。

参见:

来自你的link:

The Application Services 3 Extension uses a declarative model, meaning you send a declaration file using a single Rest API call.

Kubernetes API 使用 yaml-manifest 文件时的工作方式完全相同kubectl apply -f deployment.yaml