我們使用 gcloud kubernetes 引擎進行機器學習演算法開發。我們設定了一個包含一個 pod 的叢集來進行程式碼開發,然後啟動一個包含 256 個可搶佔式 Minion 的臨時節點池,以在我們的資料集上測試演算法。開發人員透過 ssh 進入開發 Pod,編輯程式碼,然後在 Minion 池上執行 kuberenetes 作業。
問題是,當我們創建 Minions 節點池時,預設池中的開發 Pod 經常(並非總是)被殺死並重新啟動。為什麼? Minion節點池啟動通常需要3-5分鐘左右。看來 gcloud 必須升級預設節點池才能容納 minions 節點池。有沒有辦法預先分配叢集以避免重啟,或減少minions的啟動時間?
這是我正在使用的命令:
建立初始叢集:
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
建立叢集腳本:https://gist.github.com/4590040f27f3cf17562baae5ae245b60
創建小小兵
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腳本:https://gist.github.com/1391658975d3a28444ac823233c334da
有一個更好的方法嗎?