Есть ли способ настроить кластер, чтобы не добавлять эти автоматические переменные для каждой видимой службы?
Да и нет: не в масштабах всего кластера, насколько я знаю, но enableServiceLinks: ложь
поле в спецификация:
предназначен для того, чтобы вы могли отключить их
В качестве альтернативы, решит ли эту проблему использование других сред выполнения, таких как containerd?
Нет, эти имена были добавлены в духе совместимости с докером, но они вообще не связаны с докером — они введенный кубелетом
Как вообще я могу использовать среду, не сталкиваясь с такими конфликтами имен? Или имена сервисов считаются частью контракта с контейнерами, и я не должен их свободно менять?
Другой вариант — не запрещать их целиком, а просто замаскировать. конкретный те, которые беспокоят ваше приложение; те, которые заканчиваются на _HTTP
особенно проблематичны с Spring Boot, где есть Оказание услуг
чья метаданные: {имя:
какое-то супер общее имя, например оказание услуг
или же сервер
Вы можете сделать это для каждого развертывания:
среда:
- имя: SERVICENAME_PORT_HTTP
# опускаем значение: просто устанавливаем пустую строку в контейнере
# и остальные
или вы можете объявить ConfigMap, содержащую оскорбительные, и полностью перезаписать их с помощью envОт:
(чтобы не приходилось исправлять каждое затронутое развертывание