У меня странная среда, в которой я в настоящее время не могу записывать логи модуля k8s в службу журналов (loggly, sumo, et c ...). Иногда у одного из модулей возникают проблемы в prod, и исправление заключается в удалении модуля и его замене, которым управляет операционная группа (у меня нет прямого доступа для этого).
Что бы я хотел Например, нужно сохранить модуль с проблемами, чтобы трафик c не направлялся на него и не заменялся контроллером. Таким образом, я могу копаться в модуле и журналах, чтобы определить, что произошло.
Я изучил маркировку, чтобы сделать это здесь: https://kubernetes.io/docs/concepts/configuration/overview/
Важный раздел это
Вы можете манипулировать метками для отладки. Поскольку контроллеры Kubernetes (такие как ReplicaSet) и Сервисы совпадают с модулями, использующими метки селектора, удаление соответствующих меток из модуля остановит его для рассмотрения контроллером или для обслуживания traffi c службой. Если вы удалите метки существующего Pod, его контроллер создаст новый Pod, чтобы занять его место. Это полезный способ отладки ранее «живого» модуля в «карантинной» среде. Для интерактивного удаления или добавления меток используйте ярлык kubectl.
Я вошел и отредактировал модуль напрямую, используя:
kubectl edit <pod>
Затем полностью удалил раздел меток и сохранил.
Когда я так поступаю, кажется, ничего не происходит. Стручок остается и не заменяется, насколько я вижу, проверяя:
kubectl get pods
Он перемещен куда-то, чего я не вижу? Должно ли удаление ярлыков работать так, как я ожидаю (Controller создает новый модуль на его месте)?
Любая помощь будет принята с благодарностью. Спасибо.
Редактировать 1:
Удаление или замена ярлыков с модулей, как предложено в публикации mdaniel, не удаляет модули и ускоряет замену.
Я развертываю с помощью Helm, поэтому метки Run нет, как в примере, но у меня есть раздел выбора службы и настройки ярлыков модуля, например:
Раздел yaml Service Selector:
selector:
app.kubernetes.io/instance: foo
app.kubernetes.io/name: bar
Секция ярлыка Pod:
labels:
app.kubernetes.io/instance: foo
app.kubernetes.io/name: bar
controller-revision-hash: some-hash
statefulset.kubernetes.io/pod-name: pod-name
Я изменяю секцию ярлыка Pod на:
labels:
app.kubernetes.io/instance: i-am-debugging-this-pod
app.kubernetes.io/name: i-am-debugging-this-pod
controller-revision-hash: some-hash
statefulset.kubernetes.io/pod-name: pod-name
И тогда ... ничего не происходит. Стручок просто продолжает пыхтеть. Кажется, это должно работать, но нада.