サービスのQoS解決のKubernetes品質 - ポッドのリソース要求と制限がどのように設定するには?

QoSサービス品質は、の頭文字であるサービスの品質同時に、リソースのスケジューリングとリソース使用率の配分を効果的に達成改善するために、kubernetesQoSのを介してサービス管理ポッドの品質に異なるサービス品質(サービス品質)への期待。:ポッド、特定の2つの指標のサービスの質のためにCPU 和内存ノードのメモリが十分ではない場合、kubernetesは、予め設定に応じて異なるQoSクラスで配られます。

QoSはに分けることができるGuaranteed、Burstable 和 Best-Effort三つのカテゴリー、最も低い優先度の最も高いです。

保証(保証)

次の2つのレベルに属するポッド:

  • すべての容器やポッドのみがCPUとメモリの制限で提供されています
  • 全ての容器は、ポッドに設定され、CPUメモリ要求および制限、および単一容器内れるrequests==limits(0要求に等しくありません)

すべてのコンテナはポッドであり、唯一の制限を設定します。

containers:
  name: foo
    resources:
      limits:
        cpu: 10m
        memory: 1Gi
  name: bar
    resources:
      limits:
        cpu: 100m
        memory: 100Mi

すべてのコンテナは、ポッドと要求の制限、および単一の容器中に設定されていますrequests==limits

containers:
  name: foo
    resources:
      limits:
        cpu: 10m
        memory: 1Gi
      requests:
        cpu: 10m
        memory: 1Gi

  name: bar
    resources:
      limits:
        cpu: 100m
        memory: 100Mi
      requests:
        cpu: 100m
        memory: 100Mi

制限内でコンテナfooとbar要求リソースと等しく、ポッドのQoSレベルが属しますGuaranteed

バースト可能な(不安定な)

限り、コンテナは要求と制限セットのポッドがあるのと同じではありません、それは、ポッドのQoSのですBurstable

フー・コンテナは、リソースを指定し、コンテナバーが指定されていません。

containers:
  name: foo
    resources:
      limits:
        cpu: 10m
        memory: 1Gi
      requests:
        cpu: 10m
        memory: 1Gi

  name: bar

コンテナfooがメモリー制限を設定し、コンテナバーはCPUの制限を設定します。

containers:
  name: foo
    resources:
      limits:
        memory: 1Gi

  name: bar
    resources:
      limits:
        cpu: 100m

注:コンテナ要求が制限を指定せずに指定した場合、最大値の制限は、ノードをリソースに等しく、コンテナ指定された制限要求、同じ制限の要求を指定されていない場合。

ベストエフォート(ベストエフォート)

ポッドコンテナ内のすべてのリソースが制限に何の要求も設けられていない場合は、それは、ポッドのQoSのですBest-Effort

fooとbarのコンテナ船は、要求と制限を設定しないでください。

containers:
  name: foo
    resources:
  name: bar
    resources:

QoSに基づいて、資源回復戦略

スルーKubernetes cgroupに十分なリソースがある場合、QoSレベルを設定ポッドにkill低い優先順位ポッドを介して、実際の使用では、OOM端数値にOOMスコア範囲0〜1000。OOMスコア値は、OOM_ADJパラメータ算出を得ました。

GuaranteedOOM_ADJがために-998パラメータとなっレベルポッド、Best-Effortレベルポッド、OOM_ADJパラメータがために、1000年になるBurstable2から999からレベルポッド、OOM_ADJパラメータ値。

このようkubelet、ドッキングウィンドウとしてkuberntesの予備リソースについては、OOM_ADJパラメータは、それがOOMキル外ではないことを、-999になりました。OOMスコアから算出し、より大きな、高いOOM_ADJパラメータ、ポッドの優先順位が低いほど、リソースの競合が早くOOM_ADJパラメータのために、オフに殺すがある場合OOMのでkubernetes -999決してありオフ殺すために。

QoSのポッドは、順序でシーンを殺します

  • ベストエフォートポッド:システムは、すべてのメモリを使用する場合、タイプポッドがオフに殺すことが初めてとなります。
  • バースト可能なポッド:システムがメモリのすべてを使用し、キルは、ポッドのタイプは殺すだろうというとき、コンテナのないベストエフォート型はなることはできません。
  • 保証ポッド:システムがメモリのすべてを使用し、コンテナのないバースト可能とベストエフォート型で時間を殺すことはできません、ポッドのタイプは殺すでしょう。

QoSの提言

十分なリソースがあることができればQoSのポッドを入力するように設定されていますGuaranteedトラブルシューティングするために、サービスのパフォーマンスと安定性の計算リソースの、時間とコストの削減を変更します。あなたはより良いリソースの利用率を向上させたい場合は他の人がバースト可能なまたはベストエフォートに設定することができる重要度に基づいている間に、ビジネスサービスは、保証を設定することができます。

おすすめ

転載: www.cnblogs.com/weifeng1463/p/11244530.html