问题描述
是否有一种方法可以直接从kubernetes命令行(使用kubectl)检查在pod中运行的容器,以查看一些详细信息,例如以特权模式运行。 像这样:
kubectl inspect -c <containerName>
我发现的唯一方法是ssh到托管Pod的节点并执行docker inspect <containerID>
,但这有点乏味。
我的kubernetes版本
$ kubectl version
Client Version: version.Info{Major:"1",Minor:"10",GitVersion:"v1.10.0",GitCommit:"fc32d2f3698e36b93322a3465f63a14e9f0eaead",GitTreeState:"clean",BuildDate:"2018-03-26T16:55:54Z",GoVersion:"go1.9.3",Compiler:"gc",Platform:"linux/amd64"}
Server Version: version.Info{Major:"1",GitVersion:"v1.10.0+coreos.0",GitCommit:"6bb2e725fc2876cd94b3900fc57a1c98ca87a08b",BuildDate:"2018-04-02T16:49:31Z",Platform:"linux/amd64"}
解决方法
选中kubectl describe <pod_name> -c <containerName>
如果这还不够,您可以使用JSON并使用jq
kubectl get <pod_name> -ojson | jq '.spec.containers[] | .securityContext'
您具有下面的kubectl命令来了解容器的详细信息
kubectl describe <pod_name> -n <namespacename>
kubectl get <pod_name> -n <namespacename> -o yaml # output in yaml format
kubectl get <pod_name> -n <namespacename> -o json # output in json format
如果您想从审核的角度了解哪些容器在特权模式下运行,那么我建议看一下项目Falco,该项目具有一种机制,可以在容器违反策略时编写策略并触发警报。该策略可能是没有容器可以在特权模式下运行。
,我有一个类似的问题,我有一个状态为 Evicted 的 pod,需要检查它(在 kubectl 上有描述)。所以我用了:
kubectl describe pod <pod-name>
所以我可以看到我在找什么:
...
Status: Failed
Reason: Evicted
Message: Pod The node had condition: [DiskPressure].
...
搜索后,我发现了一篇关于 12 Critical Kubernetes Health Conditions You Need to Monitor and Why 的非常好的文章。
仍在解决中,但此日志可能对其他人有帮助。