本页面适用于基础架构运维者。
本页面介绍如何在 Anthos 不公开模式下使用 actl
命令行工具诊断集群问题。diagnose
命令会生成一个归档文件,其中包含一组捕获集群状态的日志。
简介
您可以使用 actl diagnose
命令捕获集群的状态。诊断信息可帮助您更高效地发现问题和调试部署。该命令会捕获您定义的范围的所有相关集群和节点配置文件,然后将信息打包到一个 tar 归档文件中。您可以通过该命令的标志选择命令的诊断范围。
actl diagnose
使用 actl diagnose
命令排查集群问题。此命令会将集群的状态、配置和日志压缩成 tar 文件。此命令的默认配置会捕获集群的以下信息:
- Kubernetes 版本
- kube-system 和 APM 的控制器命名空间中的 Kubernetes 资源的状态:集群、机器、节点、服务、端点、ConfigMap、ReplicaSet、CronJob、Pod 以及这些 Pod 的所有者,包括 Deployment、DaemonSet 和 StatefulSet。
- 如果目标集群是用户集群(用户集群的控制层面在管理员集群中运行),则为用户控制层面的状态。
- 有关每个节点配置的详细信息,包括 IP 地址、iptables 规则、装载点、文件系统、网络连接,以及正在运行的进程。
- 管理员集群的控制层面节点的容器日志(当 Kubernetes API 服务器不可用时)。
- Istio 系统中的信息,包括 pod、Service、Deployment、端点、Secret、configmap、所有 Istio 组件和 Sidecar 当前和以前的日志以及所有 Istio 配置工件。
- Config Sync 中的信息,包括 config-management-system 相关命名空间中的配置。
- 来自
actl diagnose
命令的日志。
根据场景创建快照
actl diagnose
命令支持六种场景。要指定场景,请使用 --scenario
标志为以下任意配置收集快照:
- all:(默认)包括所有预定义的场景,包括:auth、config-management、kubernetes、management-center、observability 和 service-mesh。
- auth
- config-management
- kubernetes
- management-center
- 可监测性
- service-mesh
您可以为管理员集群使用以上每一个场景。如需使用 all 场景创建管理员集群的快照,请运行下命令:
actl diagnose \
--kubeconfig=ADMIN_CLUSTER_KUBECONFIG\
--cluster=CLUSTER_NAME\
--scenario=all
请替换以下内容:
ADMIN_CLUSTER_KUBECONFIG
:管理员集群的 kubeconfig 文件。- (可选)
CLUSTER_NAME
:管理员集群的名称。如果您不知道集群名称,请省略此标志,系统将提示您选择要截取快照的集群。
输出包括文件列表和 tar 文件的名称。
Using ["all"] snapshot configuration...
? Choose a cluster (namespace/name) cluster-admin/admin
Taking snapshots in 10 thread(s)...
kubectlCommands/anthos-management-center-operator/kubectl_get_updateitems
kubectlCommands/kubectl_cluster-info
kubectlCommands/kubectl_version
kubectlCommands/anthos-management-center/kubectl_logs_git-server-0_--container_git-server_--since_24h0m0s
kubectlCommands/anthos-management-center/kubectl_get_deployments
...
nodes/10.200.0.5/files/lib/systemd/system/docker.service
nodes/10.200.0.4/files/lib/systemd/system/docker.service
...
istioCommands/istioctl_bug-report
Snapshot succeeded.
Snapshots saved in "[TAR_FILE_PATH]/[TAR_FILE_NAME].tar.gz".
限制快照的时间段
您可以使用 --log-since
标志将日志收集限制为最近的时间段。例如,您可以收集过去两天或过去三小时的日志。默认情况下,diagnose
会收集过去 24 小时的日志。仅 kubectl
日志支持此标志。
要限制日志收集的时间段,请执行以下操作:
actl diagnose \
--kubeconfig=ADMIN_CLUSTER_KUBECONFIG \
--cluster=CLUSTER_NAME \
--scenario=all \
--log-since=DURATION
将 DURATION
替换为时间值,例如 2d 或 3h。默认时间段为 24 小时。
对快照执行试运行
您可以使用 --dry-run
标志来显示要执行的操作和快照配置。
要在管理员集群上执行试运行,请输入以下命令:
actl diagnose \
--kubeconfig=ADMIN_CLUSTER_KUBECONFIG \
--cluster=CLUSTER_NAME \
--dry-run
自定义快照配置
如果这六个场景不能满足您的需求,您可以创建自定义快照。您可以生成配置并将其复制和粘贴到新的配置文件中,也可以从头开始创建配置文件。然后,您可以通过自定义配置文件创建快照。
选项 1:生成快照配置
您可以通过传入 --scenario
和 --dry-run
标志为给定场景生成快照配置。例如,如需查看集群的 all(默认)场景的快照配置,请输入以下命令:
actl diagnose \
--scenario=all \
--dry-run
以下是输出示例:
ExcludeWords:
- certificateAuthorityData
- password
IstioBugReport:
Enabled: true
KubectlCommands:
- Commands:
- kubectl get deployments
- kubectl get deployments -o yaml
- kubectl get pods
- kubectl get pods -o yaml
- kubectl get secret
- kubectl logs
- kubectl get gateways -o yaml
Namespaces:
- istio-system
NodeCommands:
- Commands:
- uptime
- df --all --inodes
- ip addr
- iptables-save --counters
- mount
- ip route list table all
- top -bn1
- docker info
- docker ps -a
- ps -edF
- ps -eo pid,tid,ppid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm,args,cgroup
- conntrack --count
Nodes: []
NodeFiles:
- Files:
- /proc/sys/fs/file-nr
- /proc/sys/net/netfilter/nf_conntrack_max
- /lib/systemd/system/kubelet.service
- /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
- /lib/systemd/system/docker.service
- /etc/docker/daemon.json
Nodes: []
NomosBugReport:
Enabled: true
NumOfParallelThreads: 10
您可以从命令行界面复制此命令的输出,并将其粘贴到您创建的新配置文件中,例如 myconfig.yaml
。您可以修改以下值:
ExcludeWords
:要从快照中排除的字词列表(不区分大小写)。系统会从快照结果中移除包含这些字词的行。无论您是否指定“password”,都始终会将其排除。IstioBugReport
:用于启用istioctl bug-report
快照的标志。KubectlCommands
:要运行的kubectl
命令的列表。这些命令将针对相应的命名空间运行。对于kubectl logs
命令,系统会自动添加相应命名空间中的所有 pod 和容器。支持使用正则表达式指定命名空间。如果未指定命名空间,则假定为default
命名空间。NodeCommands
:要在相应节点上运行的命令列表。系统会保存结果。未指定节点时,将考虑目标集群中的所有节点。NodeFiles
:要从相应节点收集的文件列表。系统会保存这些文件。未指定节点时,将考虑目标集群中的所有节点。NomosBugReport
:用于启用nomos bugreport
快照的标志。NumOfParallelThreads
:用于截取快照的并行线程数。
选项 2:手动定义自定义快照配置文件
使用您需要的快照参数创建 YAML 文件,例如:
ExcludeWords:
- certificateAuthorityData
- password
NumOfParallelThreads: 10
KubectlCommands:
- Commands:
- kubectl get deployments
- kubectl get deployments -o yaml
- kubectl get pods
- kubectl get pods -o yaml
- kubectl get secret
- kubectl logs
- kubectl get gateways -o yaml
Namespaces:
- istio-system
使用自定义快照配置创建快照
使用 --snapshot-config
标志传入自定义快照配置文件:
actl diagnose \
--kubeconfig=ADMIN_CLUSTER_KUBECONFIG \
--cluster=CLUSTER_NAME \
--snapshot-config=SNAPSHOT_CONFIG_FILE
将 SNAPSHOT_CONFIG_FILE
替换为自定义快照配置文件的名称,例如 myconfig.yaml
。
查看快照内容
如需查看 tar 文件的内容,请使用以下命令解压:
tar -zxf TAR_FILE_PATHTAR_FILENAME.tar.gz --directory EXTRACTION_DIRECTORY_NAME
请先查看 tar 文件的内容,然后在与支持人员的沟通中提供该文件。