Получить текущий образ развертывания кубернетов

Как я могу использовать 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

Ответ 1

От kubectl 1.6 опция -o wide делает это, поэтому

kubectl get deployments -o wide

отобразит текущее изображение на выходе.

Ответ 2

Вы можете использовать kubectl jsonpath для достижения этой цели:

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

Ответ 4

для меня работало следующее:

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

. По какой-то причине моя конфигурация развертывания была совершенно иной (с элементом "элементы" в начале).

UPDATE: Элемент "items" (который является всего лишь списком элементов развертывания) появится, только если:

kubectl get deployment -o=json

тогда как если я укажу имя развертывания, в возврате json не будет элемента элементов, например:

kubectl get deployment [deploymentName] -o=json

Ответ 5

Вы можете перечислить тег изображения всех развертываний в списке:

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,

Ответ 6

Для одного развертывания используйте это:

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

Это может работать и для стручка

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