Kubernetes - Zuordnen von Docker-Befehlszeilenparametern zur Kubectl-Befehlszeile

8

Ich muss diesen Docker-Befehl in Kubernetes ausführen:

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

Ich kann alles außer "-notebook" abbilden - weiß jemand, wie das geht?

Folgendes habe ich bisher und natürlich funktioniert es nicht, da "-notebook" nicht korrekt in kubectl übersetzt wurde:

kubectl run --image=sagemath/sagemath sage --port=8080 --type=LoadBalancer -notebook
A br
quelle
-notebookist kein Argument für Docker oder Kubectl, sondern für sage.
Michael Hampton
Ja - aber wie implementiere ich das in kubectl - das ist die Frage. Die Docker-Befehlszeile oben funktioniert
A br
Der Befehl, den Sie ausführen möchten, wird wie zuvor am Ende ausgeführt.
Michael Hampton

Antworten:

7

Wenn Sie die Pod-Spezifikation für Ihren Weisen definieren, können Sie sowohl commandein argsArray als auch ein Array definieren

command: sage
args:
- -notebook

zum Starten mit 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]

Versuchen Sie also, mit einem --Trennzeichen zu arbeiten:kubectl run --image=sagemath/sagemath --port=8080 --type=LoadBalancer -- sage -notebook

Radek 'Goblin' Pieczonka
quelle
Vielen Dank. Bedeutet dies, dass ich es nicht nur über die Befehlszeile tun kann (muss die Pod-Spezifikation erstellen)?
A br
aktualisiert mit runReferenz
Radek 'Goblin' Pieczonka
1

--macht den Trick. Dies bedeutet, dass kubectl die folgenden Zeichenfolgen, die mit beginnen, nicht als kubectl-Argumente analysieren würde-

Sie führen also diesen Container aus und führen Folgendes aus:

kubectl run --image=sagemath/sagemath --port=8080 sage -- -notebook

Und wenn Sie eine öffentliche IP für GKE möchten, sollten Sie den Container verfügbar machen, der Folgendes ausführt:

kubectl expose deploy sage --type=LoadBalancer --port=8080

Sie können die öffentliche IP kubectl get servicein der Zeile sagein der Spalte EXTERNAL-IP ausführen

Gabriel Miretti alias Gmiretti
quelle
0
command: sage notebook
args:

Für solche Fälle

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

--command = false Wenn true und zusätzliche Argumente vorhanden sind, verwenden Sie diese als Befehlsfeld im Container und nicht als Standardfeld args.

Blaue Wolken
quelle