如何通过manifest清单正确启动特权模式Pod?配置排障
问题原因
特权模式配置不生效的核心原因是privileged字段放置位置错误。
该字段不属于Pod顶层spec的合法字段,你当前把它写在Pod根spec层级,Kubernetes会直接忽略这个无效配置,不会给容器授予特权权限。
注:你配置的
hostNetwork: true属于Pod spec层级的合法字段,这部分配置是可以正常生效的。
修正后的配置
将privileged: true移动到对应容器的securityContext配置块下即可,修正后的完整清单如下:
apiVersion: v1 kind: Pod metadata: name: ftp spec: hostNetwork: true containers: - name: ftp image: 84d3f7ba5876/ftp-run securityContext: privileged: true
额外排查项
如果调整配置后特权模式仍未生效,逐一检查以下集群配置:
- 确认节点kubelet未禁用特权容器,kubelet启动参数不能携带
--allow-privileged=false,默认发行版集群该参数值为true,部分安全加固集群会手动关闭该开关 - 若集群开启了Pod安全准入(PSA)或旧版Pod安全策略(PSP),需要确认Pod所在命名空间的安全策略允许特权容器运行:使用PSA的集群需要给命名空间打上
pod-security.kubernetes.io/enforce: privileged标签;使用PSP的集群需要给Pod绑定的ServiceAccount授予允许特权运行的PSP权限 - 配置生效验证:进入容器后执行
cat /proc/1/status | grep CapEff,如果输出的CapEff值为000001ffffffffff即代表特权模式正常生效。
内容的提问来源于stack exchange,提问作者Jose Matinez
相关产品推荐
相关产品推荐

