web-dev-qa-db-ja.com

kubernetes展開の現在のイメージを取得する

kubectlまたはAPIを使用して、ポッドまたはデプロイメント内のコンテナーの現在のイメージを取得するにはどうすればよいですか?

たとえば、以下の構成で作成されたデプロイメントで、値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
32
Andy Hume

kubectl 1.6から-o wideオプションがこれを行うので、

kubectl get deployments -o wide

出力に現在の画像が表示されます。

30
Daniel Perez

これを実現するには、kubectlの jsonpath 出力オプションを使用できます。

kubectl get deployment flags -o=jsonpath='{$.spec.template.spec.containers[:1].image}'
22
Pixel Elephant

すべてのポッドの画像URIのみを取得するには(たとえば、すべての名前空間で):

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

(詳細については https://kubernetes.io/docs/tasks/access-application-cluster/list-all-running-container-images/ を参照)

9
eversMcc

すべてのデプロイメントのイメージタグをリストにリストできます。

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

サンプル出力:

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,
3
Evan Hu

単一の展開の場合、これを使用します。

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

ポッドでも機能します

kubectl get pod/pod-name -o jsonpath="{..image}"
2
Shalkam

次は私のために働いた:

kubectl get deployment -o=jsonpath='{$.items[:1].spec.template.spec.containers[:1].image}'

..myデプロイメント構成は、何らかの理由で明らかに異なりました(開始時に 'items'要素を使用)。

更新:「items」要素(展開要素の単なるリスト)は、次の操作を行うと表示されます。

kubectl get deployment -o=json

一方、デプロイメント名を指定した場合、返されるjsonにはitems要素はありません。例:

kubectl get deployment [deploymentName] -o=json
2
eversMcc