你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

资源疑难解答

本文标识了已启用 Azure Arc 的数据服务的故障排除资源。

上传

如果使用 kubectldirect 连接模式下部署了 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 工作区凭据(包含 WorkspaceIDSharedAccessKey)创建机密,如下所示:

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 群集添加更多节点,或者向现有节点添加更多资源。

依类型排序资源

方案:PostgreSQL 服务器故障排除

使用 Kibana 和 Grafana 查看日志和指标

方案:在 Azure 门户中查看实例库存