Quinn
April 28, 2022, 6:38pm
#1
Preciso executar este comando Docker no Kubernetes:
docker run -p 8080:8080 sagemath/sagemath sage -notebook
Posso mapear tudo, exceto "- notebook " - alguém sabe como fazer isso?
Aqui está o que tenho até agora e, claro, não funciona, pois "- notebook " não é traduzido para kubectl corretamente:
kubectl run --image=sagemath/sagemath sage --port=8080 --type=LoadBalancer -notebook
Quando você define as especificações do pod para o seu sage, você pode definir as duas command
e um args
array, então para você seria como
command: sageargs:- -notebook
para lançar com 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]
então tente correr com --
delimitador : kubectl run --image=sagemath/sagemath --port=8080 --type=LoadBalancer -- sage -notebook
Ray
April 28, 2022, 6:48pm
#3
--
faz o truque. Isso significa que kubectl não analisaria como argumentos kubectl as seguintes strings que começam com -
Então você executa esse contêiner executando:
kubectl run --image=sagemath/sagemath --port=8080 sage -- -notebook
E se você quiser um IP público no GKE, exponha o contêiner em execução:
kubectl expose deploy sage --type=LoadBalancer --port=8080
Você pode obter o IP público em execução kubectl get service
na linha sage
na coluna externo-IP
command: sage notebookargs:
Para tais casos
k run --image=sagemath/sagemath --port=8080 --command=true -- sage notebook
-- command = falseIf argumentos verdadeiros e Extras estão presentes, use-os como o campo 'command' no contêiner, em vez do campo 'args' que é o padrão.
Ollie
April 28, 2022, 6:57pm
#5
'- notebooknão é um argumento para docker ou kubectl, mas para
sage`.
Sim-mas como faço para implementar isso no kubectl - essa é a questão. A linha de comando docker acima funciona
Skylar
April 28, 2022, 7:06pm
#7
O comando que você deseja executar vai no final, assim como antes.