DevOps Bootcamp · レッスン

リソースクォータとリミットレンジ

namespace 単位の ResourceQuotas と Pod 単位の LimitRanges を適用し、ノイジーネイバー問題や暴走するワークロードを防ぎます。

レッスン 4/413 ステップ

「リソースクォータとリミットレンジ」はCoddyKit上の無料DevOps Bootcampレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDevOps Bootcamp学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 DevOps Bootcampコースには全4レッスンが含まれています。

共有クラスターのガードレール

共有クラスターでは、1つのチームが誤ってすべてのリソースを使い切る可能性があります。ResourceQuotasとLimitRangesは、名前空間間の公平性を保ち、障害を防ぐためのガードレールです。

ResourceQuotaとは

ResourceQuotaは、名前空間が消費できるリソースの合計量に上限を設けます。CPU、メモリ、PodやServiceなどのオブジェクト数が対象です。

コンピュートクォータ

このクォータは、名前空間内のすべてのPodにおけるrequestsとlimitsの合計を制限します。

apiVersion: v1
kind: ResourceQuota
metadata:
  name: team-compute
  namespace: team-a
spec:
  hard:
    requests.cpu: '4'
    requests.memory: 8Gi
    limits.cpu: '8'
    limits.memory: 16Gi

オブジェクト数のクォータ

クォータでは、各オブジェクト種別の数にも上限を設定できるため、意図しない増加を防止できます。

spec:
  hard:
    pods: '20'
    services: '5'
    persistentvolumeclaims: '10'

クォータ適用のルール

コンピュートリソースに対して ResourceQuota が設定されている場合、すべての Pod で requests と limits を必ず宣言する必要があります。宣言しない Pod は拒否されます。クォータでは、上限のない Pod を計上できないためです。

クォータの使用量を確認する

クォータが現時点でどの程度使用されているかを確認します。

kubectl describe resourcequota team-compute -n team-a
# Resource         Used  Hard
# requests.cpu     2     4
# requests.memory  3Gi   8Gi

LimitRange とは

LimitRange は、namespace 内でオブジェクトごとのデフォルト値と範囲を適用します。そのため、開発者が値の設定を忘れた場合でも、個々の Pod に制約を適用できます。

デフォルト値と範囲

LimitRange では、コンテナごとに requests/limits のデフォルト値を設定し、最小値と最大値を適用できます。

apiVersion: v1
kind: LimitRange
metadata:
  name: container-limits
  namespace: team-a
spec:
  limits:
  - type: Container
    default:
      cpu: 500m
      memory: 256Mi
    defaultRequest:
      cpu: 250m
      memory: 128Mi
    max:
      cpu: '2'
      memory: 1Gi

連携方法

LimitRange が各コンテナのデフォルト値を補完し、その後 ResourceQuota がすべての値を合計して namespace の上限と照合します。これらを組み合わせることで、各 Pod に適切なサイズを設定し、namespace 全体の合計も公平に管理できます。

拒否された場合のトラブルシューティング

Pod が拒否された場合、エラーには違反したポリシーが示されます。内容を注意深く確認してください。クォータを超過したのか、LimitRange の範囲に違反したのかが記載されています。

# exceeded quota: team-compute, requested: requests.cpu=2, used: 3, limited: 4
# maximum cpu usage per Container is 2, but limit is 4

本番環境でのヒント

  • requests の設定忘れでクォータ違反が起きないように LimitRange を設定します
  • 急激な増加に備えた余裕を持たせ、実際の使用量を基準にクォータを設定します
  • 使用量を定期的に確認し、チームの成長に合わせて調整します

理解度チェック

namespace のガードレールについての理解度を確認します。

まとめ

ResourceQuotas(namespace 全体に適用するコンピュートリソースとオブジェクト数の上限)と LimitRanges(コンテナごとのデフォルト値と範囲)を使って、公平性を適用する方法を学びました。これらを組み合わせることで、ノイジーネイバー問題を防ぎ、共有クラスターを安定させられます。これは本番環境における重要なベストプラクティスです。

無料で開始

AI チューターと学ぶ DevOps Bootcamp — 無料

ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。

コース
142
レッスン
568

よくある質問

「リソースクォータとリミットレンジ」レッスンは無料ですか?

はい。「リソースクォータとリミットレンジ」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、DevOps Bootcampコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 DevOps Bootcampコースには全4レッスンが含まれています。

「リソースクォータとリミットレンジ」で何を学びますか?

namespace 単位の ResourceQuotas と Pod 単位の LimitRanges を適用し、ノイジーネイバー問題や暴走するワークロードを防ぎます。 ブラウザで直接実行するハンズオンコードでDevOps Bootcampを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

DevOps Bootcampを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのDevOps Bootcampは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。

「リソースクォータとリミットレンジ」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このDevOps Bootcampレッスンでコードを書いて実行できますか?

はい。すべてのDevOps Bootcampレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. よくある問題の診断
  2. PodとServiceのデバッグ
  3. 本番環境のベストプラクティスとヒント
  4. リソースクォータとリミットレンジ
← DevOps Bootcampに戻る