Azure Kubernetes 服务 (AKS)群集的故障排除与大多数 Kubernetes 群集的故障排除没有什么不同。 有关详细信息,请参阅 Kubernetes 站点故障排除。 Azure Stack Hub 中另一个有用的资源是 Azure Stack Hub 用户门户 AKS 群集边栏中提供的诊断设置。
在此页中,你可以收集有关以下信息:
- kube-apiserver
- kube-audit
- kube-audit-admin
- kube-controller-manager
- Kube调度器
- AllMetrics
从群集节点收集日志
若要排查某些 AKS 群集问题,可能需要直接从群集节点收集日志。 使用GitHub存储库 msazurestackworkloads/azurestack-gallery 中的脚本从群集节点收集日志。 如果没有这些脚本,则需要连接到群集中的每个节点,并手动找到并下载日志。
这些脚本简化了 Kubernetes 群集中相关日志的收集。 该脚本会自动创建群集的快照,并连接到每个节点以收集日志。 此外,脚本还可以选择将收集的日志上传到存储帐户。
此工具专为Microsoft支持团队设计,用于收集全面的群集日志。
脚本要求
- 确保控制平面节点的网络安全组(NSG)公开 SSH 端口 22。
- 可访问你的 Kubernetes 集群的计算机,或你用于部署集群的同一台计算机。 对于Windows计算机,请安装 Git Bash 以运行 bash 脚本。
- Azure CLI安装在运行脚本的计算机上。 确保你可以从该计算机使用
Azure CLI登录到 Azure Stack 环境。 有关说明,请参阅在Azure Stack Hub上安装Azure CLI。 - 使用
az account set --subscription <Subscription ID>切换到你部署 Kubernetes 群集所在的订阅。 - 将 最新版本的 脚本下载到计算机并提取脚本。
日志
该脚本自动收集以下日志:
- 目录中的
/var/log/azure/日志文件。 - 目录中的
/var/log/kubeaudit日志文件(kube 审核日志)。 - 日志文件
/var/log/waagent.log(waagent)。 -
/var/log/azure/deploy-script-dvm.log日志文件(如果使用 Azure Stack 的 Kubernetes 群集市场项进行部署)。 -
/etc/kubernetes/manifests目录中的静态清单。 - 位于
/etc/kubernetes/addons目录中的静态插件。 - Waagent 日志。
- kube-system 容器元数据和日志。
- kubelet 状态和日志。
- etcd 状态和日志。
- docker 状态和日志。
- 容器状态和日记。
- kube-system 快照。
- Azure CNI 配置文件。
- kubelet 配置文件。
该脚本检索Windows节点的更多日志:
-
c:\Azure\CustomDataSetupScript.log日志文件 。 - kube-proxy 状态和日志。
- 容器状态和日记。
- azure-vnet 日志和 azure-vnet-telemetry 日志。
- Docker 的 ETW 事件。
- Hyper-V 的 ETW 事件。
- Azure CNI 配置文件。
Parameters
| 参数 | Description | Required | Example |
|---|---|---|---|
| -h、--help | 打印命令的用法。 | no | |
| -u,--user | 群集 VM 的管理员用户名。 | yes | azureuser (默认值) |
| -i、 --identity-file | SA 私钥绑定到用于创建 Kubernetes 群集(有时名为“id_rsa”)的公钥。 | yes | /rsa.pem (Putty) ~/.ssh/id_rsa (SSH) |
| -g、--resource-group | Kubernetes 群集资源组。 对于 AKS 服务创建的群集,托管资源组名称遵循模式“MC_RESOURCEGROUP_CLUSTERNAME_LOCTION”。 | yes | k8sresourcegroup MC_AKSRP_k8scluster1_redmond |
| -n、--user-namespace | 从指定命名空间中的容器收集日志。 如果未指定,将收集来自所有命名空间的日志。 | no | monitoring |
| --upload-logs | 将检索到的日志持久保存到 Azure Stack Hub 的存储帐户中。 可以在 KubernetesLogs 资源组中找到日志。 | no | |
| --api-model | 将 apimodel.json 文件持久保存在 Azure Stack Hub 存储帐户中。 仅当还提供了 --upload-logs 参数时,才会将 apimodel.json 文件上传到存储帐户。 | no | ./apimodel.json |
| --disable-host-key-checking | 在脚本执行时,将 SSH 的 StrictHostKeyChecking 选项设置为“no”。 仅在安全环境中使用。 | no |
示例
# switch to the subscription where the Kubernetes cluster is deployed.
az account set --subscription <Subscription ID>
# download the scripts.
mkdir -p $HOME/kuberneteslogs
cd $HOME/kuberneteslogs
curl -L https://github.com/msazurestackworkloads/azurestack-gallery/releases/download/diagnosis-v1.1.0/diagnosis-v1.1.0.tar.gz -o diagnosis.tar.gz
tar xvf diagnosis.tar.gz
# use the script to collect logs
./getkuberneteslogs.sh -u azureuser -i private.key.1.pem -g k8s-rg
./getkuberneteslogs.sh -u azureuser -i ~/.ssh/id_rsa -g k8s-rg --disable-host-key-checking
./getkuberneteslogs.sh -u azureuser -i ~/.ssh/id_rsa -g k8s-rg -n default -n monitoring
./getkuberneteslogs.sh -u azureuser -i ~/.ssh/id_rsa -g k8s-rg --upload-logs --api-model clusterDefinition.json
./getkuberneteslogs.sh -u azureuser -i ~/.ssh/id_rsa -g k8s-rg --upload-logs