Kubernetes runAsNonRoot失败:CreateContainerConfiger错误
我在pod中添加了一个安全上下文,如下所示:Kubernetes runAsNonRoot失败:CreateContainerConfiger错误,kubernetes,kubernetes-helm,Kubernetes,Kubernetes Helm,我在pod中添加了一个安全上下文,如下所示: spec: securityContext: runAsNonRoot: true spec: runAsUser: rule: MustRunAsNonRoot containers: - name: <container-name> 运行pod时,我收到错误消息(kubectl get pod name-o=yaml): 容器具有runAsNonRoot,图像具有非数字用户(默认), 无法验证用
spec:
securityContext:
runAsNonRoot: true
spec:
runAsUser:
rule: MustRunAsNonRoot
containers:
- name: <container-name>
运行pod时,我收到错误消息(kubectl get pod name-o=yaml):
容器具有runAsNonRoot,图像具有非数字用户(默认),
无法验证用户是否为非root用户
这条信息很直观,但在我看来应该是非常直接的,我在这里遗漏了什么?只有当您的uid==nil时,才会出现此错误,。根据错误文本,我们需要设置一个数字用户值 因此,对于UID=1000的用户,您可以在pod定义中这样做:
securityContext:
runAsUser: 1000
因此,您的securityContext
应该如下所示:
securityContext:
fsGroup: 2000
runAsNonRoot: true
runAsUser: 1000
在正式文档中签出它您可以按如下方式添加securityContext:
spec:
securityContext:
runAsNonRoot: true
spec:
runAsUser:
rule: MustRunAsNonRoot
containers:
- name: <container-name>
spec:
runAsUser:
规则:MustRunAsNonRoot
容器:
-姓名:
这可以通过确认,但是pod应该有用户的UID
999?我也看到了这个属性spec:runAsUser:rule:MustRunAsNonRoot
这有助于以非root身份运行容器吗?这是linux用户UID。如果您想在linux系统中以centos用户身份运行pod,则需要提供centos用户的uid。您可以使用id-u
查找uid是的,我使用的是centos,如果您想登录到pod
并获取用户id,那么这将是不可行的。我正在使用HELM提供securityContext,在部署时,我不知道pod
是否具有该用户id。但似乎MustRunAsNonRoot
可以工作。根据kubernetes
的代码,这不是您所指的securityContext
,而是PodSecurityPolicy
。这解决了您的问题吗?不是真的,它禁用了权限提升,但不确定容器是否以非根用户身份运行。