k8s集群修改pod中容器的时间
k8s集群 修改pod中容器的时间问题当需要测试某些功能时,需要修改系统时间,当进入pod的容器之后,执行date命令报错!!!root@world-106-5bb9785bd8-7rlmd:/app# date -s 23:50:00date: cannot set date: Operation not permittedThu 01 Apr 2021 11:50:00 PM CST原因k8s
·
k8s集群 修改pod中容器的时间
问题
当需要测试某些功能时,需要修改系统时间,当进入pod的容器之后,执行date命令报错!!!
root@world-106-5bb9785bd8-7rlmd:/app# date -s 23:50:00
date: cannot set date: Operation not permitted
Thu 01 Apr 2021 11:50:00 PM CST
原因
k8s集群底层的容器技术是基于docker(大部分)来实现的,而docker的安全隔离是基于Linux的Capaility机制实现的。Capaility机制将系统的权限划分成多个不同的小单元,通过启用或者禁用这些单元,来赋予或剥夺相应的权限。
而docker容器只用到了以下的Capability
╭─[16:29:44] yup@YP-7-15 ~
╰─$docker run -it centos capsh --print
Current: =
cap_chown
cap_dac_override
cap_fowner
cap_fsetid
cap_kill
cap_setgid
cap_setuid
cap_setpcap
cap_net_bind_service
cap_net_raw
cap_sys_chroot
cap_mknod
cap_audit_write
cap_setfcap+eip
而修改系统时间需要有SYS_TIME
权限,但docker容器默认没有,因此无法在pod的容器中修改时间
解决
为pod或容器配置安全性上下文(Security Context) 安全上下文设置的完整列表
在容器生成的模板文件中增加以下参数
# deploy.spec.template.spec.containers.securityContext
securityContext:
capabilities:
add:
- SYS_TIME
删除旧有的pod,利用新的模板生成pod,进行系统时间的修改,可以发现修改成功
root@world-106-5bb9785bd8-7rlmd:/app# date -s 23:50:00
Thu 01 Apr 2021 23:50:00 PM CST
注意
这样修改pod中容器的时间,会修改到宿主机的时间,可能会影响到该宿主机上面其他业务的运行。
更多推荐
已为社区贡献4条内容
所有评论(0)