K8s: редактирование против исправления против обновления - PullRequest
2 голосов
/ 15 октября 2019

В kubectl Шпаргалке (https://kubernetes.io/docs/reference/kubectl/cheatsheet/), есть 3 способа изменить ресурсы. Вы можете либо обновить, исправить или отредактировать.

Каковы фактические различия между ними и когда я должен использоватькаждый из них?

Ответы [ 2 ]

0 голосов
/ 15 октября 2019

Я хотел бы добавить несколько вещей к ответу night-gold . Я бы сказал, что нет лучшего и худшего способа изменить ваши ресурсы. Все зависит от конкретной ситуации и ваших потребностей.

Стоит подчеркнуть основное отличие между редактированием и исправлением , а именно первое - это интерактивный метод и второй мы можем назвать пакетный метод , который в отличие от первого может быть легко использован в скриптах. Просто представьте, что вам нужно внести изменения в десятки или даже несколько сотен различных kubernetes ресурсов / объектов , и гораздо проще написать простой скрипт, в котором вы можете patch всех этихресурсы в автоматическом режиме. Открытие каждого из них для редактирования не будет очень удобным и эффективным. Короткий пример:

kubectl patch resource-type resource-name --type json -p '[{"op": "remove", "path": "/spec/someSection/someKey"}]'

Хотя поначалу это может показаться сложным и не очень удобным в использовании по сравнению с интерактивным редактированием и удалением определенной строки из определенного раздела вручную, на самом деле это очень быстро иэффективный метод, который может быть легко реализован в скриптах и ​​может сэкономить вам много работы и времени при работе со многими объектами.

Что касается команды apply, вы можете прочитать в документации :

apply управляет приложениями через файлы, определяющие ресурсы Kubernetes. Он создает и обновляет ресурсы в кластере с помощью kubectl apply. Это рекомендуемый способ управления приложениями Kubernetes на производстве.

Это также дает вам возможность изменить рабочую конфигурацию, повторно применив ее из обновленного манифеста yaml, например, pullиз git-репозитория.

Если под update вы подразумеваете rollout (ранее известный как обновляемое обновление), как вы можете видеть в документации , у него совершенно другая функция. В основном используется для обновления развертываний. Вы не используете его для внесения изменений в ресурсы произвольного типа.

0 голосов
/ 15 октября 2019

Не думаю, что у меня есть ответ на этот вопрос, но я надеюсь, что это поможет.

Все три метода делают одно и то же, они изменяют конфигурацию некоторых ресурсов, но команда и путь к ней неТо же самое.

Как описано в документации:

  • Редактирование - это когда вы открываете файл конфигурации yaml, который находится в кластере kubernetes, и редактируете его (с помощью vim или другого), чтобы получить прямоймодификация на вашем кластере. Я не рекомендовал бы это вне целей тестирования, повторное применение conf из оригинального файла yaml приведет к удалению модификаций.
  • Мне кажется, что исправление исправлений не изменилось, но без открытия файла и нацеливания на определенные части ресурсов.
  • Обновление в документации кажется, что это все другой способ обновить ресурс без использования патча или редактирования. Некоторые из них можно использовать для отладки / тестирования, например, для принудительной замены ресурса или обновления версии образа. Другие используются для обновления их новыми конфигурациями.

Из опыта я использовал для тестирования только редактирование и некоторую команду обновления, большую часть времени я повторно применяю конфигурации.

...