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

时间:2016-03-05 18:34:21

标签: go kubernetes go-templates

我必须检查复制控制器中的应用程序容器是否在某个端口上运行。这是带有我正在使用的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 lang的新手。感谢使用模板字符串或使用模板文件完成此任何建议..谢谢

1 个答案:

答案 0 :(得分:0)

使用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}}'

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