如何通过指定自定义 属性 值来获取 Deployments ($ kubectl get deployments)?

How to get Deployments ($ kubectl get deployments) by specifying custom property value?

我已经部署了一个 Kubernetes 服务,当我查询获取 Deployment 时 $ kubectl get deployments,我可以看到 Deployment。 Deployment 的 json 如下所示 --

apiVersion: v1
kind: Deployment
metadata:
 name: test
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: test
        release: testRelease
        customProp: xyz

我的问题是如何构造一个查询,通过指定 'customProp' 值来获取 Deployment。 kubectl 是否支持将 jsonpath 作为查询的一部分传递?这样我就可以传递一个 json 路径,如 jsonpath='{$.spec.template.metadata.labels.customProp}',并将此 jsonPath 的值作为 'xyz'

这就是我想执行的:

$ kubectl get deployments -n <namespace> <json path query>

但是不确定如何构建 json 路径查询并与 $kubectl get deployments 一起传递。

Kubectl 支持query feature,你可以使用下面的查询

kubectl get pods --selector=customProp=xyz

Kubectl 也支持 JSON 路径表达式,要了解更多详细信息,请关注 link。您可以按照 link.

中显示的语法编写查询

是的,可以使用 jsonpath 向 kube-apiserver 查询资源。 运行 以下命令得到你想要的:

$ kubectl get deploy test -o=jsonpath='{.spec.template.metadata.labels.customProp}'

更多用法见https://kubernetes.io/docs/reference/kubectl/jsonpath

为您的部署对象添加标签。然后用下面的命令查询具体部署
kubectl get deploy -l 标签名=标签值

要将部署的映像名称作为字符串,您可以从部署 yaml 中的任何属性中进行选择。

   kubectl get deploy/${image.name} -o jsonpath="{..image}"