如何在Kubernetes中列出指定Cassandra Pod的所有kubectl exec会话信息?
列出指定Pod的exec会话及相关信息的方法
下面是几种可行的方式,根据你的集群配置选择:
1. 查看kube-apiserver日志
所有kubectl exec请求都会经过kube-apiserver,日志里会记录关键信息:
- 先找到kube-system命名空间下的kube-apiserver Pod:
kubectl get pods -n kube-system | grep kube-apiserver - 过滤目标Pod的exec相关日志:
日志条目会包含发起请求的用户(kubectl logs -n kube-system <kube-apiserver-pod-name> | grep -E "exec.*<target-pod-name>"user字段)、来源IP(sourceIPs)、执行的命令(command)以及请求时间,能帮你定位是谁发起的会话。
2. 利用Kubernetes审计日志(若已开启)
如果集群开启了审计日志功能,能获取更完整的exec请求细节,审计日志会记录请求的完整生命周期,包括发起者身份、操作内容、资源信息等:
- 若审计日志存储在集群内的日志系统中,直接查询
verbs: create且resource: pods/exec的条目,并过滤目标Pod的名称。 - 如果审计日志输出到kube-apiserver的标准输出,可从kube-apiserver日志中提取审计相关的JSON条目(需集群内已安装
jq工具):kubectl logs -n kube-system <kube-apiserver-pod-name> | jq 'select(.objectRef.name == "<target-pod-name>" and .verb == "create" and .objectRef.subresource == "exec")'
3. 直接在目标Pod内查看进程
进入目标Pod查看进程树,能直观看到当前活跃的cqlsh会话及相关进程:
- 先exec进入Pod:
kubectl exec -it <target-pod-name> -- bash - 查看进程树:
你会看到所有运行的cqlsh进程,以及它们的父进程(通常对应exec会话的shell进程),还能看到进程的启动时间、运行用户等信息。若需要更结构化的进程信息,可执行:ps auxf
该命令会列出进程ID、父ID、用户、命令和启动时间。ps -eo pid,ppid,user,cmd,lstart
内容的提问来源于stack exchange,提问作者Nicola Ambrosetti
相关产品推荐
相关产品推荐

