imagefs与nodefs
kubelet可以对磁盘进行管控,但是只能对nodefs与imagefs这两个分区进行管控。其中
imagefs: docker安装目录所在的分区
nodefs: kubelet的启动参数
--root-dir所指定的目录(默认/var/lib/kubelet)所在的分区
接下来,我们来验证一下我们对imagefs与nodefs的理解。
前置条件
k8s集群使用1.8.6版本
$ kubectl get node
NAME STATUS ROLES AGE VERSION
10.142.232.161 Ready <none> 263d v1.8.6
10.142.232.162 NotReady <none> 263d v1.8.6
10.142.232.163 Ready,SchedulingDisabled <none> 227d v1.8.610.142.232.161上docker安装在/app/docker目录下,kubelet的--root-dir没有设置,使用默认的/var/lib/kubelet。/app是一块盘,使用率为70%;/是一块盘,使用率为57%;而imagesfs与nodefs此时设置的阈值都为80%,如下:
$ df -hT
文件系统 类型 容量 已用 可用 已用% 挂载点
devtmpfs devtmpfs 16G 0 16G 0% /dev
tmpfs tmpfs 16G 0 16G 0% /dev/shm
tmpfs tmpfs 16G 1.7G 15G 11% /run
tmpfs tmpfs 16G 0 16G 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 45G 26G 20G 57% /
/dev/xvda1 xfs 497M 254M 243M 52% /boot
/dev/xvde xfs 150G 105G 46G 70% /app此时,10.142.232.161该node没有报磁盘的错
验证方案
验证imagefs是
/app/docker目录所在分区(/app分区使用率为70%)修改imagefs的阈值为60%,node应该报imagefs超标
修改imagefs的阈值为80%,node应该正常
验证nodefs是
/var/lib/kubelet目录所在的分区(/分区使用率为57%)修改nodefs的阈值为50%,node应该报nodefs超标
修改nodefs的阈值为60%,node应该正常
修改kubelet启动参数
--root-dir,将值设成/app/kubelet修改让imagefs的阈值为80%,nodefs的阈值为60%;此时应该报nodefs超标
修改让imagefs的阈值为60%,nodefs的阈值为80%;此时应该报imagefs超标
修改让imagefs的阈值为60%,nodefs的阈值为60%;此时应该报两个都超标
修改让imagefs的阈值为80%,nodefs的阈值为80%;此时node应该正常
验证步骤
一、验证imagefs是/app/docker目录所在分区
1.1 修改imagefs的阈值为60%,node应该imagefs超标
如下,我们把imagefs的阈值设为60%
然后我们查看节点的状态,Attempting to reclaim imagefs,意思为尝试回收imagefs
1.2 修改imagefs的阈值为80%,node应该正常
我们把imagefs的阈值为80%
然后再来查看node的状态,NodeHasNoDiskPressure,说明imagefs使用率没有超过阈值了
二、验证nodefs是/var/lib/kubelet目录所在的分区(/分区使用率为57%)
2.1 修改nodefs的阈值为50%,node应该报nodefs超标
修改nodefs的阈值为50%
查看node的状态,报Attempting to reclaim nodefs,意思是尝试回收nodefs,也就是nodefs超标了
2.2 修改nodefs的阈值为60%,node应该正常
修改nodefs的阈值为60%
此时查看node的状态,已正常
三、修改kubelet启动参数--root-dir,将值设成/app/kubelet
以下几个参数的默认值都与/var/lib/kubelet有关
为了能够不再使用/var/lib/kubelet这个目录,我们需要对这四个参数显示设置。设置如下:
3.1 修改让imagefs的阈值为80%,nodefs的阈值为60%;此时应该报nodefs超标
查看节点的状态,只报Attempting to reclaim nodefs,也就是说nodefs超标
3.2 修改让imagefs的阈值为60%,nodefs的阈值为80%;此时应该报imagefs超标
我们查看node的状态,只报imagefs超标
3.3 修改让imagefs的阈值为60%,nodefs的阈值为60%;此时应该报两个都超标
我们查看node的状态,果然imagefs与nodefs都超标了
3.4 修改让imagefs的阈值为80%,nodefs的阈值为80%;此时node应该正常
我们查看node的状态,果然没有报imagefs与nodefs的错了
总结
1、nodefs是--root-dir目录所在分区,imagefs是docker安装目录所在的分区
2、建议nodefs与imagefs共用一个分区,但是这个分区要设置的大一些。
3、当nodefs与imagefs共用一个分区时,kubelet中的其他几个参数--root-dir、--cert-dir、--seccomp-profile-root、--kubeconfig也要显示地设置
Last updated
Was this helpful?