Wir verwenden die GCloud Kubernetes Engine für die Entwicklung von Algorithmen für maschinelles Lernen. Wir richten einen Cluster mit einem Pod für die Codeentwicklung ein und starten dann einen temporären Knotenpool mit 256 präemptiven Minions, um den Algorithmus an unserem Datensatz zu testen. Ein Entwickler meldet sich per SSH beim Entwicklungs-Pod an, bearbeitet den Code und führt dann einen Kubernetes-Job im Minion-Pool aus.
Das Problem ist, dass beim Erstellen des Minions-Knotenpools die Entwicklungs-Pods im Standardpool häufig (nicht immer) beendet und neu gestartet werden. Warum? Normalerweise dauert es etwa 3–5 Minuten, bis der Minion-Knotenpool gestartet wird. Es scheint, als müsste gcloud den Standard-Knotenpool aktualisieren, um den Minions-Knotenpool unterzubringen. Gibt es eine Möglichkeit, den Cluster vorab zuzuweisen, um den Neustart zu vermeiden oder die Startzeit für die Minions zu verkürzen?
Hier sind die Befehle, die ich verwende:
Erstellen Sie den ersten Cluster:
gcloud beta container clusters create $CLUSTER_NAME \ --machine-type=n1-highmem-4 \ --min-cpu-platform="Intel Sandy Bridge" \ --num-nodes=1 \ --enable-autoscaling \ --min-nodes=1 \ --max-nodes=4 \ --disk-size=50 \ --node-labels=algoalpha=control \ --scopes=cloud-platform,cloud-source-repos-ro
Cluster-Skript erstellen:https://gist.github.com/4590040f27f3cf17562baae5ae245b60
Erschaffe die Schergen
gcloud beta container node-pools create algoalpha-minions \ --cluster $CLUSTER_NAME \ --enable-autoscaling \ --num-nodes=$NUM_NODES \ --min-nodes=0 \ --max-nodes=$((NUM_NODES * 2)) \ --preemptible \ --machine-type=n1-highmem-16 \ --disk-size=20 \ --min-cpu-platform="Intel Sandy Bridge" \ --node-labels=algoalpha=minion \ --node-taints=cloud.google.com/gke-preemptible="true":NoSchedule
Minions-Skript erstellen:https://gist.github.com/1391658975d3a28444ac823233c334da
Gibt es eine bessere Möglichkeit, dies zu tun?