1

レプリケーション コントローラーのアプリケーション コンテナーが特定のポートで実行されているかどうかを確認する必要があります。これは、私が使用している 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が初めてです。テンプレート文字列またはテンプレートファイルを使用してこれを達成するための提案を感謝します..ありがとう

4

1 に答える 1

2

.containerPort を調べると、float64 でprintf "%T" .containerPortあることがわかります。ポートを末尾と比較すると、5445.0機能するはずです。

不要な if ステートメントもあります。

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

あなたの例には-o="go-template"、出力を Go テンプレートとして指定するフラグもありませんでした。

于 2016-03-05T18:47:59.857 に答える