使用kubectl

问题描述

是否有一种方法可以直接从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 Cheat Sheet

,

您具有下面的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 的非常好的文章。

仍在解决中,但此日志可能对其他人有帮助。