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
kubectl
1.6から-o wide
オプションがこれを行うので、
kubectl get deployments -o wide
出力に現在の画像が表示されます。
これを実現するには、kubectlの jsonpath 出力オプションを使用できます。
kubectl get deployment flags -o=jsonpath='{$.spec.template.spec.containers[:1].image}'
すべてのポッドの画像URIのみを取得するには(たとえば、すべての名前空間で):
kubectl get pods --all-namespaces -o jsonpath="{..image}"
(詳細については https://kubernetes.io/docs/tasks/access-application-cluster/list-all-running-container-images/ を参照)
すべてのデプロイメントのイメージタグをリストにリストできます。
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,
単一の展開の場合、これを使用します。
kubectl get deploy/deployment-name -o jsonpath="{..image}"
ポッドでも機能します
kubectl get pod/pod-name -o jsonpath="{..image}"
次は私のために働いた:
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