kubernetes-sigs/scheduler-plugins代码生成脚本警告及DeepCopy生成问题求助
我正在为kubernetes-sigs/scheduler-plugins开发新插件,参考了官方开发文档和ScoreByLabel插件的示例实现。已按示例添加ScoreByLabel插件,但执行./hack/update-codegen.sh命令时出现一系列废弃警告,虽代码生成看似仍在运行,但希望解决这些警告,确保能正常为新增结构体生成DeepCopy等函数。
警告内容如下:
Generating deepcopy funcs Generating defaulters Generating conversions WARNING: generate-groups.sh is deprecated. WARNING: Please use k8s.io/code-generator/kube_codegen.sh instead. WARNING: Specifying "all" as a generator is deprecated. WARNING: Please list the specific generators needed. WARNING: "all" is now an alias for "applyconfiguration,client,deepcopy,informer,lister"; new code generators WILL NOT be added to this set WARNING: generate-internal-groups.sh is deprecated. WARNING: Please use k8s.io/code-generator/kube_codegen.sh instead. Generating deepcopy funcs Generating apply configuration for scheduling:v1alpha1 at sigs.k8s.io/scheduler-plugins/pkg/generated/applyconfiguration Generating clientset for scheduling:v1alpha1 at sigs.k8s.io/scheduler-plugins/pkg/generated/clientset Generating listers for scheduling:v1alpha1 at sigs.k8s.io/scheduler-plugins/pkg/generated/listers Generating informers for scheduling:v1alpha1 at sigs.k8s.io/scheduler-plugins/pkg/generated/informers
这些警告源于当前使用的代码生成脚本和参数已被Kubernetes官方废弃,需调整./hack/update-codegen.sh脚本内容适配新工具链:
替换废弃的生成脚本
将脚本中调用generate-groups.sh或generate-internal-groups.sh的部分,替换为官方推荐的kube_codegen.sh,该脚本是code-generator的统一入口,支持外部与内部API组的代码生成。替换"all"为具体生成器列表
不再使用all作为生成器参数,明确列出所需的生成器。根据你的需求(生成DeepCopy、defaulters、conversions及客户端相关代码),可指定:- 仅基础CRD相关生成:
deepcopy,defaulter,conversion - 包含客户端、informer、lister:
deepcopy,client,informer,lister,applyconfiguration
- 仅基础CRD相关生成:
调整脚本参数格式
kube_codegen.sh的参数格式略有不同,典型调用示例如下:"${CODEGEN_PKG}/kube_codegen.sh" \ --boilerplate "${BOILERPLATE_PATH}" \ --output-dir "${OUTPUT_DIR}" \ --output-pkg "${OUTPUT_PKG}" \ --deepcopy \ --defaulter \ --conversion \ --client \ --informer \ --lister \ "${API_PKG}"需根据scheduler-plugins的目录结构,调整
CODEGEN_PKG、BOILERPLATE_PATH、OUTPUT_DIR、OUTPUT_PKG、API_PKG等变量的路径值。验证生成结果
修改脚本后重新执行./hack/update-codegen.sh,检查警告是否消失,同时确认新增结构体对应的DeepCopy、defaulter等函数是否正常生成在pkg/generated目录下。
注:当前警告仅为工具废弃提示,实际代码生成可能已完成,但为兼容后续code-generator版本更新,建议尽快完成脚本迁移。
内容的提问来源于stack exchange,提问作者Kiran

