リソースクォータとリミットレンジ
namespace 単位の ResourceQuotas と Pod 単位の LimitRanges を適用し、ノイジーネイバー問題や暴走するワークロードを防ぎます。
「リソースクォータとリミットレンジ」はCoddyKit上の無料Kubernetes Basicsレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはKubernetes Basics学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Kubernetes Basicsコースには全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 8GiLimitRange とは
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 チューターと学ぶ Kubernetes Basics — 無料
ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。
- コース
- 12
- レッスン
- 48
よくある質問
「リソースクォータとリミットレンジ」レッスンは無料ですか?
はい。「リソースクォータとリミットレンジ」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Kubernetes Basicsコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Kubernetes Basicsコースには全4レッスンが含まれています。
「リソースクォータとリミットレンジ」で何を学びますか?
namespace 単位の ResourceQuotas と Pod 単位の LimitRanges を適用し、ノイジーネイバー問題や暴走するワークロードを防ぎます。 ブラウザで直接実行するハンズオンコードでKubernetes Basicsを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Kubernetes Basicsを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのKubernetes Basicsは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「リソースクォータとリミットレンジ」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このKubernetes Basicsレッスンでコードを書いて実行できますか?
はい。すべてのKubernetes Basicsレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- よくある問題の診断
- PodとServiceのデバッグ
- 本番環境のベストプラクティスとヒント
- リソースクォータとリミットレンジ