我正在尝试使用 kubectl -o jsonpath 从服务 yaml(在元数据注释下)检索 kubernetes last-applied-configuration,但该字段的名称是“kubectl.kubernetes.io/last-applied-configuration”。我相信解析器会因为实际名称字段中的点而感到困惑,因为它使用点来指定子对象。
例如(在 Windows 上运行)
kubectl -lapp=myapp get service -o jsonpath="{range .items[*]}{
.metadata.annotations}{\"\n\"}{end}"
Run Code Online (Sandbox Code Playgroud)
按预期显示结果值的映射
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":{}}}]
Run Code Online (Sandbox Code Playgroud)
在这种情况下, 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}"
Run Code Online (Sandbox Code Playgroud)
不返回任何信息。
我也试过
kubectl -lapp=myapp get service -o jsonpath="{range .items[*]}{
.metadata.annotations['kubectl.kubernetes.io/last-applied-configuration']}{\"\n\"}{end}"
Run Code Online (Sandbox Code Playgroud)
和
kubectl -lapp=myapp get service -o jsonpath="{range .items[*]}{['metadata']['annotations']['kubectl.kubernetes.io/last-applied-configuration']}{\"\n\"}{end}"
Run Code Online (Sandbox Code Playgroud)
无济于事。
我期望结果只是 kubectl.kubernetes.io/last-applied-configuration 的值
小智 5
kubectl apply view-last-applied service -lapp=myapp -o json
Run Code Online (Sandbox Code Playgroud)
您需要转义,.然后它将列出特定注释名称中的值。
kubectl -lapp=myapp get service -o jsonpath="{range .items[*]}{.metadata.annotations.kubectl\.kubernetes\.io/last-applied-configuration}{\"\n\"}{end}"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4895 次 |
| 最近记录: |