Удалить несуществующие аннотации в kubectl apply -f - PullRequest
0 голосов
/ 02 апреля 2020

При применении обновления к ресурсу kubernetes с kubectl -f apply и в примененной конфигурации я удалил некоторые аннотации, которые в данный момент существуют в развернутом ресурсе, эти аннотации не удаляются (но изменения в существующих корректно обновляются ). Как я могу принудительно удалить удаленные аннотации в процессе обновления?

Кстати, я хочу избежать удаления и воссоздания ресурса

1 Ответ

1 голос
/ 02 апреля 2020

Как упомянул @Matt

Использовали ли вы kubectl apply для создания этих данных на ресурсе? применить сохраняет предыдущее состояние в аннотации. Если эта аннотация не существует, она не может определить, какие данные удалить

Подробнее об этом здесь


Вы можете использовать kubectl edit для удаления этих аннотаций.

Редактирование ресурса из редактора по умолчанию.

Команда edit позволяет вам напрямую редактировать любой ресурс API, который вы можете получить через инструменты командной строки. Он откроет редактор, определенный вашими переменными среды KUBE_EDITOR, или EDITOR, или вернется к 'vi' для Linux или 'notepad' для Windows. Вы можете редактировать несколько объектов, хотя изменения применяются по одному. Команда принимает имена файлов, а также аргументы командной строки, хотя файлы, на которые вы указываете, должны быть предварительно сохраненными версиями ресурсов.

Редактирование выполняется с использованием версии API, используемой для извлечения ресурса. Чтобы редактировать, используя указанную c версию API, полностью определите ресурс, версию и группу.

Формат по умолчанию - YAML. Чтобы отредактировать в JSON, укажите «-o json».

Флаг - windows -line-endings может использоваться для принудительного завершения Windows окончания строки, в противном случае по умолчанию для вашей операционной будет использоваться система.

В случае возникновения ошибки при обновлении на диске будет создан временный файл, содержащий ваши непримененные изменения. Наиболее распространенной ошибкой при обновлении ресурса является другой редактор, изменяющий ресурс на сервере. Когда это происходит, вам придется применить свои изменения к более новой версии ресурса или обновить временную сохраненную копию, чтобы включить последнюю версию ресурса.


Я сделал пример с nginx pod и некоторая аннотация

apiVersion: v1
kind: Pod
metadata:
  name: annotations-demo
  annotations:
    delete: without-restart
spec:
  containers:
  - name: nginx
    image: nginx:1.14.2
    ports:
    - containerPort: 80

Я использовал

  • kubectl description , чтобы проверить, добавлена ​​ли аннотация.

    Аннотации: удалить: без перезапуска

  • kubectl edit чтобы удалить эту аннотацию, сейчас она пуста.

    Аннотации:

...