Necesito ejecutar este comando de Docker en Kubernetes:
docker run -p 8080:8080 sagemath/sagemath sage -notebook
Puedo mapear todo excepto "- notebook" - ¿alguien sabe cómo hacer eso?
Esto es lo que tengo hasta ahora, y por supuesto no funciona ya que "- notebook" no se traduce a kubectl correctamente:
kubectl run --image=sagemath/sagemath sage --port=8080 --type=LoadBalancer -notebook
Cuando define la especificación de pod para su sage, puede definir ambos command
y un args
array, así que para ti sería como
command: sageargs:- -notebook
para lanzar con 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]
así que intenta correr con --
delimitador : kubectl run --image=sagemath/sagemath --port=8080 --type=LoadBalancer -- sage -notebook
Ali
May 3, 2022, 2:53pm
#3
--
hace el truco. Significa que kubectl no analizaría como argumentos de kubectl las siguientes cadenas que comienzan con -
Así que ejecuta ese contenedor ejecutando:
kubectl run --image=sagemath/sagemath --port=8080 sage -- -notebook
Y si desea una IP pública en GKE, debe exponer el contenedor que se ejecuta:
kubectl expose deploy sage --type=LoadBalancer --port=8080
Puede hacer que la IP pública se ejecute kubectl get service
en la fila sage
en la columna EXTERNAL-IP
command: sage notebookargs:
Para tales casos
k run --image=sagemath/sagemath --port=8080 --command=true -- sage notebook
-- command=falseSi hay argumentos true y extra, utilícelos como el campo' command 'en el contenedor, en lugar del campo' args', que es el predeterminado.
`- notebook 'no es un argumento para docker o kubectl, sino para ‘sage’.
Quinn
May 3, 2022, 3:08pm
#6
Sí, pero cómo lo implemento en kubectl, esa es la pregunta. La línea de comandos de docker anterior funciona
El comando que desea ejecutar va al final, al igual que antes.