有没有一种方法可以直接从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", Minor:"10", GitVersion:"v1.10.0+coreos.0", GitCommit:"6bb2e725fc2876cd94b3900fc57a1c98ca87a08b", GitTreeState:"clean", BuildDate:"2018-04-02T16:49:31Z", GoVersion:"go1.9.3", Compiler:"gc", Platform:"linux/amd64"}
检查kubectl describe pods/<pod_name>
如果这对你来说还不够,你可以选择JSON并用jq
进行过滤
kubectl get <pod_name> -ojson | jq '.spec.containers[] | .securityContext'
此外,请检查kubectl备忘单
我也遇到了类似的问题,我有一个状态为Evicted的pod,需要对其进行检查(描述了kubectl(。所以我用了:
kubectl describe pod <pod-name>
所以我可以看到我在寻找什么:
...
Status: Failed
Reason: Evicted
Message: Pod The node had condition: [DiskPressure].
...
所以在搜索中,我发现了一篇非常好的文章,谈论了你需要监测的12种关键的Kubernetes健康状况以及为什么。
仍在解决问题,但此日志可能会帮助其他人。
您有以下kubectl命令来了解pod 的详细信息
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项目,它有一种机制来编写策略,并在容器违反策略时触发警报。策略可能是没有容器可以在特权模式下运行。