¿Por qué mi pod no se construye con un error de permiso denegado debido a la restricción de contexto de seguridad (SCC)?

Nube privada virtual Infraestructura clásica

Aprenda a resolver errores de permisos denegados relacionados con restricciones de contexto de seguridad (SCC) al crear o ejecutar pods.

Un pod del sistema u otro pod que utiliza una restricción de contexto de seguridad (SCC) tiene una operación que se sigue reintentando pero falla con un error de permission denied. Por ejemplo, puede iniciar sesión en el pod interno image-registry e intentar ejecutar un comando docker push.

Ejemplo de mensaje de error al enviar una imagen al registro interno.

error: build error: Failed to push image: error copying layers and metadata

El pod podría utilizar un SCC o pertenecer a un grupo de sistemas que utiliza un SCC sin los permisos correctos. Es posible que haya añadido un grupo de sistemas a un SCC ejecutando el comando oc adm policy add-scc-to-group <scc> system:<group>.

Si el pod monta un volumen, es posible que los permisos del pod autorizados por la SCC no permitan que el pod lea o escriba datos en el volumen.

Por ejemplo, el registro interno monta un volumen para leer y escribir datos de imágenes en una instancia de almacenamiento de archivos. Si el grupo system:authenticated al que pertenece el registro interno cambia la SCC de restricted a anyuid, el pod se ejecuta con otro UID. El UID diferente impide que el pod de registro interno envíe o extraiga imágenes del dispositivo de almacenamiento.

Cambie los permisos de SCC del pod.

  1. Describa el pod y compruebe la restricción de contexto de seguridad de openshift.io/scc: <scc> en la sección Anotaciones.

    oc describe pod -n <project> <pod>
    

    Salida de ejemplo

    NAME:               image-registry-1234567
    Namespace:          openshift-image-registry
    Priority:           2000000000
    PriorityClassName:  system-cluster-critical
    Node:               10.xxx.xx.xxx/10.xxx.xx.xxx
    Start Time:         Wed, 19 Feb 2020 15:38:53 -0500
    Labels:             docker-registry=default
    Annotations:        openshift.io/scc: anyuid
    
  2. Describa la restricción de contexto de seguridad y compruebe el usuario y los grupos en la sección Acceso.

    oc describe scc <scc>
    

    Salida de ejemplo

    NAME:                        anyuid
    Priority:                    <none>
    Access:                        
        Users:                    <none>
        Groups:                    system:authenticated
    
  3. Si no desea que el usuario o grupo tenga los permisos de la SCC, elimine el usuario o grupo de la SCC. Para obtener más información, revise las SCC de Red Hat OpenShift y IBM Cloud predeterminadas que se han establecido en el clúster.

    oc adm policy remove-scc-from-group <scc> <(user|group)>
    
  4. Añada el usuario o el grupo a la SCC con los permisos adecuados.

    oc adm policy add-scc-to-group <scc> <(user|group)>
    
  5. Suprima el pod para que el pod se vuelva a programar con los nuevos permisos de SCC.

    oc delete pod -n <project> <pod>