获取kubernetes部署的当前图片

And*_*ume 37 kubernetes kubectl

如何使用kubectlAPI或API来检索pod或部署中容器的当前映像?

例如,在使用以下配置创建的部署中,我想要检索该值eu.gcr.io/test0/brain:latest.

apiVersion: v1
   kind: Deployment
   metadata:
     name: flags
   spec:
     replicas: 6
     template:
       metadata:
      labels:
        app: flags
       spec:
         containers:
         - name: flags
           image: eu.gcr.io/test0/brain:latest
Run Code Online (Sandbox Code Playgroud)

Dan*_*rez 34

kubectl1.6开始,-o wide选项就是这样做的

kubectl get deployments -o wide
Run Code Online (Sandbox Code Playgroud)

将在输出中显示当前图像.

  • 对于所有命名空间,添加“-A”。 (4认同)

Pix*_*ant 27

您可以使用kubectl的jsonpath输出选项来实现此目的:

kubectl get deployment flags -o=jsonpath='{$.spec.template.spec.containers[:1].image}'
Run Code Online (Sandbox Code Playgroud)

  • 如果您使用的是zsh shell,则需要在JSONpath过滤器周围加上单引号或双引号。始终使用它们是一个好习惯。 (3认同)

eve*_*Mcc 9

以获得所有pod的图像uri(例如,在所有命名空间中):

kubectl get pods --all-namespaces -o jsonpath="{..image}"

(有关更多详细信息,请参见https://kubernetes.io/docs/tasks/access-application-cluster/list-all-running-container-images/


eve*_*Mcc 7

以下对我有用:

kubectl get deployment -o=jsonpath='{$.items[:1].spec.template.spec.containers[:1].image}'
Run Code Online (Sandbox Code Playgroud)

由于某种原因,我的部署配置明显不同(开头有“items”元素)。

更新:如果只是执行以下操作,则会出现“items”元素(这只是部署元素的列表):

kubectl get deployment -o=json
Run Code Online (Sandbox Code Playgroud)

而如果我指定部署名称,则返回的 json 中不会有 items 元素,例如:

kubectl get deployment [deploymentName] -o=json
Run Code Online (Sandbox Code Playgroud)


Eva*_* Hu 6

您可以在列表中列出所有部署的图像标记:

kubectl get deployment -o=jsonpath="{range .items[*]}{'\n'}{.metadata.name}{':\t'}{range .spec.template.spec.containers[*]}{.image}{', '}{end}{
end}"
Run Code Online (Sandbox Code Playgroud)

样本输出:

deployment-a:   docker-registry.com/group/image-a:v1,
deployment-b:   docker-registry.com/group/image-b:v2,
deployment-c:   docker-registry.com/group/image-c:v3,
deployment-d:   docker-registry.com/group/image-d:v4,
Run Code Online (Sandbox Code Playgroud)

  • 不带换行符的命令 `kubectl get deployment -o=jsonpath="{range .items[*]}{'\n'}{.metadata.name}{':\t'}{range .spec.template.spec.容器[*]}{.image}{', '}{end}{end}"` (2认同)

Sha*_*kam 5

对于单个部署,请使用:

kubectl get deploy/deployment-name -o jsonpath="{..image}"
Run Code Online (Sandbox Code Playgroud)

它也适用于 pod

kubectl get pod/pod-name -o jsonpath="{..image}"
Run Code Online (Sandbox Code Playgroud)