k8s部署es的时候需要初始化很多linux的内核参数。 但是文件系统挂载到pod容器中就会变成read-only,难以进行操作实现需求。
所以需要给POD privileged权限,然后在容器的初始化脚本或代码中去修改sysctl参数。
创建POD/deployment/daemonset等对象时,
给容器的spec指定securityContext.privileged=true即可
设置到containers同级即可
securityContext: privileged: true
如果是docker设置特权的话比较简单,只是需要在起docker容器的时候加一个--privileged参数
docker run -it --privileged centos:latest bash
那么docker和k8s都使用privileged起的容器内部是有差别的
k8s privileged 起的容器里
mount|grep sys sysfs on /sys type sysfs (ro,nosuid,nodev,noexec,relatime,seclabel)
/sys是ro只读的
docker privileged 起的容器里
mount|grep sys sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime,seclabel)
/sys是rw可读可写