JavaScriptを有効にしてください

k8sのresource.limits.memoryで設定した値を取得する

 · 
    🏷️

k8sのresource.limits.memoryで設定した値を取得する

cgroupのファイルから取得する

以下はLinux環境の話になる。

k8sresource.limits.memoryで設定された値はdockerの--memoryオプションとして渡される。
この値は、/sys/fs/cgroup/memory/memory.limit_in_bytesファイルに保存されている。
下記コマンドでその内容を確認できる。

1
2
/ # cat /sys/fs/cgroup/memory/memory.limit_in_bytes
104857600

上記はresource.limits.memory100Miを指定した場合の値となる。

この辺りの話は下記に記載がある。
Specify hard limits on memory available to containers (-m, –memory)
Windows環境で取得したい方はこちらで確認して頂きたい。

resource.limits.memoryが未設定の場合

resource.limits.memory未設定の場合はそのマシンのビット上限値の値となるようだ。

1
2
/ # cat /sys/fs/cgroup/memory/memory.limit_in_bytes
9223372036854771712

64bit環境の場合は9223372036854771712となり16進数で7FFF FFFF FFFF F000となる。
4096単位となっているため下3桁は0になっている。

上限値が設定されていない場合はシステムメモリ上限を参照した方がよさそうだ。

実行環境

1
2
3
4
5
6
/ # cat /etc/alpine-release
3.14.0

~/$ kubectl version
Client Version: version.Info{Major:"1", Minor:"21", GitVersion:"v1.21.0", GitCommit:"cb303e613a121a29364f75cc67d3d580833a7479", GitTreeState:"clean", BuildDate:"2021-04-08T16:31:21Z", GoVersion:"go1.16.1", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"20", GitVersion:"v1.20.2", GitCommit:"faecb196815e248d3ecfb03c680a4507229c2a56", GitTreeState:"clean", BuildDate:"2021-01-13T13:20:00Z", GoVersion:"go1.15.5", Compiler:"gc", Platform:"linux/amd64"}

スポンサーリンク

共有

もふもふ
著者
もふもふ
プログラマ。汎用系→ゲームエンジニア→Webエンジニア→QAエンジニア