你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
资源疑难解答
本文标识了已启用 Azure Arc 的数据服务的故障排除资源。
上传
与日志上传相关的错误
如果使用 kubectl
在 direct
连接模式下部署了 Azure Arc 数据控制器,但尚未为 Log Analytics 工作区凭据创建机密,则可能会在数据控制器 CR(自定义资源)中看到以下错误消息:
status": {
"azure": {
"uploadStatus": {
"logs": {
"lastUploadTime": "YYYY-MM-HHTMM:SS:MS.SSSSSSZ",
"message": "spec.settings.azure.autoUploadLogs is true, but failed to get log-workspace-secret secret."
},
若要解决以上错误,请使用 Log Analytics 工作区凭据(包含 WorkspaceID
和 SharedAccessKey
)创建机密,如下所示:
apiVersion: v1
data:
primaryKey: <base64 encoding of Azure Log Analytics workspace primary key>
workspaceId: <base64 encoding of Azure Log Analytics workspace Id>
kind: Secret
metadata:
name: log-workspace-secret
namespace: <your datacontroller namespace>
type: Opaque
直接连接模式下与指标上传相关的错误
如果在直接连接模式下配置了自动上传指标的功能,但未正确授予 MSI 所需的权限(如上传指标所述),则可能会在日志中看到错误,如下所示:
'Metric upload response: {"error":{"code":"AuthorizationFailed","message":"Check Access Denied Authorization for AD object XXXXXXXXX-XXXX-XXXX-XXXXX-XXXXXXXXXXX over scope /subscriptions/XXXXXXXXX-XXXX-XXXX-XXXXX-XXXXXXXXXXX/resourcegroups/my-resource-group/providers/microsoft.azurearcdata/sqlmanagedinstances/arc-dc, User Tenant Id: XXXXXXXXX-XXXX-XXXX-XXXXX-XXXXXXXXXXX. Microsoft.Insights/Metrics/write was not allowed, Microsoft.Insights/Telemetry/write was notallowed. Warning: Principal will be blocklisted if the service principal is not granted proper access while it hits the GIG endpoint continuously."}}
若要解决上述错误,请检索 Azure Arc 数据控制器扩展的 MSI,并按照上传指标所述授予所需的角色。
直接连接模式下与使用情况信息上传相关的错误
如果在直接连接模式下部署了 Azure Arc 数据控制器,则会自动为 Azure Arc 数据控制器扩展 MSI 授予上传使用情况信息所需的权限。 如果自动上传过程遇到与权限相关的问题,你可能会在日志中看到错误,如下所示:
identified that your data controller stopped uploading usage data to Azure. The error was:
{"lastUploadTime":"2022-05-05T20:10:47.6746860Z","message":"Data controller upload response: {\"error\":{\"code\":\"AuthorizationFailed\",\"message\":\"The client 'XXXXXXXXX-XXXX-XXXX-XXXXX-XXXXXXXXXXX' with object id 'XXXXXXXXX-XXXX-XXXX-XXXXX-XXXXXXXXXXX' does not have authorization to perform action 'microsoft.azurearcdata/datacontrollers/write' over scope '/subscriptions/XXXXXXXXX-XXXX-XXXX-XXXXX-XXXXXXXXXXX/resourcegroups/my-resource-group/providers/microsoft.azurearcdata/datacontrollers/arc-dc' or the scope is invalid. If access was recently granted, please refresh your credentials.\"}}"}
若要解决权限问题,请检索 MSI 并授予所需的角色,如上传指标所述。
升级
映像标记不正确
如果使用 az
CLI 进行升级,并且传递不正确的映像标记,你将在两分钟内看到错误。
Job Still Active : Failed to await bootstrap job complete after retrying for 2 minute(s).
Failed to await bootstrap job complete after retrying for 2 minute(s).
查看 Pod 时,你将看到启动作业状态为 ErrImagePull
。
STATUS
ErrImagePull
描述 Pod 时,你将看到
Failed to pull image "<registry>/<repository>/arc-bootstrapper:<incorrect image tag>": [rpc error: code = NotFound desc = failed to pull and unpack image
要解决此问题,请参考版本日志以获取正确的映像标记。 使用正确的映像标记重新运行升级命令。
无法连接到注册表或存储库
如果正在尝试升级并且升级作业没有生成错误,但运行时间超过 15 分钟,可通过监视 Pod 来查看升级进度。 运行
kubectl get pods -n <namespace>
查看 Pod 时,你将看到启动作业状态为 ErrImagePull
。
STATUS
ErrImagePull
描述启动作业 Pod 以查看事件。
kubectl describe pod <pod name> -n <namespace>
描述 Pod 时,你将看到一条错误消息,该消息指示
failed to resolve reference "<registry>/<repository>/arc-bootstrapper:<image tag>"
如果映像是从专用注册表部署的,这种情况很正常,你将使用 Kubernetes 通过 yaml 文件进行升级,yaml 文件引用 mcr.microsoft.com 而不是专用注册表。 要解决此问题,请取消升级作业。 要查找从中部署的注册表,请运行以下命令:
kubectl describe pod <controller in format control-XXXXX> -n <namespace>
查找 Containers.controller.Image,你将在其中看到注册表和存储库。 捕获这些值,输入 yaml 文件,然后重新运行升级命令。
资源不足
如果正在尝试升级并且升级作业没有生成错误,但运行时间超过 15 分钟,可通过监视 Pod 来查看升级进度。 运行
kubectl get pods -n <namespace>
查找显示一些容器已准备好但未就绪的 Pod - 例如,此 metricsdb-0 Pod 只有两个容器之一:
NAME READY STATUS RESTARTS AGE
bootstrapper-848f8f44b5-7qxbx 1/1 Running 0 16m
control-7qxw8 2/2 Running 0 16m
controldb-0 2/2 Running 0 16m
logsdb-0 3/3 Running 0 18d
logsui-hvsrm 3/3 Running 0 18d
metricsdb-0 1/2 Running 0 18d
描述 Pod 以查看事件。
kubectl describe pod <pod name> -n <namespace>
如果没有事件,获取容器名称并查看容器的日志。
kubectl get pods <pod name> -n <namespace> -o jsonpath='{.spec.containers[*].name}*'
kubectl logs <pod name> <container name> -n <namespace>
如果看到有关 CPU 或内存不足的消息,你应向 Kubernetes 群集添加更多节点,或者向现有节点添加更多资源。