Kubernetes kubectl中的生成器是什么?

12

当我想通过运行kubectl生成yaml时,它表示我应该在命令中加入--generator=something标志。

例如,要通过kubectl获取部署模板,我应该运行以下命令:

kubectl run --generator=deployment/v1beta1 nginx --image=nginx --dry-run -o yaml

在不提及--generator标志的情况下,CLI以某种方式表明我应该使用适当的值(例如run-pod/v1)提到生成器标志。

我的问题是,生成器本质上是什么?它的作用是什么?它们是一些对象创建模板还是其他东西?

1个回答

14

这是在提交 426ef93中引入的,于2016年1月为Kubernetes v1.2.0-alpha.8版本。

生成器被描述为:

生成器是基于一组输入(其他资源、标志或两者的组合)生成资源的kubectl命令。

生成器的目的是:

  • 允许用户以脚本方式使用kubectl来固定特定的行为,这可能在将来发生变化。
    明确使用生成器将始终保证期望的行为保持不变。
  • 为除了创建之外的其他场景扩展生成的资源的可能性,类似于大多数通用命令支持的-f

并且:

生成器命令应遵循以下约定: - 应定义一个`--generator`标志。用户可以在命令支持的情况下选择不同的生成器(例如,`kubectl run`目前支持用于Pod、Job、Replication Controller和Deployment的生成器),或者选择生成器的不同版本,以便依赖特定行为的用户可以固定到该版本(例如,`kubectl expose`目前支持两个不同版本的服务生成器)。 - 生成应与创建解耦。 生成器应实现`kubectl.StructuredGenerator`接口,并且不依赖于cobra或Factory。
正如Girish Sharma在[评论中]所指出,并在issue 93100中记录,这在2020年被移除了(PR 96556PR 106824)。

这个PR从kubectl create命名空间中移除了生成器的依赖。


它在2020年被移除了。 https://github.com/kubernetes/kubernetes/issues/93100 - undefined
@GirishSharma 谢谢你的反馈,说得好。我已经将你的评论包含在答案中,以增加可见度。阅读 https://github.com/kubernetes/kubernetes/pull/96556,我确实看到了那个功能去了哪里。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接