Post #238
987
#kubernetes #troubleshooting #база
Так какого рожна сломалось именно после обновления?
Вот тут самое вкусное.
Разработчики изменили не приложение, а
То есть теперь контейнер стартует не как root, а как 1001.
Но в
fsGroup != runAsGroup и kubelet пытается менять владельцев!!!
А tmpfs создаётся уже внутри контейнера процессом с UID 1001!!!
Получается конфликт:
- kubelet хочет chown
- контейнер уже что-то пишет
- tmpfs/emptyDir получаются с разными владельцами
И Kubernetes начинает жрать собственную ногу.
Ну и чо делать?
- Вариант 1: отключить fsGroup, если он реально не нужен
- Вариант 2: поставить fsGroup = runAsGroup
- Вариант 3: включить legacy режим
Предполагаю, что третий вариант это костыль, пишу как вариант, но, я сделал вариант 2.
Но это не точно.
Какие итоги:
- снова нырнул в дебаггинг. Интересно, но снова потрачено время
- отмазкам "мы ничо не меняли" как обычно верить нельзя. Гит всё покажет
- я вообще не знаю как такое допускает архитектура куба, почему не сделать разумную валидацию где-то на это, ну бред же. Мы самолично стреляем себе в коленные чашечки и потом удивляемся "а чо не так то?"
Так какого рожна сломалось именно после обновления?
Вот тут самое вкусное.
Разработчики изменили не приложение, а
Dockerfile🤡:USER 1001
То есть теперь контейнер стартует не как root, а как 1001.
Но в
securityContext при этом осталось:fsGroup: 2000
runAsUser: 1001
runAsGroup: 1001
fsGroup != runAsGroup и kubelet пытается менять владельцев!!!
А tmpfs создаётся уже внутри контейнера процессом с UID 1001!!!
Получается конфликт:
- kubelet хочет chown
- контейнер уже что-то пишет
- tmpfs/emptyDir получаются с разными владельцами
И Kubernetes начинает жрать собственную ногу.
Ну и чо делать?
- Вариант 1: отключить fsGroup, если он реально не нужен
securityContext:
runAsUser: 1001
runAsGroup: 1001
fsGroup: null
- Вариант 2: поставить fsGroup = runAsGroup
securityContext:
runAsUser: 1001
runAsGroup: 1001
fsGroup: 1001
- Вариант 3: включить legacy режим
fsGroupChangePolicy: "Always"
Предполагаю, что третий вариант это костыль, пишу как вариант, но, я сделал вариант 2.
Но это не точно.
Какие итоги:
- снова нырнул в дебаггинг. Интересно, но снова потрачено время
- отмазкам "мы ничо не меняли" как обычно верить нельзя. Гит всё покажет
- я вообще не знаю как такое допускает архитектура куба, почему не сделать разумную валидацию где-то на это, ну бред же. Мы самолично стреляем себе в коленные чашечки и потом удивляемся "а чо не так то?"
- 💊 19
- 👍 8
- ❤ 2



