kubernetes kubectl 中的生成器是什么?

问题描述 投票:0回答:1

当我想通过运行

kubectl
生成 yaml 时,它表示我应该在命令中表示
--generator=something
标志。

例如,要通过

kubectl
获取部署模板,我应该运行以下命令:

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

在不提及

--generator
标志的情况下,CLI 以某种形式指出我应该提及具有适当值的生成器标志(例如
run-pod/v1
)。

我的问题是,发电机本质上是什么?它有什么作用?它们是某种对象创建模板还是其他东西?

kubernetes kubectl
1个回答
14
投票

这是在 2016 年 1 月 Kubernetes v1.2.0-alpha.8 的 commit 426ef93 中引入的。

发电机被描述为:

生成器是

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

发电机的要点是:

  • 使用户能够以脚本方式使用
    kubectl
    来固定将来可能会发生变化的特定行为。
    显式使用生成器将始终保证预期行为保持不变。
  • 除了创建之外,还可以对生成的资源进行潜在扩展,类似于大多数通用命令支持
    -f
    的方式。

并且:

生成器命令应遵循以下约定:

    应定义
  • --generator
    标志。然后,如果命令支持,用户可以在不同的生成器之间进行选择(例如,
    kubectl run
    当前支持 Pod、作业、复制控制器和部署的生成器),或者在生成器的不同版本之间进行选择,以便用户根据特定行为进行选择可以固定到该版本(例如,
    kubectl
    公开当前支持服务生成器的两个不同版本)。
  • 世代应该与创造脱钩。
    生成器应该实现
    kubectl.StructuredGenerator
    接口并且不依赖于 cobra 或 Factory

正如Girish Sharma在[评论]中所指出的,并记录在问题93100中,该内容已于2020年被删除(PR 96556PR 106824

此 PR 从

kubectl create
命名空间中删除了生成器依赖项。

© www.soinside.com 2019 - 2024. All rights reserved.