kubectl get with template string 失败,不兼容的类型进行比较
kubectl get with template string fails with incompatible types for comparison
我必须检查复制控制器中的应用程序容器是否在特定端口上运行。这是我正在使用的带有 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}}'
我认为这不是字符串比较,因为它是一个端口。甚至字符串比较也会引发错误 "error calling eq: incompatible types for comparison'"
我可以只获取一组容器端口并在外部进行比较,但想在 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}}'
您的示例还缺少 -o="go-template"
标志以将输出指定为 Go 模板。
我必须检查复制控制器中的应用程序容器是否在特定端口上运行。这是我正在使用的带有 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}}'
我认为这不是字符串比较,因为它是一个端口。甚至字符串比较也会引发错误 "error calling eq: incompatible types for comparison'"
我可以只获取一组容器端口并在外部进行比较,但想在 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}}'
您的示例还缺少 -o="go-template"
标志以将输出指定为 Go 模板。