kubectl apply - 声明式配置管理工具
命令简介
kubectl apply 是 Kubernetes 命令行工具中用于声明式配置管理的核心命令。它通过比对当前集群状态与配置文件描述的目标状态,自动计算并执行必要的变更操作(创建/更新/删除)。与 kubectl create 不同,apply 采用幂等操作方式,适合持续部署和 GitOps 工作流。
语法格式
bash
kubectl apply (-f FILENAME | -k DIRECTORY) [--dry-run=server|client|none] [flags]选项
| 选项 | 描述 | 示例 |
|---|---|---|
-f filename | 指定 YAML/JSON 配置文件路径 | kubectl apply -f deployment.yaml |
-k directory | 处理 kustomization.yaml 目录 | kubectl apply -k ./overlays/prod |
--dry-run=server | 模拟执行(服务端校验) | kubectl apply -f pod.yaml --dry-run=server |
--prune | 自动清理已删除的资源 | kubectl apply -f . --prune -l app=nginx |
--overwrite | 强制覆盖现有配置 | kubectl apply -f configmap.yaml --overwrite |
--record | 在资源注解中记录命令 | kubectl apply -f service.yaml --record |
-R | 递归处理目录 | kubectl apply -f configs/ -R |
--server-side | 使用服务端应用逻辑 | kubectl apply -f daemonset.yaml --server-side |
经典案例
bash
# 部署单个资源文件
kubectl apply -f nginx-deployment.yaml
# 部署整个目录下的配置文件
kubectl apply -f k8s-resources/
# 使用 Kustomize 部署
kubectl apply -k ./base
# 试运行验证配置
kubectl apply -f statefulset.yaml --dry-run=client -o yaml
# 带标签修剪的部署(删除不再存在的资源)
kubectl apply -f . --prune -l tier=backend注意事项
- 资源标识:apply 通过
metadata.name+metadata.namespace+apiVersion+kind唯一标识资源 - 合并策略:默认使用 strategic merge patch,复杂字段可能需明确指定 merge key
- 注解变化:每次 apply 会更新
kubectl.kubernetes.io/last-applied-configuration注解 - 资源版本:冲突时需使用
kubectl apply --server-side或手动解决版本冲突 - 权限控制:建议配合 RBAC 使用,避免过度授权 apply 操作
