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

-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


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


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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.