容器的定义中包含 securityContext 字段,该字段接受 SecurityContext(opens new window)对象。通过指定该字段,可以为容器设定安全相关的配置,当该字段的配置与 Pod 级别的 securityContext 配置相冲突时,容器级别的配置将覆盖 Pod 级别的配置。容器级别的 securityContext 不影响 Pod 中的数据卷。

    下面的示例中的 Pod 包含一个 Container,且 Pod 和 Container 都有定义 securityContext 字段:

    1. apiVersion: v1
    2. kind: Pod
    3. metadata:
    4. name: security-context-demo-2
    5. spec:
    6. securityContext:
    7. runAsUser: 1000
    8. containers:
    9. - name: sec-ctx-demo-2
    10. image: busybox
    11. command: [ "sh", "-c", "sleep 1h" ]
    12. securityContext:
    13. runAsUser: 2000
    14. allowPrivilegeEscalation: false
    1. - 执行命令以验证容器已运行
    2. ```bash
    3. kubectl get pod security-context-demo-2
    • 执行命令进入容器的命令行界面: ```bash kubectl exec -it security-context-demo-2 — sh
    1. - 在命令行界面中查看所有的进程
    2. ```bash
    3. ps aux

    请注意,容器的进程以 userID 2000 的身份运行。该取值由 spec.containers[*].securityContext.runAsUser 容器组中的字段定义。Pod 中定义的 spec.securityContext.runAsUser 取值 1000 被覆盖。输出结果如下所示:

    1. PID USER TIME COMMAND
    2. 1 2000 0:00 sleep 1h
    3. 6 2000 0:00 sh
    4. 11 2000 0:00 ps aux
    5. ...
    • 执行命令 exit 退出命令行界面