Kubernetes:如何检查Pod是否以Root/非Root运行及kubectl字段查询
检查Kubernetes Pod的运行用户权限
1. 直接进入容器查看当前运行用户
用kubectl exec命令进入容器,执行id命令查看用户ID:
# 单个容器的Pod kubectl exec -it <你的Pod名称> -- id # 多容器的Pod,需指定容器名称 kubectl exec -it <你的Pod名称> -c <容器名称> -- id
输出里如果显示uid=0(root),说明容器以Root用户运行;如果是uid=<非0数字>,则是非Root用户。
2. 通过kubectl describe判断权限配置
执行kubectl describe pods <你的Pod名称>后,在输出的Containers段落里,找SecurityContext字段:
如果存在
RunAsUser: 0,说明容器配置了以Root运行;如果是RunAsUser: <非0数字>,则是指定的非Root用户。
要是没看到RunAsUser字段,说明Pod没显式配置运行用户,容器会使用镜像默认的用户,需要用第一种方法进入容器确认实际运行用户。
3. 查看Pod的YAML配置确认规则
用命令导出Pod的YAML配置,查看安全上下文的配置:
kubectl get pod <你的Pod名称> -o yaml
在spec.containers[*].securityContext下找runAsUser字段,规则和上面一致:0代表Root,非0代表指定的非Root用户。如果该字段不存在,同样需要结合容器实际运行情况判断。
如果是由Deployment、StatefulSet等控制器管理的Pod,也可以直接查看控制器的YAML配置,确认全局的运行用户规则。
内容的提问来源于stack exchange,提问作者Sandeep540
相关产品推荐
相关产品推荐

