cgroupのファイルから取得する
以下はLinux環境の話になる。
k8s
のresource.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.memory
に100Mi
を指定した場合の値となる。
この辺りの話は下記に記載がある。
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"}
|