Pod

1つ以上のコンテナを内包する、ワークロードの基本単位。

See also Container

スケジューリング

Node上へのPodのスケジューリング - Kubernetes

NOTE:

  • Podが起動できない理由:
    • OutOfMemory, OutOfCpu … Nodeのリソースが足りない

Affinity

参考:

TaintsとTolerations

Taints and Tolerations - Kubernetes

KubernetesのTaintsとTolerationsについて - Qiitaより:

Node SelectorやNode Affinityが特定のノードに特定のPodをスケジュールするための仕組みに対し、TaintsとTolerationsは特定のノードにPodをスケジュールしないための仕組み

例えば、次のコマンドでノードに対してtaintを設定する:

# taintの設定
kubectl taint nodes node1 key=value:NoSchedule

# 上のtaintを削除するコマンド
kubectl taint nodes node1 key:NoSchedule-

このtaintがつけられたノードにPodをスケジュールするには、下のいずれかのtolerationを設定する必要がある:

# ①
tolerations:
- key: "key"
  operator: "Equal"
  value: "value"
  effect: "NoSchedule"

# ②
tolerations:
- key: "key"
  operator: "Exists"
  effect: "NoSchedule"

ライフサイクル

Podのライフサイクル - Kubernetes

See also Container#lifecycle-hooks

Podの終了

https://kubernetes.io/docs/concepts/workloads/pods/pod/#termination-of-pods

参考:

Topics

CrashLoopBackOff

発生条件:

  • memory limits以上を使おうとしてOOMで殺され、繰り返し再起動されるとき
    • 再起動間隔はexponential backoffで延びる

参考:

Pod Eviction

See Concept#pod-eviction