Kubernetes 支持两种主要的配置风格:命令式和声明式。了解这两种方法的区别对于有效管理 Kubernetes 资源至关重要。


下面的示例说明了在 Kubernetes 中创建 Pod 的命令式和声明式方法。

【代码清单】

Imperative command to create a Pod
kubectl run example-pod --image=nginx:latest --restart=Never
Declarative configuration using a YAML file
apiVersion: v1
kind: Pod
metadata:
 name: example-pod
spec:
 containers:
 - name: example-container
  image: nginx:latest

[执行结果]

必须执行: 运行命令 `kubectl run example-pod --image=nginx:latest --restart=Never` 将立即创建名为 example-pod 的 Pod。
声明式: 使用 `kubectl apply -f pod.yaml` 应用 YAML 文件也将创建相同的 Pod。

在命令式方法中,直接执行命令来创建或修改资源。这种方法简单明了,适用于快速任务或一次性操作。不过,对于管理复杂的应用程序或多个资源来说,这种方法可能会变得繁琐。

另一方面,声明式方法涉及在配置文件(如 YAML)中定义所需的资源状态。应用该配置时,Kubernetes 会负责创建和维护资源,使其符合指定的状态。对于大型应用来说,这种方法更易于管理,并允许进行版本控制和更轻松的协作。

在生产环境中,声明式通常是首选,因为它提供了一种清晰一致的方式来管理资源并跟踪随时间发生的变化。

【小知识】

声明式方法非常符合 GitOps 的做法,即把配置存储在 Git 资源库中,以便于回滚和审计。

虽然命令式方法可以更快地完成简单任务,但它缺乏声明式方法的可重复性和可扩展性优势。

Kubernetes 的 kubectl 命令行工具支持这两种方法,用户可以根据自己的需求和工作流程灵活使用。