我想将注释的特定值添加到kubectl自定义列字段中。我可以在这样的资源上获取所有当前注释:
kubectl get pvc -o custom-columns=NAME:.metadata.name,"ANNOTATIONS":.metadata.annotations -n monitoring
这将返回一个地图:
NAME ANNOTATIONS
prometheus-k8s-db-prometheus-k8s-0 map[pv.kubernetes.io/bind-completed:yes pv.kubernetes.io/bound-by-controller:yes volume.beta.kubernetes.io/storage-provisioner:kubernetes.io/aws-ebs]
prometheus-k8s-db-prometheus-k8s-1 map[pv.kubernetes.io/bind-completed:yes pv.kubernetes.io/bound-by-controller:yes volume.beta.kubernetes.io/storage-provisioner:kubernetes.io/aws-ebs]
并且据我所知,考虑到kubectl -o custom-columns
使用JSONpath,我认为我可以做到这一点:
kubectl get pvc -o custom-columns=NAME:.metadata.name,"ANNOTATIONS":".metadata.annotations['pv.kubernetes.io/bind-completed']" -n monitoring
但似乎不是。有办法吗?
答案 0 :(得分:4)
好的,我知道了。比我想象的要容易。
Annotations是返回时的标准JSON元素。问题是kubectl
的JSONPath解析器在元素中存在点问题,因此您只需要转义它们即可。这是一个示例:
kubectl get pvc -o custom-columns=NAME:.metadata.name,"ANNOTATIONS":".metadata.annotations.pv\.kubernetes\.io/bind-completed" -n monitoring
NAME ANNOTATIONS
prometheus-k8s-db-prometheus-k8s-0 yes
prometheus-k8s-db-prometheus-k8s-1 yes