使用 Crash Recovery and Diagnostics for Kubernetes,收集 Kubernetes 集群的日志包
Crash Recovery and Diagnostics for Kubernetes是什么?
Crash Recovery and Diagnostics for Kubernetes这个工具用于收集Kubernetes集群的诊断日志。它会根据指定的文件,收集Kubernetes集群的信息。
在Tanzu Kubernetes Grid(TKG)中,提供了Kubernetes的崩溃恢复和诊断的已签名二进制文件。
安装Kubernetes的崩溃恢复和诊断功能。
由于在Mac OS上有已知问题,因此本次安装将在Linux上进行。
-
- 我将从MyVMware下载crash-diagnostics-v0.2.2.tar.gz文件。
-
- 使用tar命令解压下载的文件,并授予执行权限。
$ tar -xzf crash-diagnostics-v0.2.2.tar.gz
$ gunzip crash-diagnostics-darwin-v0.2.2.gz
将文件移动到/usr/local/bin目录下,并授予执行权限。
$ sudo mv ./crash-diagnostics-darwin-v0.2.2 /usr/local/bin/crash-diagnostics
$ chmod +x /usr/local/bin/crash-diagnostics
在 Kubernetes 上进行的崩溃恢复和诊断
针对上一篇文章中展示的Kubernetes集群dev-cluster,我们将执行Kubernetes的崩溃恢复和诊断操作。
-
- 将crash-diagnostics-v0.2.2.tar.gz中的Diagnostics.file进行如下编辑:
-
- a. 指定Kubernetes节点的IP地址和端口。在dev-cluster中,部署了主节点(192.168.7.50)和工作节点(192.168.7.55)。
# FROM指定用于获取诊断数据的以空格分隔的主机列表。
# Retries表示连接主机的最大连接尝试次数。
FROM hosts:”192.168.7.50:22 192.168.7.55:22″ retries:”20″
b. 指定SSH用户和SSH密钥的绝对路径。在部署TKG集群的情况下,用户为capv,密钥是在部署Management集群时指定的密钥。
# 后面的文件中使用的环境变量
ENV SSH_USER=capv
ENV SSH_KEY=/home/ttanigaki/.ssh/id_rsa
c. 使用绝对路径指定工作目录。在本例中,我们在/tmp目录下创建dev-cluster目录作为工作目录。
# WORKDIR指定工具在打包之前用于暂存文件的磁盘上的位置。
WORKDIR /tmp/dev-cluster
d. 使用绝对路径指定日志捆绑的输出目录和文件名。
# OUTPUT指定生成的tar.gz文件输出捆绑包的路径
OUTPUT /tmp/dev-cluster-logs.tar.gz
e. 使用绝对路径指定Kubernetes集群的配置文件。
# KUBECONFIG指定kubeconfig文件的位置
# 由下面的Kubernetes命令使用。
KUBECONFIG /home/ttanigaki/.kube/config
在包含Diagnostics.file文件的目录中运行crash-diagnostics run命令。
$ crash-diagnostics run
INFO[0000] 正在解析脚本文件…
INFO[0000] 正在执行脚本文件…
WARN[0055] CAPTURE远程命令sudo docker ps -a失败:SSH:等待响应时出错:进程退出状态为1
WARN[0056] CAPTURE远程命令sudo docker ps -a失败:SSH:等待响应时出错:进程退出状态为1
WARN[0057] CAPTURE远程命令sudo systemctl status docker失败:SSH:等待响应时出错:进程退出状态为4
WARN[0058] CAPTURE远程命令sudo systemctl status docker失败:SSH:等待响应时出错:进程退出状态为4
INFO[0060] KUBEGET:获取API对象(可能需要一些时间)…
INFO[0060] KUBEGET:获取API对象(可能需要一些时间)…
INFO[0067] 已在路径/tmp/dev-cluster-logs.tar.gz创建输出…
INFO[0067] 完成
※这里输出了与docker相关的错误,这是由于在部署的TKG节点上未安装docker。
确认/tmp/dev-cluster-logs.tgz已输出。
$ ls -l /tmp/dev-cluster-logs.tar.gz
-rw-rw-r– 1 ttanigaki ttanigaki 374894 4月 26 22:29 /tmp/dev-cluster-logs.tar.gz
解压缩后,可以确认包含每个节点的信息和Kubernetes集群的信息,如下所示:
└── tmp
└── dev-cluster
├── 192_168_7_50_22
│ ├── sudo_arp__a.txt
│ ├── sudo_bash__c__ulimit__a_.txt
│ ├── sudo_bash__c__umask_.txt
│ ├── sudo_cat__proc_cpuinfo.txt
~~ 省略 ~~
└── kubeget
├── default
│ └── pods.json
├── kube-node-lease
│ └── pods.json
├── kube-public
│ └── pods.json
└── kube-system
~~ 省略 ~~
53个目录,93个文件