当前位置: 首页 > 知识库问答 >
问题:

集群或命名空间级别的Kubernetes pod限制

公良俊楚
2023-03-14

我需要在集群级或命名空间级(尽可能)配置以下限制:

  • 不允许运行pod作为previldged
  • 不允许pod作为uid 0运行
  • 不允许任何吊舱使用主机网络命名空间

Kubernetes 1.12,带RBAC

共有1个答案

笪烨
2023-03-14

在文档中找到一个示例策略:

apiVersion: policy/v1beta1
kind: PodSecurityPolicy
metadata:
  name: restricted
  annotations:
    seccomp.security.alpha.kubernetes.io/allowedProfileNames: 'docker/default'
    apparmor.security.beta.kubernetes.io/allowedProfileNames: 'runtime/default'
    seccomp.security.alpha.kubernetes.io/defaultProfileName:  'docker/default'
    apparmor.security.beta.kubernetes.io/defaultProfileName:  'runtime/default'
spec:
  privileged: false
  # Required to prevent escalations to root.
  allowPrivilegeEscalation: false
  # This is redundant with non-root + disallow privilege escalation,
  # but we can provide it for defense in depth.
  requiredDropCapabilities:
    - ALL
  # Allow core volume types.
  volumes:
    - 'configMap'
    - 'emptyDir'
    - 'projected'
    - 'secret'
    - 'downwardAPI'
    # Assume that persistentVolumes set up by the cluster admin are safe to use.
    - 'persistentVolumeClaim'
  hostNetwork: false
  hostIPC: false
  hostPID: false
  runAsUser:
    # Require the container to run without root privileges.
    rule: 'MustRunAsNonRoot'
  seLinux:
    # This policy assumes the nodes are using AppArmor rather than SELinux.
    rule: 'RunAsAny'
  supplementalGroups:
    rule: 'MustRunAs'
    ranges:
      # Forbid adding the root group.
      - min: 1
        max: 65535
  fsGroup:
    rule: 'MustRunAs'
    ranges:
      # Forbid adding the root group.
      - min: 1
        max: 65535
  readOnlyRootFilesystem: false
 类似资料:
  • 我们使用的是 K8s 集群,但我们没有集群级别的权限,因此我们只能在命名空间上创建 和 ,并且只需要在命名空间中安装服务网格解决方案(Istio 或 Linkerd)。 我们的运营团队将同意为我们在集群上应用CRDs,因此该部分得到了处理,但是我们不能请求集群管理权限来设置服务网格解决方案。 我们认为,如果我们在 Helm 图表上将所有 s 和 s 更改为 s 和 s,那么应该可以做到这一点。 所

  • 问题内容: 当我们在docker容器内创建新进程时,如何区分pid容器的pid 1,17和主机的1,17 etc pid,以及所有内核更改都在发生? 如何在主机中看到docker内部的进程? 问题答案: 如何用主机的1,17区分docker容器的pid 1,17等 默认情况下,这些pid位于不同的命名空间中。 从发行10080和开始,容器pid可以保留在主机的pid名称空间中。 还有一个问题101

  • 问题内容: 我正在研究nodejs / socket.io的实时聊天,并且需要一些有关实施会议室的建议。 使用名称空间或使用房间功能来完全隔离颤抖的对方,哪个更好? 房间和名称空间之间真正的技术区别是什么? 资源使用方面有区别吗? 问题答案: 这是名称空间和房间 的共同点 (socket.io v0.9.8-请注意,v1.0涉及完整的重写,因此情况可能有所更改): 命名空间(io.of(’/ ns

  • 我有一个单节点K8s集群细分为几个命名空间,每个命名空间都有许多POD。来自一个命名空间的POD如何与不同命名空间中的另一个POD通信?我知道我可以有一个ClusterIP服务并向其公开部署,因此来自同一集群的其他POD可以通过该服务访问POD应用程序。来自不同命名空间的POD可以使用相同的ClusterIP服务来访问POD应用程序吗?另一个问题是,来自不同命名空间的POD是否可能共享相同的子网?

  • 为什么using指令在包含在匿名命名空间中时表现得好像出现在全局范围?

  • 关于术语的一点说明: 请务必注意一点,TypeScript 1.5里术语名已经发生了变化。 “内部模块”现在称做“命名空间”。 “外部模块”现在则简称为“模块”,这是为了与ECMAScript 2015里的术语保持一致,(也就是说 module X { 相当于现在推荐的写法 namespace X {)。 这篇文章描述了如何在TypeScript里使用命名空间(之前叫做“内部模块”)来组织你的代码