Для целей отладки и тестирования я хотел бы найти наиболее удобный способ запуска модулей Kubernetes и оперативного изменения его спецификации.
Запустить часть довольно просто с помощью обязательных команд. Запуск
kubectl run nginx-test --image nginx --restart=Never
дает мне именно то, что я хочу: один модуль, не управляемый каким-либо контроллером, таким как Deployment или ReplicaSet. Легко играть и убирать, когда это необходимо.
Однако, когда я пытаюсь отредактировать спецификацию с помощью
kubectl edit po nginx-test
, я получаю следующее предупреждение:
pods "nginx-test" was not valid:
* spec: Forbidden: pod updates may not change fields other than spec.containers[*].image, spec.initContainers[*].image, spec.activeDeadlineSeconds or spec.tolerations (only additions to existing tolerations)
т.е. только ограниченный набор спецификаций Pod доступен для редактирования во время выполнения.
ВАРИАНТЫ НАЙДЕНЫ ТАК FAR:
Получение спецификации Pod, сохраненной в файл:
kubectl get po nginx-test -oyaml > nginx-test.yaml
редактируется и воссоздается с
kubectl apply -f
Немного тяжелый вес для изменения только одного поля.
Создание Развертывания, а не одного Pod, а затем редактирование раздела spec
в самом Развертывании.
Минусы:
- необходим дополнительный объект API (развертывание), который не следует забывать очистить, когда вы закончите
- имена Pod автоматически генерируются вформа
nginx-test-xxxxxxxxx-xxxx
и менее удобна для работы.
Так есть ли более простой (или, возможно, элегантный) способ редактирования произвольного поля в спецификации Pod? Буду признателен за любое предложение.