kubectl apply
通过声明式配置文件创建或更新资源
语法
kubectl apply -f <filename|url|directory> [flags]
参数
| 参数 | 说明 | 示例 | 级别 |
|---|---|---|---|
-f --filename |
指定配置文件或目录 | kubectl apply -f deployment.yaml |
常用 |
-k --kustomize |
应用 Kustomize 目录 | kubectl apply -k overlays/production/ |
进阶 |
--dry-run=client |
客户端模拟执行,不实际创建 | kubectl apply -f pod.yaml --dry-run=client |
常用 |
--dry-run=server |
服务端验证,不实际创建 | kubectl apply -f pod.yaml --dry-run=server |
进阶 |
-R --recursive |
递归处理目录 | kubectl apply -f configs/ -R |
常用 |
--prune |
删除配置文件中不存在的资源 | kubectl apply -f dir/ --prune -l app=web |
危险 |
示例
应用单个文件
kubectl apply -f deployment.yaml
创建或更新 Deployment
应用整个目录
kubectl apply -f ./k8s/
目录下所有 YAML 文件都会被应用
从 URL 应用
kubectl apply -f https://raw.githubusercontent.com/org/repo/main/deploy.yaml
直接从远程仓库应用配置
模拟执行检查
kubectl apply -f deployment.yaml --dry-run=server -o yaml
验证配置是否正确,不实际创建
常见错误
error validating data
YAML 格式或字段有误,用 --dry-run=server 验证
The Job is invalid: field is immutable
某些字段创建后不可修改,需要先删除再创建
技巧
- 始终使用 apply 而非 create 来管理资源,支持声明式更新
- 用 --dry-run=server 在提交前验证配置正确性
- 配合 Git 管理 YAML 文件实现 GitOps 工作流