当我想通过运行
kubectl
生成 yaml 时,它表示我应该在命令中表示 --generator=something
标志。
例如,要通过
kubectl
获取部署模板,我应该运行以下命令:
kubectl run --generator=deployment/v1beta1 nginx --image=nginx --dry-run -o yaml
在不提及
--generator
标志的情况下,CLI 以某种形式指出我应该提及具有适当值的生成器标志(例如 run-pod/v1
)。
我的问题是,发电机本质上是什么?它有什么作用?它们是某种对象创建模板还是其他东西?
这是在 2016 年 1 月 Kubernetes v1.2.0-alpha.8 的 commit 426ef93 中引入的。
发电机被描述为:
生成器是
基于一组输入(其他资源、标志或两者的组合)生成资源的命令。kubectl
发电机的要点是:
- 使用户能够以脚本方式使用
来固定将来可能会发生变化的特定行为。kubectl
显式使用生成器将始终保证预期行为保持不变。- 除了创建之外,还可以对生成的资源进行潜在扩展,类似于大多数通用命令支持
的方式。-f
并且:
生成器命令应遵循以下约定:
应定义
标志。然后,如果命令支持,用户可以在不同的生成器之间进行选择(例如,--generator
当前支持 Pod、作业、复制控制器和部署的生成器),或者在生成器的不同版本之间进行选择,以便用户根据特定行为进行选择可以固定到该版本(例如,kubectl run
公开当前支持服务生成器的两个不同版本)。kubectl
- 世代应该与创造脱钩。
生成器应该实现接口并且不依赖于 cobra 或 Factorykubectl.StructuredGenerator
正如Girish Sharma在[评论]中所指出的,并记录在问题93100中,该内容已于2020年被删除(PR 96556和PR 106824。
此 PR 从
命名空间中删除了生成器依赖项。kubectl create