You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为RKE2安全策略添加Root Pod或特定命名空间例外?

解决方案:为单个命名空间开放Root运行权限(无需禁用全局安全策略)

完全可以不用禁用全局安全策略,只针对目标命名空间配置例外规则即可,具体操作分两种集群配置场景:


场景1:集群使用PodSecurity Admission(RKE2 v1.25+ / K8s 1.25+默认启用)

PodSecurity Admission通过命名空间标签管控Pod安全规则,privileged级别允许以Root身份运行Pod。只需给目标命名空间添加对应标签:

  1. 给目标命名空间打上特权级别的强制/警告/审计标签:
kubectl label namespace <你的命名空间名称> pod-security.kubernetes.io/enforce=privileged
kubectl label namespace <你的命名空间名称> pod-security.kubernetes.io/warn=privileged
kubectl label namespace <你的命名空间名称> pod-security.kubernetes.io/audit=privileged
  • enforce:强制应用privileged规则,允许该命名空间内的Pod以Root运行
  • warn:对不符合其他严格规则的Pod发出警告(可选但建议添加)
  • audit:记录不符合规则的Pod操作日志(可选但建议添加)
  1. 重新部署你的Pod,原有的securityContext配置无需修改:
securityContext:
  runAsUser: 0
  runAsGroup: 0

场景2:集群使用旧版PodSecurityPolicy(PSP,RKE2旧版本可能采用)

如果集群仍在使用已弃用的PSP,需创建允许Root运行的PSP并绑定到目标命名空间的ServiceAccount:

  1. 创建允许Root运行的PSP资源:
apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
  name: allow-root-psp
spec:
  privileged: false # 若无需特权模式保持false,需要则设为true
  allowPrivilegeEscalation: true
  runAsUser:
    rule: 'RunAsAny' # 允许任意用户(包括Root)
  runAsGroup:
    rule: 'RunAsAny'
  seLinux:
    rule: 'RunAsAny'
  supplementalGroups:
    rule: 'RunAsAny'
  fsGroup:
    rule: 'RunAsAny'
  volumes:
  - '*' # 可根据Pod实际需求限制卷类型,比如只允许configMap、emptyDir等

执行命令应用:

kubectl apply -f allow-root-psp.yaml
  1. 创建ClusterRole以授权使用该PSP:
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: psp:allow-root
rules:
- apiGroups: ['policy']
  resources: ['podsecuritypolicies']
  verbs: ['use']
  resourceNames: ['allow-root-psp']

执行命令应用:

kubectl apply -f psp-clusterrole.yaml
  1. 将ClusterRole绑定到目标命名空间的默认ServiceAccount(或Pod使用的特定ServiceAccount):
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: psp:allow-root-binding
  namespace: <你的命名空间名称>
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: psp:allow-root
subjects:
- kind: ServiceAccount
  name: default
  namespace: <你的命名空间名称>

执行命令应用:

kubectl apply -f psp-rolebinding.yaml

完成后,目标命名空间内的Pod即可正常以Root身份启动,其他命名空间仍受原有安全策略约束。


内容的提问来源于stack exchange,提问作者IT_User

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 06:53:35