Назад | Перейти на главную страницу

Kubernetes - как сопоставить параметры командной строки docker run с командной строкой kubectl

Мне нужно запустить эту команду Docker в Kubernetes:

docker run -p 8080:8080 sagemath/sagemath sage -notebook

Я могу сопоставить все, кроме "-ноутбука" - кто-нибудь знает, как это сделать?

Вот что у меня есть, и, конечно, это не работает, поскольку "-notebook" неправильно переведен на kubectl:

kubectl run --image=sagemath/sagemath sage --port=8080 --type=LoadBalancer -notebook

Когда вы определяете спецификацию стручка для своего мудреца, вы можете определить как command и args массив, поэтому для вас это будет как

command: sage
args:
- -notebook

для запуска с kubectl run

Usage:
  kubectl run NAME --image=image [--env="key=value"] [--port=port] [--replicas=replicas] [--dry-run=bool] [--overrides=inline-json] [--command] -- [COMMAND] [args...] [options]

так что попробуйте бежать с -- разделитель: kubectl run --image=sagemath/sagemath --port=8080 --type=LoadBalancer -- sage -notebook

-- делает свое дело. Это означает, что kubectl не будет анализировать как аргументы kubectl следующие строки, начинающиеся с -

Итак, вы запускаете этот контейнер, выполняя:

kubectl run --image=sagemath/sagemath --port=8080 sage -- -notebook

И если вам нужен общедоступный IP-адрес на GKE, вы должны открыть контейнер, выполняющий:

kubectl expose deploy sage --type=LoadBalancer --port=8080

Вы можете запустить общедоступный IP kubectl get service в ряду sage в столбце EXTERNAL-IP

command: sage notebook
args:

Для таких случаев

k run --image=sagemath/sagemath --port=8080 --command=true -- sage notebook

--command = false Если true и дополнительные аргументы присутствуют, используйте их как поле 'command' в контейнере, а не поле 'args', которое используется по умолчанию.