Kubernetesでのコンテナリソース制限の仕組み
Sep 04 2020
ここの公式ドキュメントでは、pod.spec.container.resources.limitsは次のように定義されています。「制限は、許可されるコンピューティングリソースの最大量を表します。」
k8sは、ポッドが制限で指定されているよりも多くのリソースを消費することを禁止していることを理解しています。ドキュメントには、制限で指定されたリソースの量がないノードでポッドがスケジュールされていないとは記載されていません。
たとえば、クラスター内の各ノードに2つのCPUがあり、CPU制限を3に定義するポッドをデプロイしようとすると、ポッドは実行されず、ステータスになりますPending。
テンプレートの例を次に示します:mypod.yml
apiVersion: v1
kind: Pod
metadata:
name: secondbug
spec:
containers:
- name: container
image: nginx
resources:
limits:
cpu: 3
この動作は意図されたものであり、その理由は何ですか?
回答
3 paltaa Sep 04 2020 at 01:02
3種類のポッド、リクエスト定義のないポッド、制限とリクエストがあるバースト可能なポッド、制限またはリクエストのみが定義されている3番目の種類のポッドがあります。
3番目のケースでは、制限または要求のみを定義する場合、もう1つは、最初の1つが意味するものによって定義されます。
resources:
limits:
cpu: 3
実際には:
resources:
limits:
cpu: 3
requests:
cpu: 3
したがって、実際には、一方だけを他方なしで定義することはできません。したがって、あなたの場合、制限によって定義されないように、その要求を定義する必要があります。