0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Kubernetes中級(2):Pod-QoS classes

Last updated at Posted at 2020-08-04
q1.png 上記の図のようにNodeのResourceにPodが3つあり、均等にリソースを使用している状態であると仮定する。 q2.png Pod1が追加でResourceが必要になった場合はどうなるか NodeにはResourceがないため、Pod1はResource不足でダウンになってしまうか、それともKubernetesが他のPodをダウンさせてPod1に必要なResourceを割り当てるか q3.png KubernetesはAppの重要度に応じてこの種の管理できるように3つの段階にQulity of Serviceをサポートしている。 q4.png この状態では、BestEffortに設定されたPodが一番最初にダウンされてResourceが返却され、Pod1は必要なResourceを使用できるようになる。 q5.png 次はNodeにある程度のResourceが残っているが、Pod2からそれよりも多くのResourceを必要とする場合、Burstableに設定されたPodが ダウンされてResourceが返却される。 Guaranteedが最後までPodを安全に維持させてくれるClassである。

QoSは特定のプロパティがあって設定するのはなく、ContainerにResource設定があり、ここでRequestsとLimitのMemoryとCPUをどのように設定するかによって決定される
q6.png
Guaranteedは、Podに複数のContainerがある場合、全てのContainerにRequestsとLimitの設定が必要である。
そしてRequestsとLimitのmemory、cpuも設定をする必要があり、各Containerに設定されたMemoryとcpuの値は、RequestsとLimitが同じではないといけない。
このルールに一致すると、KubernetesがこのPodをGuaranteed Classに判断をする。
q7.png
どのContainerにもRequestとLimitが設定されていない場合はBestEffortとして判断する。
q8.png
BurstableはGuaranteedとBestEffortの特徴を持っていると考えれば良い。
すべてのContainerにRequestとLimitが設定されているが、Requestの値が小さいか、Requestだけ設定がされており、Limitは設定されていない場合、またはPodのContainerが2つなのに一つは、完全に設定されているが、他の1つが設定されていない場合はすべてBurstable Classになる。
このように3つのClassは、ContainerのRequestとLimitをどのように設定するかによって決定される。
q9.png
Burstableに設定された複数Podの中でどのPodが最初に削除されるかと言うとOOM(Out Of Memory)Scoreによって決定される。
上の図の2つのPodのRequest Memoryが5Gと8Gに設定されているが、Appが実際に使っているMemoryが同じ4GだとするとPod2のMemory使用量は75%であり、Pod3は50%である。
OOM ScoreがPod2が75%で大きいので、KubernetesはPod2を最初に削除する。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?