gpt4 book ai didi

go - kubectl get with template string 失败,不兼容的类型进行比较

转载 作者:数据小太阳 更新时间:2023-10-29 03:27:38 25 4
gpt4 key购买 nike

我必须检查复制 Controller 中的应用程序容器是否在特定端口上运行。这是我正在使用的带有 go 模板字符串的命令。

kubectl get rc my-rc --namespace=nightly --template='{{range .spec.template.spec.containers}}{{if .ports}}{{range .ports}}{{if .containerPort}}{{if eq .containerPort 5445}}{{end}}{{end}}{{end}}{{end}}{{end}}'

我认为这不是字符串比较,因为它是一个端口。甚至字符串比较也会抛出错误“调用 eq 时出错:比较不兼容的类型”

我可以只获取一组容器端口并在外部进行比较,但我想在 go 模板中完成它。

我是 Go 语言的新手。感谢使用模板字符串或使用模板文件完成此操作的任何建议。谢谢

最佳答案

使用 printf "%T".containerPort 检查 .containerPort 表明它是一个 float64。如果您将您的端口与尾随的 5445.0 进行比较,它应该可以工作。

您还有一些不必要的 if 语句。

--template='{{range .spec.template.spec.containers}}{{range .ports}}{{if eq .containerPort 5445.0}}True{{end}}{{end}}{{end}}'

您的示例还缺少用于将输出指定为 Go 模板的 -o="go-template" 标志。

关于go - kubectl get with template string 失败,不兼容的类型进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35818105/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com