цель и проблема
Иметь развертывание контейнера / контейнера, которое может работать непрерывно.Команда, которую должен выполнить контейнер: /usr/local/bin/python3
и аргументы команды: "-c $'import time\\nwhile (True):\\n print(\".\");time.sleep(5);'"
.Однако, когда я выполняю kubectl apply -f "PATH_TO_THE_KUBERNETES_YAML_FILE"
ошибки развертывания с этим исключением Python: IndentationError: unexpected indent
.
Снимок экрана ошибки:
Развертывание Podиспользуется как средство для вызова кода Python, который взаимодействует с клиентом Certbot как часть задач при использовании сертификатов LetsEncrypt.
См. проект здесь
Так что должна быть возможность развернуть Pod >> do kubectl exec ...
в контейнере, выполняемом как часть развертывания Kubernetes.
пробный:
Различныйспособы определения командной строки Kubernetes.
- С помощью опции exec Python.Например:
python3 -c exec(\"import time\nwhile True: print(\".\");time.sleep(5);\")
- Включение кода для выполнения с различными комбинациями ` и " .
$'textwrap.dedent("""import time while True: print(".") time.sleep(5)""")'
... попытался использовать:
args:
- "-c $'import time\\nwhile (True):\\n print(\".\");time.sleep(5);'"
в качестве альтернативы args: ["-c $'import time\\nwhile (True):\\n print(\".\");time.sleep(5);'"]
подтвердил, что сам код Python работает.
- как при непосредственном использовании
Python3 -c "..."
, так и при вызове его с помощью команды docker run
для контейнера из этого Dockerfile - Я выполнил обычный поиск в Google, Stack *и т. д. Я также был на официальной странице репо Kubernetes GitHub и просматривал там вопросы. Закрыто и открыто. И я не видел ни одной проблемы, соответствующей этому.
- Kubectl не жалуется при выполнении
...apply -f YAML_FILE
относительно формата файла YAML и соответствия спецификации развертывания Pod. - Попробовал вместо этого некоторый код bash:
["/bin/bash", "-ecx", "while :; do printf '.'; sleep 5 ; done"]
<-это работает. </li>
дополнительная информация
- Python v3.7.2
- Kubernetes is v1.12.5-gke.10
Кажется, это комбинация указания кода Python в YAML-файле развертывания Pod Kubernetes Pod ... который не подходит для Pythonsтребование значительных пробелов и отступов.Как вы можете прочитать в разделе #tried, он работает при вызове Python напрямую или с помощью команды Docker run / exec.
Как я могу устранить эту проблему?