Я пытаюсь развернуть программное обеспечение экспортера статистики (https://github.com/prometheus/statsd_exporter) как докер-контейнер в кластере K8s. Однако я хочу, чтобы некоторые параметры можно было настраивать. Для этого я передаю некоторые аргументы контейнеру через развертывание K8s в формате yaml. Когда эти аргументы не содержат символа двойных кавычек ("), все работает нормально. Однако, если желаемое значение введенных переменных содержит двойные кавычки, K8s интерпретирует их неправильно (нечто подобное описано в Передать строку json в переменную среды в развертывании k8s для Envoy). Я хочу установить аргумент --statsd.listen-tcp=":<port>"
, и я использую command
и args
в развертывании K8s:
- name: statsd-exporter
image: prom/statsd-exporter:v0.12.2
...
command: ["/bin/statsd_exporter"]
args: ['--log.level="debug"', '--statsd.listen-tcp=":9999"']
Когда я развертываю его в K8s и проверяю содержимое «запущенного» развертывания, все кажется правильным:
command:
- /bin/statsd_exporter
args:
- --log.level="debug"
- --statsd.listen-tcp=":9999"
Однако контейнер не запускается, что дает следующую ошибку:
time="..." level=fatal msg="Unable to resolve \": lookup \": no such host" source="main.go:64"
Я думаю, что K8s пытается «убрать» двойные кавычки и передает их, добавляя обратную косую черту в контейнер, поэтому последний не может их понять. Я также пытался записать args
как
args: ["--log.level=\"debug\"", "--statsd.listen-tcp=\":9999\""]
и происходит то же самое. Я также пытался передать их как переменные env, и все время возникает одна и та же проблема: двойные кавычки не анализируются должным образом.
Есть идеи относительно какого-то возможного решения?
Спасибо!
"
передается как строка\"
(экранированная"
), и приложение пытается разрешить эту строку как имя хоста. Когда эти аргументы не содержат символа двойных кавычек (), все работает нормально. Есть ли какая-то особая причина, по которой вам нужно использовать двойные кавычки? Вы пробовали использовать флаг--statsd.listen-tcp=
, указав полное имя хоста с портом без кавычек? - person mario   schedule 07.11.2019