Kubernetes中使用dotnet-dump工具获取日志
概述
这是以前写在笔记本里的关于如何在k8s中得到.net core 程序的dump 日志,突然看到一个pod内存暂用过高,想拉下来一个dump看看,但忘记了命令。 然后就在网上找也没找到合适的文章,在笔记里找也找了半天才找到,还是整理出来这样更方便分享以及帮助需要的朋友。再加上现在有chapgt可以让它 帮我整理并输出成markdown形式,也不用花太多时间。以下就是chatgpt 帮我整理的笔记。
要在Kubernetes中使用dotnet-dump工具获取日志,您需要执行以下步骤:
- 首先,在Kubernetes中查找正在运行的容器的名称或ID:
kubectl get pods kubectl describe pod <pod-name>
- 进入容器:
kubectl exec -it <pod-name> -c <container-name> -- /bin/bash
- 运行dotnet-dump工具,将输出保存到文件中:
dotnet-dump collect -p <process-id> -o /tmp/dump
请注意,这里的
<process-id>
是您要获取日志的进程的ID。如果您不知道进程的ID,可以使用ps
命令来查找。此外,确保dotnet-dump工具已在容器中安装并可用。 - 将输出文件从容器复制到本地计算机:
kubectl cp <pod-name>:/tmp/dump /path/to/local/folder
- 最后,将输出文件加载到dotnet-dump工具中进行分析:
dotnet-dump analyze /path/to/local/folder/dump
如果需要在容器中安装dotnet-dump工具,您可以使用以下命令:
kubectl exec -it YOUR_POD_NAME -- /bin/sh
apt-get update
apt-get install wget
wget -O dotnet-dump https://aka.ms/dotnet-dump/linux-x64
chmod 777 ./dotnet-dump
# 使用以下命令来获取进程ID
./dotnet-dump ps
# 使用以下命令来收集日志
./dotnet-dump collect -p YOUR_PROCESS_ID
# 压缩日志文件
gzip DUMP_NAME
# 将压缩的日志文件复制到本地计算机
kubectl cp YOUR_POD_NAME:/app/DUMP_NAME.gz ./dotnetdump/mydump.gz
请注意,上述命令中的 <process-id>
和其他占位符应替换为实际的值,以便执行操作。希望这有助于您在Kubernetes中使用dotnet-dump工具获取日志。