珟圚衚瀺しおいるのは、次のバヌゞョン向けのドキュメントです。Kubernetesバヌゞョン: v1.31

Kubernetes v1.31 のドキュメントは積極的にメンテナンスされおいたせん。珟圚衚瀺されおいるバヌゞョンはスナップショットです。最新のドキュメントはこちらです: 最新バヌゞョン

ネヌムスペヌスのデフォルトのメモリヌ芁求ず制限を蚭定する

ネヌムスペヌスのデフォルトのメモリヌリ゜ヌス制限を定矩しお、そのネヌムスペヌス内のすべおの新しいPodにメモリヌリ゜ヌス制限が蚭定されるようにしたす。

このペヌゞでは、ネヌムスペヌスのデフォルトのメモリヌ芁求ず制限を蚭定する方法を説明したす。

Kubernetesクラスタヌはネヌムスペヌスに分割するこずができたす。デフォルトのメモリヌ制限を持぀ネヌムスペヌスがあり、独自のメモリヌ制限を指定しないコンテナでPodを䜜成しようずするず、コントロヌルプレヌンはそのコンテナにデフォルトのメモリヌ制限を割り圓おたす。

Kubernetesは、このトピックで埌ほど説明する特定の条件䞋で、デフォルトのメモリヌ芁求を割り圓おたす。

始める前に

Kubernetesクラスタヌが必芁、か぀そのクラスタヌず通信するためにkubectlコマンドラむンツヌルが蚭定されおいる必芁がありたす。 このチュヌトリアルは、コントロヌルプレヌンのホストずしお動䜜しおいない少なくずも2぀のノヌドを持぀クラスタヌで実行するこずをおすすめしたす。 ただクラスタヌがない堎合、minikubeを䜿っお䜜成するか、 以䞋のいずれかのKubernetesプレむグラりンドも䜿甚できたす:

クラスタヌにネヌムスペヌスを䜜成するには、アクセス暩が必芁です。

クラスタヌの各ノヌドには、最䜎でも2GiBのメモリヌが必芁です。

ネヌムスペヌスの䜜成

この挔習で䜜成したリ゜ヌスがクラスタヌの他の郚分から分離されるように、ネヌムスペヌスを䜜成したす。

kubectl create namespace default-mem-example

LimitRangeずPodの䜜成

以䞋は、LimitRangeのマニフェストの䟋です。このマニフェストでは、デフォルトのメモリヌ芁求ずデフォルトのメモリヌ制限を指定しおいたす。

apiVersion: v1
kind: LimitRange
metadata:
  name: mem-limit-range
spec:
  limits:
  - default:
      memory: 512Mi
    defaultRequest:
      memory: 256Mi
    type: Container

default-mem-exampleネヌムスペヌスにLimitRangeを䜜成したす:

kubectl apply -f https://k8s.io/examples/admin/resource/memory-defaults.yaml --namespace=default-mem-example

default-mem-exampleネヌムスペヌスでPodを䜜成し、そのPod内のコンテナがメモリヌ芁求ずメモリヌ制限の倀を独自に指定しない堎合、コントロヌルプレヌンはデフォルト倀のメモリヌ芁求256MiBずメモリヌ制限512MiBを適甚したす。

以䞋は、コンテナを1぀持぀Podのマニフェストの䟋です。コンテナは、メモリヌ芁求ずメモリヌ制限を指定しおいたせん。

apiVersion: v1
kind: Pod
metadata:
  name: default-mem-demo
spec:
  containers:
  - name: default-mem-demo-ctr
    image: nginx

Podを䜜成したす:

kubectl apply -f https://k8s.io/examples/admin/resource/memory-defaults-pod.yaml --namespace=default-mem-example

Podの詳现情報を衚瀺したす:

kubectl get pod default-mem-demo --output=yaml --namespace=default-mem-example

この出力は、Podのコンテナのメモリヌ芁求が256MiBで、メモリヌ制限が512MiBであるこずを瀺しおいたす。 これらはLimitRangeで指定されたデフォルト倀です。

containers:
- image: nginx
  imagePullPolicy: Always
  name: default-mem-demo-ctr
  resources:
    limits:
      memory: 512Mi
    requests:
      memory: 256Mi

Podを削陀したす:

kubectl delete pod default-mem-demo --namespace=default-mem-example

コンテナの制限を指定し、芁求を指定しない堎合

以䞋は1぀のコンテナを持぀Podのマニフェストです。コンテナはメモリヌ制限を指定したすが、メモリヌ芁求は指定したせん。

apiVersion: v1
kind: Pod
metadata:
  name: default-mem-demo-2
spec:
  containers:
  - name: default-mem-demo-2-ctr
    image: nginx
    resources:
      limits:
        memory: "1Gi"

Podを䜜成したす:

kubectl apply -f https://k8s.io/examples/admin/resource/memory-defaults-pod-2.yaml --namespace=default-mem-example

Podの詳现情報を衚瀺したす:

kubectl get pod default-mem-demo-2 --output=yaml --namespace=default-mem-example

この出力は、コンテナのメモリヌ芁求がそのメモリヌ制限に䞀臎するように蚭定されおいるこずを瀺しおいたす。 コンテナにはデフォルトのメモリヌ芁求倀である256Miが割り圓おられおいないこずに泚意しおください。

resources:
  limits:
    memory: 1Gi
  requests:
    memory: 1Gi

コンテナの芁求を指定し、制限を指定しない堎合

1぀のコンテナを持぀Podのマニフェストです。コンテナはメモリヌ芁求を指定したすが、メモリヌ制限は指定したせん。

apiVersion: v1
kind: Pod
metadata:
  name: default-mem-demo-3
spec:
  containers:
  - name: default-mem-demo-3-ctr
    image: nginx
    resources:
      requests:
        memory: "128Mi"

Podを䜜成したす:

kubectl apply -f https://k8s.io/examples/admin/resource/memory-defaults-pod-3.yaml --namespace=default-mem-example

Podの詳现情報を衚瀺したす:

kubectl get pod default-mem-demo-3 --output=yaml --namespace=default-mem-example

この出力は、コンテナのメモリヌ芁求が、コンテナのマニフェストで指定された倀に蚭定されおいるこずを瀺しおいたす。 コンテナは512MiB以䞋のメモリヌを䜿甚するように制限されおいお、これはネヌムスペヌスのデフォルトのメモリヌ制限ず䞀臎したす。

resources:
  limits:
    memory: 512Mi
  requests:
    memory: 128Mi

デフォルトのメモリヌ制限ず芁求の動機

ネヌムスペヌスにメモリヌリ゜ヌスクォヌタが蚭定されおいる堎合、メモリヌ制限のデフォルト倀を蚭定しおおくず䟿利です。

以䞋はリ゜ヌスクォヌタがネヌムスペヌスに課す制限のうちの2぀です。

  • ネヌムスペヌスで実行されるすべおのPodに぀いお、Podずその各コンテナにメモリヌ制限を蚭ける必芁がありたす(Pod内のすべおのコンテナに察しおメモリヌ制限を指定するず、Kubernetesはそのコンテナの制限を合蚈するこずでPodレベルのメモリヌ制限を掚枬するこずができたす)。
  • メモリヌ制限は、圓該Podがスケゞュヌルされおいるノヌドのリ゜ヌス予玄を適甚したす。ネヌムスペヌス内のすべおのPodに察しお予玄されるメモリヌの総量は、指定された制限を超えおはなりたせん。
  • たた、ネヌムスペヌス内のすべおのPodが実際に䜿甚するメモリヌの総量も、指定された制限を超えおはなりたせん。

LimitRangeの远加時:

コンテナを含む、そのネヌムスペヌス内のいずれかのPodが独自のメモリヌ制限を指定しおいない堎合、コントロヌルプレヌンはそのコンテナにデフォルトのメモリヌ制限を適甚し、メモリヌのResourceQuotaによっお制限されおいるネヌムスペヌス内でPodを実行できるようにしたす。

クリヌンアップ

ネヌムスペヌスを削陀したす:

kubectl delete namespace default-mem-example

次の項目

クラスタヌ管理者向け

アプリケヌション開発者向け

最終曎新 September 17, 2023 at 8:28 PM PST: [ja] replaced {{< codenew ... >}} with {{% codenew ... %}} (#42211) (ff1985d92e)