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

Kubernetes中使用PSA替代PSP时,如何定义Allowed Capabilities?

PSA替代PSP允许特定Capabilities的最简方案

PSA(Pod Security Admission)的内置Pod Security Standards(PSS)是固定权限模板,Restricted级别默认禁止添加额外capabilities。要给Sidecar容器开放NET_ADMIN和NET_RAW权限,最简方式是使用PSA的豁免机制,以下是两种常用实现方式:

方式一:针对特定ServiceAccount豁免(推荐)

如果你的Sidecar容器绑定了专用ServiceAccount,可通过给命名空间添加豁免标签,允许该SA创建的Pod使用指定capabilities:

给目标命名空间添加标签(替换占位符为实际值):

kubectl label ns <你的命名空间> \
  pod-security.kubernetes.io/enforce=restricted \
  pod-security.kubernetes.io/enforce-version=latest \
  pod-security.kubernetes.io/allowed-capabilities=NET_ADMIN,NET_RAW \
  pod-security.kubernetes.io/exempt-serviceaccounts=<sidecar专用SA名称>

说明:

  • allowed-capabilities:指定允许的额外capabilities,多个值用逗号分隔
  • exempt-serviceaccounts:指定豁免权限检查的ServiceAccount名称,多个值用逗号分隔
  • 绑定该SA的Sidecar容器,即可在Pod定义中添加securityContext.capabilities.add: ["NET_ADMIN", "NET_RAW"]

方式二:针对单个Pod/Deployment豁免

如果仅需给特定Pod开放权限,可在Pod或Deployment的Pod模板中添加annotation:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: your-app
spec:
  template:
    metadata:
      annotations:
        pod-security.kubernetes.io/enforce: restricted
        pod-security.kubernetes.io/enforce-version: latest
        pod-security.kubernetes.io/allowed-capabilities: NET_ADMIN,NET_RAW
    spec:
      containers:
      - name: your-sidecar
        image: your-sidecar-image
        securityContext:
          capabilities:
            add: ["NET_ADMIN", "NET_RAW"]
      # 其他容器配置...

说明:

  • 该annotation仅对当前Pod生效,适合临时场景或特定应用的Sidecar需求

补充:更精细的控制

如果需要限制只有Sidecar容器(而非整个Pod)能使用这些capabilities,OPA Gatekeeper等自定义准入控制器可实现更细粒度规则,但上述豁免机制是满足需求的最简方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 05:12:41