Kubernetes 支持的自承载集成运行时故障排除
本文详细介绍如何对适用于 Linux 的基于 Kubernetes 的新自承载集成运行时进行故障排除。
可在以下错误指南中查找你看到的任何错误。 若要获得 SHIR 问题的支持和故障排除指导,可能需要生成日志上传 ID 并联系 Azure 支持部门。
收集 Kubernetes 自承载集成运行时日志
若要为 Microsoft 支持部门生成日志上传 ID,请执行以下操作:
- 扫描显示“失败”状态后,导航到安装了 IRCTL 工具的 VM 或计算机。
- 使用
./irctl log upload
命令。 - 上传日志后,保留打印的日志上传 ID 记录。
- 如果自承载集成运行时无法注册,请使用以下指南将日志下载到本地并将其发送到 Azure 支持
若要收集自承载集成运行时日志和扫描运行日志来排查 SHIR 问题,请使用 ./irctl log download
命令。
例如:
./irctl log download --destination "C:\Users\user\logs\"
日志将下载到目标路径。
注意
日志将保留 14 天。 请通过将其上传到 Microsoft 或下载到本地计算机来持久化它。
IRCTL 与 Kubernetes 连接错误
你可能从 Kubernetes 管理员处获取了 Kubernetes 上下文配置,而注册可能失败并显示以下错误消息之一:
Error: invalid flag context [] .kube/config: no such file or directory
[Warning] Failed to create kube client with context [] with error
原因
安装自承载集成运行时时,需要正确的 Kubernetes 配置和稳定的连接。
解决方法
- 确保 Kubernetes 上下文文件位于正确的路径。
- 确保 IRCTL 计算机可以连接到 Kubernetes 群集 API 服务器。
IRCTL 权限错误
连接时可能会出现以下错误消息:
[Error] Failed to list namespaces to get Running SHIR
[Error] Failed to get configmap/ create job/ etc.
原因
安装自承载集成运行时时,需要对多个 Kubernetes 资源具有足够的权限。
解决方法
使用管理员角色重新生成 Kubernetes 服务帐户令牌。
IRCTL 与 Microsoft Purview 服务终结点连接错误
尝试注册 Kubernetes 支持的自承载集成运行时时,IRCTL create 命令可能会返回以下错误:
[Error] Failed to register SHIR with error: Post “https://[REGION].compute.governance.azure.com/purviewAccounts/[]/integrationruntimes/[]/registerselfhostedintegrationruntime: []”
原因
IRCTL 无法连接到服务后端。 此类问题通常是由网络设置或防火墙导致的。
解决方法
检查 IRCTL 主机的网络拓扑。 请参阅常规集成运行时故障排除页面的以下部分:防火墙、DNSServer、SSL 证书信任和 http 代理。
注册密钥未获授权
尝试注册 Kubernetes 支持的自承载集成运行时时,IRCTL create 命令可能会返回以下错误:
[Error] failed to register SHIR with error: Request is not authorized.
原因
它们已过期或被手动撤销。
解决方法
从 Microsoft Purview 门户中的集成运行时页面重新生成密钥并再次注册。
Kubernetes 自承载 IR 创建超时错误
当你尝试注册 Kubernetes 支持的自承载集成运行时时,IRCTL create 命令可能会运行很长时间,并且最终超时。
可以首先检查 irctl describe
命令提到的命名空间下的 Pod 的状态。
例如:
./irctl describe
K8s SHIR Name:shir-demo
Purview AccountName: shirdemopurview
Installation ID: 00000000-0000-0000-0000-000000000000
Kubernetes Namespace: shirdemopurview-shir-demo, compute-fleet-system(control-plane)
K8s SHIR Version: Unknown (Installation not completed)
Status: Initializing
Healthiness: Unhealthy
kubectl get pods --namespace shirdemopurview-shir-demo
NAME READY STATUS RESTARTS AGE
batch-defaultspec-4pbwx 0/1 Pending 0 10m
batch-defaultspec-7t9bl 0/1 Pending 0 10m
dynamic-config-provider-778c686fdc-9mkjb 0/1 Pending 0 10m
interactive-schemaprocess-bcrmf 0/1 Pending 0 10m
interactive-schemaprocess-fn66x 0/1 Pending 0 10m
logagent-ds-84jqn 0/1 Pending 0 10m
logagent-ds-k7vw8 0/1 Pending 0 10m
user-credential-proxy-579c899b64-d4q5v 0/1 Pending 0 10m
有几个可能的原因,如下所列:
原因 - 与 Microsoft Purview 服务终结点的连接
Kubernetes 无法连接到 MCR (mcr.microsoft.com)。 此错误通常是由网络设置或防火墙导致的。
如果看到状态为“ImagePullBackOff”,则表示 Kubernetes 无法连接到 MCR (mcr.microsoft.com) 下载 Pod 映像。 此错误通常是由网络设置或防火墙导致的。
解决方法 -与 Microsoft Purview 服务终结点的连接
检查 Kubernetes 群集的网络拓扑。 例如,对于 Azure Kubernetes,应该检查:
注意
对于每个 Kubernetes 提供商需要执行的故障排除步骤有所不同。 部署位置和各项网络详细信息因网络的不同而异。 需要检查组织网络的连接状态。
检查 IRCTL 主机的网络拓扑。 请参阅常规集成运行时故障排除页面的以下部分:防火墙、DNSServer、SSL 证书信任和 http 代理。
原因 - Kubernetes 节点配置错误
如果某些 Pod 的状态停滞在“挂起”,请使用 describe pod 命令查看 Pod 的详细信息。
例如:
kubectl describe pod batch-defaultspec-4pbwx --namespace shirdemopurview-shir-demo
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning FailedScheduling 13m default-scheduler 0/5 nodes are available: 1 Too many pods. preemption: 0/5 nodes are available: 5 No preemption victims found for incoming pod..
describe 命令中的事件可以告知 Pod 挂起的原因。 FailedScheduling 错误及其详细消息表明 Pod 总数超过了节点上 Pod 的最大数量。 无法将新 Pod 安排到所选节点。
注意
如果描述下没有看到事件,请尝试通过 kubectl delete pod
命令手动删除 Pod 并跟踪新创建的 Pod。
解决方法 - Kubernetes 节点配置错误
为 kubernetes 集成运行时保留 20 个 Pod 编号,以支持正常利用率和升级应用场景。
Kubernetes 与 Microsoft Purview 服务终结点连接错误
当你尝试注册 Kubernetes 支持的自承载集成运行时时,IRCTRL create 命令可能会运行很长时间,并且最终超时。或者,成功安装后,自承载集成运行时状态在 Microsoft Purview 门户中显示为不正常或脱机状态。
使用以下命令检查日志:kubectl logs [podName] -n compute-fleet-system
可能会看到以下错误之一:
“TraceMessage”:”HttpRequestFailed”, “Host”: “fleet.[REGION].compute.governance.azure.com”
Exception":"System.Net.Http.HttpRequestException: Connection refused fleet.[REGION].compute.governance.azure.com:443
System.AggregateException: Failed to acquire identity token from https://fleet. [REGION].compute.governance.azure.com:443
原因
Kubernetes 无法连接到服务后端。 此错误通常是由网络设置或防火墙导致的。
解决方法
检查 Kubernetes 群集的网络拓扑。 例如,对于 Azure Kubernetes,应该检查:
注意
对于每个 Kubernetes 提供商需要执行的故障排除步骤有所不同。 部署位置和各项网络详细信息因网络的不同而异。 需要检查组织网络的连接状态。
检查 IRCTL 主机的网络拓扑。 请参阅常规集成运行时故障排除页面的以下部分:防火墙、DNSServer、SSL 证书信任和 http 代理。
取消注册本地资源不可用的运行时
如果从 Kubernetes 群集中意外删除了本地自承载集成运行时,则无法使用 irctl delete
命令将其删除,并且无法将其安装到另一个 Kubernetes 群集。
原因
自承载集成运行时只能安装在一个 Kubernetes 群集上。 注册后,在取消注册之前无法将其安装在其他群集上。
解决方法
检查自承载集成本地状态。 应会出现未找到正在运行的自承载集成运行时的错误。
$./irctl describe
在 Microsoft Purview 门户中检查自承载集成运行时。 应会看到“脱机”状态。 (不过,令牌过期时间有一个小时的延迟。)
选择状态旁边的“取消注册安装”并确认操作。
完成取消注册后,可以看到状态显示为“未注册”。
选择集成运行时并获取注册密钥。