Kubernetes - how to map docker run command-line parameters to kubectl command line
I need to run this Docker command in Kubernetes:
docker run -p 8080:8080 sagemath/sagemath sage -notebook
I can map everything across except "-notebook" - does anyone know how to do that?
Here is what I have so far, and of course it doesn't work since "-notebook" is not translated over to kubectl correctly:
kubectl run --image=sagemath/sagemath sage --port=8080 --type=LoadBalancer -notebook
When you define pod spec for your sage you can define both command
and an args
array, so for you it would be like
command: sage
args:
- -notebook
for launching with 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]
so try running with --
delimiter : kubectl run --image=sagemath/sagemath --port=8080 --type=LoadBalancer -- sage -notebook
--
does the trick. It means that kubectl wouldn't parse as kubectl arguments the following strings that start with -
So you run that container executing:
kubectl run --image=sagemath/sagemath --port=8080 sage -- -notebook
And if you want a public IP on GKE, you should expose the container executing:
kubectl expose deploy sage --type=LoadBalancer --port=8080
You can get the public IP running kubectl get service
in the row sage
at the column EXTERNAL-IP