Kubernetes - como mapear parâmetros de linha de comando do docker run para a linha de comando do kubectl

5

Eu preciso executar este comando do Docker no Kubernetes:

docker run -p 8080:8080 sagemath/sagemath sage -notebook

Eu posso mapear tudo, exceto "-notebook" - alguém sabe como fazer isso?

Aqui está o que eu tenho até agora, e é claro que não funciona, já que "-notebook" não é traduzido corretamente para o kubectl:

kubectl run --image=sagemath/sagemath sage --port=8080 --type=LoadBalancer -notebook
    
por A br 17.01.2018 / 02:07

2 respostas

5

Quando você define as especificações do pod para o seu sábio, você pode definir o command e um args array, então, para você, seria como

command: sage
args:
- -notebook

para lançamento 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 executar com -- delimiter: kubectl run --image=sagemath/sagemath --port=8080 --type=LoadBalancer -- sage -notebook

    
por 17.01.2018 / 07:25
1

-- faz o truque. Isso significa que o 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 executando kubectl get service na linha sage na coluna EXTERNAL-IP

    
por 17.01.2018 / 13:34