Что произойдет, если configMap(/secret), смонтированный как том в работающем модуле, будет удален на главном сервере?
Допустим, у меня есть модуль с томом configMap (или секретным). Объект ConfigMap (или секретный) присутствует во время создания модуля, но я удаляю объект configMap (или секретный) на главном компьютере, пока модуль работает. Какое поведение ожидается? Это где-нибудь задокументировано?
Беговая корзина прекращена? Удалены ли файлы configMap (или секретные) и модуль pod продолжает работать?
Это документация, которую я мог найти об обновлениях, ничего не упоминает об удалениях.
Когда ConfigMap, уже используемый в томе, обновляется, спроецированные ключи в конечном итоге также обновляются. Kubelet проверяет, является ли установленный ConfigMap свежим при каждой периодической синхронизации. Тем не менее, он использует свой локальный кэш на основе ttl для получения текущего значения ConfigMap. В результате общая задержка с момента обновления ConfigMap до момента, когда новые ключи проецируются на модуль, может составлять столько же, сколько период синхронизации kubelet + ttl кэша ConfigMaps в kubelet.
1 ответ
С вашими рабочими нагрузками ничего не происходит. Как только они запланированы планировщиком куба на главном сервере (ах), а затем кубелетом на узле (узлах), ConfigMaps, Secrets и т. Д. Сохраняются в локальной файловой системе узла. По умолчанию это что-то вроде этого:
# ConfigMaps
/var/lib/kubelet/pods/<pod-id>/volumes/kubernetes.io~configmap/configmapname/
# Secret
/var/lib/kubelet/pods/<pod-id>/volumes/kubernetes.io~secret/secret-token/
На самом деле они монтируются где-то в контейнере по пути, указанному вами в спецификации модуля.
Когда вы удаляете объект в Kubernetes, он фактически удаляется из своего хранилища данных (etcd). Предположим, что ваши модули должны быть перезапущены по любой причине, они не смогут перезапустить.
Короткий ответ, с вашими рабочими нагрузками ничего не происходит, но если ваши модули нужно перезапустить, они не смогут перезапуститься.