Мне нужно запустить эту команду 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', которое используется по умолчанию.