Контейнерное командование Кубернетес - PullRequest
0 голосов
/ 28 мая 2019

Я работаю с Neo4j в Kubernetes.Для демонстрации я хочу заполнить Neo4j в Pods начальными данными, которые я могу сделать с помощью cypher-файла, который я имею в папке /bin, используя cypher-shell.В общем, я запускаю контейнер и запускаю cat bin/initialData.cypher | bin/cypher-shell.Я подтвердил, что это работает, запустив его в kubectl exec -it <pod> /bin/bash bash.Тем не менее, независимо от того, как я пытаюсь отобразить на spec.container.command, это не удается.В настоящее время мое лучшее предположение -

spec:
  containers:
    command:
        - /bin/bash
        - -c
        - |
          cd bin
          ls
          cat initialData.cypher | cypher-shell

, который не работает.Он отображает ls правильно, но затем выбрасывает connection refused, откуда я понятия не имею, откуда он.

edit: Обновлено

Ответы [ 3 ]

1 голос
/ 29 мая 2019

Вы выполнили действительную спецификацию, но с неверным синтаксисом.

Попробуйте вот так

spec:
  containers:
    command: ["/bin/bash"]
    args: ["-c","cat import/initialData.cypher | bin/cypher-shell"]

Обновление: в вашем neo4j.conf вы должны раскомментировать строки, связанные с использованием neo4j-оболочка

# Enable a remote shell server which Neo4j Shell clients can log in to.
dbms.shell.enabled=true
# The network interface IP the shell will listen on (use 0.0.0.0 for all interfaces).
dbms.shell.host=127.0.0.1
# The port the shell will listen on, default is 1337.
dbms.shell.port=1337
0 голосов
/ 07 июня 2019

Я узнал, в чём была моя проблема.Я не осознавал, что команды не связаны с жизненными циклами инициализации, то есть команда была выполнена до запуска neo4j в контейнере.По сути, использование команды было для меня неправильным подходом.

0 голосов
/ 28 мая 2019

Exec кажется лучшим способом справиться с этим, но вы обычно не используете и команду, и аргументы. В этом случае, вероятно, просто поместите все это в команду.

...