为什么我不能将 POD 级别的 securityContext 设置配置为应用于所有底层容器?

Why cant I configure POD-level securityContext settings to be applied to all underlying Containers?

在我的 POD 中,我想将所有容器限制为只读文件系统 securityContext: readOnlyRootFilesystem: true
示例(注意:为简洁起见减少了 yaml)

apiVersion: v1
kind: Pod
metadata:      
  labels:
    run: server123
  name: server123
spec:
  securityContext:
    readOnlyRootFilesystem: true
  containers:
  - image: server1-image
    name: server1 
  - image: server2-image
    name: server2
  - image: server3-image
    name: server3

这将导致:

error: error validating "server123.yaml": error validating data: ValidationError(Pod.spec.securityContext): unknown field "readOnlyRootFilesystem" in io.k8s.api.core.v1.PodSecurityContext; if you choose to ignore these errors, turn validation off with --validate=false

相反,我必须配置为:

apiVersion: v1
    kind: Pod
    metadata:      
      labels:
        run: server123
      name: server123
    spec:
      containers:
      - image: server1-image
        name: server1
        securityContext:
          readOnlyRootFilesystem: true 
      - image: server2-image
        name: server2
        securityContext:
          readOnlyRootFilesystem: true
      - image: server3-image
        name: server3
        securityContext:
          readOnlyRootFilesystem: true

有没有办法为所有容器一次性设置此安全限制? 如果不是,为什么不呢?

在 Kubernetes 中,可以在 pod and/or 容器级别配置 securityContext, 容器会继承 pod 级设置,但可以自己覆盖。

pods 和容器的配置选项不重叠 - 您只能在每个级别设置特定的选项,
容器级别:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#securitycontext-v1-core
广告连播级别:https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.23/#podsecuritycontext-v1-core

它没有清楚地记录什么可以继承,什么不能继承(以及为什么!)。您必须通读两个列表并进行比较。 我假设 POD 的 securityContext 将允许 readOnlyRootFilesystem: true 和各种 capabilities,设置一次,不必在每个底层容器的securityContext中复制,但是PodSecurityContext不允许这样!

在(重新)配置各种工作负载以遵守 PodSecurityPolicies 时特别有用。

我想知道为什么 Pod 的 securityContext 配置被标记为这样,而不是 podSecurityContext,也就是它实际代表的意思。

此要求需要策略实施,这可以使用 pod 安全策略实现。 Please read here.

指定了专用的限制控制 - “需要使用只读根文件系统”

注意:这将是 deprecated v1.25.x 中的一项新技术。所以请做好计划。