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

command: sage notebook
args:

For such cases

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

--command=false If true and extra arguments are present, use them as the 'command' field in the container, rather than the 'args' field which is the default.

-notebook is not an argument to docker or kubectl, but to sage.

Yes - but how do I implement that in kubectl - that is the question. The docker command line above does work

The command you want to run goes at the end, just like before.