プリエンプティブ VM の使いどころ



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とか、かかるようなバッチには、向いてないかなー。

以上。
皆さんの参考になれば幸いです。