J'ai besoin d'exécuter cette commande Docker dans Kubernetes:
docker run -p 8080:8080 sagemath/sagemath sage -notebook
Je peux tout cartographier sauf "-notebook" - est-ce que quelqu'un sait comment faire ça?
Voici ce que j'ai jusqu'à présent, et bien sûr cela ne fonctionne pas car "-notebook" n'est pas traduit correctement en kubectl:
kubectl run --image=sagemath/sagemath sage --port=8080 --type=LoadBalancer -notebook
Lorsque vous définissez des spécifications de pod pour votre sauge, vous pouvez définir à la fois command
et un tableau args
, donc pour vous, ce serait comme
command: sage
args:
- -notebook
pour le lancement avec 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]
alors essayez de courir avec --
délimiteur: kubectl run --image=sagemath/sagemath --port=8080 --type=LoadBalancer -- sage -notebook
--
fait l'affaire. Cela signifie que kubectl n'analyserait pas en tant qu'arguments kubectl les chaînes suivantes commençant par -
Vous exécutez donc ce conteneur en exécutant:
kubectl run --image=sagemath/sagemath --port=8080 sage -- -notebook
Et si vous voulez une IP publique sur GKE, vous devez exposer l'exécution du conteneur:
kubectl expose deploy sage --type=LoadBalancer --port=8080
Vous pouvez obtenir l'adresse IP publique en cours d'exécution kubectl get service
dans la ligne sage
dans la colonne EXTERNAL-IP
command: sage notebook
args:
Pour de tels cas
k run --image=sagemath/sagemath --port=8080 --command=true -- sage notebook
--command = false Si des arguments vrais et supplémentaires sont présents, utilisez-les comme champ 'commande' dans le conteneur, plutôt que comme champ 'args' qui est le champ par défaut.