命令式创建是什么
命令式创建用命令行参数直接生成资源,不需要先写清单。它的语义是「只创建」:对象已存在就直接报错,不会去比对或更新。它最大的实用价值不是在生产里建对象,而是配合演练模式快速生成清单草稿,再由人工补齐生产字段后纳入版本管理。
和声明式提交的差别
声明式提交可重复执行,同一次提交跑多少遍结果一致;命令式创建是「一次性的动作」,重复执行就会失败并打断流程。因此它适合一次性操作与临时构造,凡是要进流水线、要反复执行的对象,都应该改用清单加声明式提交的方式。
基本信息
| 适用环境 | 任何 Kubernetes 发行版 |
|---|---|
| 语义 | 只创建,对象已存在时报错 |
| 常见子命令 | 命名空间、配置对象、密钥对象、工作负载、服务账户等 |
| 演练模式 | 客户端演练不连集群,可直接导出 YAML 作为草稿 |
| 与声明式的关系 | 生成草稿后交给声明式提交维护 |
| 注意事项 | 生成的清单缺少生产必需字段,需要人工补齐 |
典型使用场景
- 生成清单草稿:演练模式导出 YAML 后修改成正式模板
- 快速建命名空间:新环境初始化时创建隔离边界
- 临时配置对象:验证阶段快速构造一组配置
- 生成密钥对象:从文件或字面量快速创建凭据对象
- 工作负载起步:先创建最小负载,再逐步补全字段
- 脚本初始化:在环境准备脚本里创建尚未存在的对象
常用示例
常用示例
kubectl create namespace staging # 建命名空间
kubectl create configmap app-config --from-literal=LOG_LEVEL=info # 建配置对象
kubectl create secret generic db-pass --from-literal=password=<占位> # 建凭据对象
kubectl create deployment web --image=registry.example.com/web:1.26.0 --replicas=3 # 建工作负载
kubectl create deployment web --image=registry.example.com/web:1.26.0 --dry-run=client -o yaml > web.yaml # 导出草稿两种方式对比
| 方式 | 可重复执行 | 适用场景 |
|---|---|---|
| 命令式创建 | 否,已存在即失败 | 一次性操作与临时构造 |
| 声明式提交 | 是,结果一致 | 常规发布与流水线 |
| 演练模式导出 | 不连集群,仅生成文本 | 生成清单草稿 |
| 资源编辑 | 否,交互式修改 | 临时验证单个字段 |
客户端演练模式不会连接集群,因此不会校验名称冲突与字段合法性,导出的草稿必须再提交校验。
命令行里直接写的口令会留在命令历史与进程列表里,创建凭据时优先从文件或标准输入读取。