Argo wfでプリエンプティブを使っていると、この光景によく出くわします。この×
pod deleted
!!
Jobの実行中に突然rebootされます。
これが、本当に頭が痛い、、(>_<)
kubectl events
を見ても、rebootedだけ、、
こうなると、ベアメタルの情報を確認するしかありません。
Googleさんに聞いてみると
つまりこれはプリエンプティブル VMであり、GCE側で撃ち落とされ、GKEによって再構築されたということです。
30minも経過していないのに、、バッチに適してるって言ったじゃんΣ(゚д゚lll)ガーン
グチグチ言っていてもしかたないので、プリエンプティブを外しました。
何度もwfを実行した感じでは、短時間に終わるようなバッチなら、プリエンプティブでOKだと思います。
affinityで、振り分けるのは、必須だと思います。プリエンプティブを買えない場合もありますので。
これは、プリエンプティブに関する記事によくあるaffinity
ですね。
wf
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: cloud.google.com/gke-nodepool
operator: In
values:
- std4pe
- std4
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 100
preference:
matchExpressions:
- key: cloud.google.com/gke-nodepool
operator: In
values:
- std4pe
- weight: 1
preference:
matchExpressions:
- key: cloud.google.com/gke-nodepool
operator: In
values:
- std4
まとめ
30minとか、1hとか、かかるようなバッチには、向いてないかなー。
以上。
皆さんの参考になれば幸いです。