Solución de problemas de recursos

En este artículo se identifica la solución de problemas de recursos de los servicios de datos habilitados para Azure Arc.

Cargas

Si implementó el controlador de datos de Azure Arc en el modo de conectividad direct mediante kubectl y no ha creado un secreto para las credenciales del área de trabajo de Log Analytics, es posible que vea los siguientes mensajes de error en el CR (recurso personalizado) del controlador de datos:

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."
                    },

Para resolver el error anterior, cree un secreto con las credenciales del área de trabajo de Log Analytics que contenga WorkspaceID y SharedAccessKey como se indica a continuación:

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

Si configuró la carga automática de métricas, en el modo conectado directo y los permisos necesarios para el MSI no se han concedido correctamente (como se describe en Carga de métricas), es posible que vea un error en los registros como se indica a continuación:

'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."}}

Para resolver el error anterior, recupere el MSI para la extensión del controlador de datos de Azure Arc y conceda los roles necesarios, tal como se describe en Carga de métricas.

Si implementó el controlador de datos de Azure Arc en el modo conectado directo, los permisos necesarios para cargar la información de uso se conceden automáticamente para el MSI de la extensión del controlador de datos de Azure Arc. Si el proceso de carga automática se ejecuta en incidencias relacionadas con los permisos, es posible que vea un error en los registros de la siguiente manera:

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.\"}}"}

Para resolver la incidencia de permisos, recupere MSI y conceda los roles necesarios como se describe en Carga de métricas).

Actualizaciones

Etiqueta de imagen incorrecta

Si usa la CLI az para actualizar y pasa una etiqueta de imagen incorrecta, le aparecerá un error en dos minutos.

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).

Al ver los pods, verá el estado del trabajo de arranque como ErrImagePull.

STATUS
ErrImagePull

Al describir el pod, verá

Failed to pull image "<registry>/<repository>/arc-bootstrapper:<incorrect image tag>": [rpc error: code = NotFound desc = failed to pull and unpack image 

Para resolverlo, haga referencia al registro de versión de la etiqueta de imagen correcta. Vuelva a ejecutar el comando de actualización con la etiqueta de imagen correcta.

No se puede conectar al registro o al repositorio

Si está intentando ejecutar una actualización que no ha generado ningún error pero que tarda más de quince minutos, puede ver el progreso de esta mediante los pods. Ejecutar

kubectl get pods -n <namespace>

Al ver los pods, verá el estado del trabajo de arranque como ErrImagePull.

STATUS
ErrImagePull

Descripción del pod de trabajo de arranque para ver los eventos.

kubectl describe pod <pod name> -n <namespace>

Al describir el pod, verá el siguiente error

failed to resolve reference "<registry>/<repository>/arc-bootstrapper:<image tag>"

Esto suele suceder si la imagen se implementó desde un registro privado, está usando Kubernetes para actualizar a través de un archivo yaml y el archivo yaml hace referencia a mcr.microsoft.com en lugar de al registro privado. Para resolverlo, cancele el trabajo de actualización. Para localizar el registro desde el que implementó, ejecute

kubectl describe pod <controller in format control-XXXXX> -n <namespace>

Localice Containers.controller.Image, donde verá el registro y el repositorio. Capture esos valores, ingrese en el archivo yaml y vuelva a ejecutar la actualización.

No hay suficientes recursos

Si está intentando ejecutar una actualización que no ha generado ningún error pero que tarda más de quince minutos, puede ver el progreso de esta mediante los pods. Ejecutar

kubectl get pods -n <namespace>

Busque un pod que muestre que algunos de los contenedores están listos, pero que no sea -, por ejemplo, este pod metricsdb-0 solo tiene uno de los dos contenedores:

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

Descripción del pod para visualizar Eventos.

kubectl describe pod <pod name> -n <namespace>

Si no hay ningún evento, obtenga los nombres de contenedor y vea los registros de los contenedores.

kubectl get pods <pod name> -n <namespace> -o jsonpath='{.spec.containers[*].name}*'

kubectl logs <pod name> <container name> -n <namespace>

Si ve un mensaje sobre una CPU o memoria insuficientes, debe agregar más nodos al clúster de Kubernetes o agregar más recursos a los nodos existentes.

Recursos por tipo

Escenario: Solución de problemas de servidores PostgreSQL

Visualización de registros y métricas mediante Kibana y Grafana

Escenario: Visualización del inventario de las instancias en Azure Portal