Kubernetes API 是声明式的,这意味着您可以定义资源的理想状态,而 Kubernetes 则负责维护该状态。


当您在 Kubernetes 中创建或修改资源时,您并不能直接控制系统的每一步操作。相反,你只需声明你想要什么,Kubernetes 就会确保当前状态与你想要的状态相匹配。

[代码清单]

# Define a Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
 name: nginx-deployment
spec:
 replicas: 3
 selector:
  matchLabels:
   app: nginx
 template:
  metadata:
   labels:
​    app: nginx
  spec:
   containers:
   \- name: nginx
​    image: nginx:1.14.2
​    ports:
​    \- containerPort: 80

[执行结果]

deployment.apps/nginx-deployment created

在声明式模型中,你可以使用 YAML 或 JSON 文件描述系统所需的状态。例如,定义 “部署”(Deployment)时,你可以指定一个 Pod 应该有多少个副本在运行。Kubernetes 会持续监控集群,并调整资源以匹配所声明的状态。如果 Pod 出现故障或节点无法访问,Kubernetes 会自动创建新的 Pod,以保持所需的副本数量。它还简化了复杂系统的管理,让用户专注于 “做什么 ”而不是 “怎么做”。Kubernetes 的控制器负责处理 “如何”,确保系统的实际状态与预期状态保持一致。

[小知识]

与声明式方法相反的是命令式方法,其中每个操作都必须明确定义。Kubernetes 支持这两种方法,但声明式方法因其可扩展性、可维护性和处理复杂场景的能力而更受青睐。