我正在尝试使用kubectl -o jsonpath从服务yaml (在元数据注释下)检索kubernetes last-applied configuration,但是字段的名称是kubectl我认为解析器会因为实际名称字段中的点而变得混乱,因为它使用点来指定子对象。
例如(在Windows上运行)
kubectl -lapp=myapp get service -o jsonpath="{range .items[*]}{
.metadata.annotations}{\"\n\"}{end}"
按照预期显示结果值的映射
map[kubectl.kubernetes.io/last-applied-configuration:{"kind":"Service","apiVersion":"v1","metadata":{"name":"myapp","namespace":"mynamespace",
"creationTimestamp":null,"labels":{"app":"myapp","version":"1.0"}},"spec":{"ports":[{"name":"http","protocol":"TCP","port":80,"ta
rgetPort":8080}],"selector":{"app":"myapp","version":"1.0"},"type":"NodePort"},"status":{"loadBalancer":{}}}]
在这种情况下,kubectl.kubernetes.io/last-applied-configuration是注释中的唯一内容,但情况并不总是如此。
当我试图深入到最后应用的配置时,问题就出现了。
例如:
kubectl -lapp=myapp get service -o jsonpath="{range .items[*]}{
.metadata.annotations.kubectl.kubernetes.io/last-applied-configuration}{\"\n\"}{end}"
不返回任何信息。
我也试过
kubectl -lapp=myapp get service -o jsonpath="{range .items[*]}{
.metadata.annotations['kubectl.kubernetes.io/last-applied-configuration']}{\"\n\"}{end}"
和
kubectl -lapp=myapp get service -o jsonpath="{range .items[*]}{['metadata']['annotations']['kubectl.kubernetes.io/last-applied-configuration']}{\"\n\"}{end}"
无济于事。
我期望结果仅仅是kubectl.kubernetes.io/last-applied-configuration的值
发布于 2020-05-11 07:12:19
kubectl apply view-last-applied service -lapp=myapp -o json
发布于 2019-12-19 11:04:01
您需要对.
进行转义,然后它将列出特定注释名称中的值。
kubectl -lapp=myapp get service -o jsonpath="{range .items[*]}{.metadata.annotations.kubectl\.kubernetes\.io/last-applied-configuration}{\"\n\"}{end}"
发布于 2019-05-14 10:10:47
我不是json专家,但您可以使用jid
- json incremental digger
kubectl get service -o json| jid -q
您可以查看详细的解释here。
要捕获metadata.annotations
,只需使用以下命令:
kubectl get service -o json| jq .items[0].metadata.annotations
输出将如下所示:
$ kubectl get service -o json| jq -r .items[0].metadata.annotations
{
"kompose.cmd": "kompose convert --volumes hostPath",
"kompose.version": "1.17.0 (a74acad)",
"kubectl.kubernetes.io/last-applied-configuration": "{\"apiVersion\":\"v1\",\"kind\":\"Service\",\"metadata\":{\"annotations\":{\"kompose.cmd\":\"kompose convert --volumes hostPath\",\"kompose.version\":\"1.17.0 (a74acad)\"},\"creationTimestamp\":null,\"labels\":{\"io.kompose.service\":\"decs-zc1\"},\"name\":\"decs-zc1\",\"namespace\":\"default\"},\"spec\":{\"ports\":[{\"name\":\"2201\",\"port\":2201,\"targetPort\":22}],\"selector\":{\"io.kompose.service\":\"decs-zc1\"}},\"status\":{\"loadBalancer\":{}}}\n"
}
希望这对你有更大的帮助。
https://stackoverflow.com/questions/56117950
复制