Kubernetesリソース割当(limit/request)

1975 ワード

概要
kubernetesはクラスタ管理プラットフォームであり、kubernetesは全体のプラットフォームの資源使用状況を統計し、合理的に資源を容器に分配し、容器のライフサイクル内に十分な資源が運行することを保証する必要がある.また、リソースの配布が独占的である場合、CPUなどの使用されていないリソースを空きコンテナに占有するのは非常に浪費される.k 8 sは、優先度と公平性を前提にリソースの利用率をどのように提供するかを考慮する必要がある.
リソースが有効にスケジューリングされ、割り当てられると同時にリソースの利用率が向上するように、k 8 sはrequestとlimitの2つの制限タイプを用いてリソースを割り当てる.
Limit/request制限タイプの説明
request
  • コンテナで使用される最小リソース要件は,コンテナスケジューリング時のリソース割り当ての判断に依存する.
  • 現在のノードに割り当てられるリソース量>=requestの場合にのみ、コンテナをノードにスケジュールできます.
  • requestパラメータコンテナの最大使用可能リソース
  • を制限しない
    limit
  • コンテナ使用可能リソースの最大値
  • が0に設定されていることは、使用するリソースに制限がないことを示し、
  • を無限に使用することができる.
    requestとlimitの関係
    requestはpodが実行するのに十分なリソースを保証することができるが、limitはあるpodの無制限な使用リソースを防止し、他のpodが崩壊することを防止する.両者の関係は次のように満たされる必要があります.
    0 <= request <= limit

    limit=0がリソースを制限しないことを示す場合、requestより小さくすることができます.
    現在、CPUはrequestとlimitの設定をサポートしており、memoryはrequestの設定のみをサポートしており、limitは強制的にrequestに等しくしなければならない.これにより、メモリの使用量がrequestを超えているがlimitを超えていない場合、コンテナが意外なkillに落ちないことを確保する.
    limit/request使用例
    ---
    apiVersion: apps/v1beta2
    kind: Deployment
    metadata:
     name: nginx
     namespace: php
     labels:
       app: nginx
    spec:
     revisionHistoryLimit: 10
     strategy:
       type: RollingUpdate
     selector:
       matchLabels:
         app: nginx
     template:
       metadata:
         labels:
           app: nginx
       spec:
         containers:
         - name: nginx
           image: nginx:latest
           ports:
           - containerPort: 80
             protocol: TCP
           resources:
             requests:
               cpu: 0.5
               memory: 1024Mi
             limits:
               cpu: 1
               memory: 2048Mi
    
    ---           
    apiVersion: autoscaling/v1
    kind: HorizontalPodAutoscaler
    metadata:
      name: nginx
      labels:
        app: nginx
    spec:
      scaleTargetRef:
        apiVersion: extensions/v1beta1
        kind: Deployment
        name: nginx
      minReplicas: 2
      maxReplicas: 4
      targetCPUUtilizationPercentage: 80

    リファレンス
  • Kubernetesリソース割当のRequestとLimit解析