IBM Cloud Docs
¿Por qué falla la actualización de mi clúster debido a los requisitos previos de actualización de seguridad de pod?

¿Por qué falla la actualización de mi clúster debido a los requisitos previos de actualización de seguridad de pod?

Al actualizar IBM Cloud Kubernetes Service de Kubernetes versión 1.24 a la versión 1.25, la actualización falla y ve un mensaje de error similar al ejemplo siguiente.

Version update canceled. CAE009: Cannot complete cluster master operations because the cluster does not pass Pod Security upgrade prerequisites. Reason: [ClusterRoleBinding 'restricted-psp-user' does not have expected subjects]. For more information, see the troubleshooting docs: 'https://ibm.biz/master_pod_security_upgrade_iks_125'

El controlador de admisión de Kubernetes PodSecurityPolicy se ha eliminado en Kubernetes 1.25 y se ha sustituido por un nuevo controlador de Admisión de seguridad de pod.

Para actualizar de forma segura los clústeres de IBM Cloud Kubernetes Service de la versión 1.24 a la versión 1.25, el clúster PodSecurityPolicies (PSP) y el control de acceso basado en roles asociado deben cumplir los requisitos previos siguientes.

  • No pueden existir PSP más allá de los 5 IBM Cloud PSP definidos.
  • Los enlaces de rol de clúster definidos de IBM Cloud que otorgan a todos los usuarios y cuentas de servicio autorización para utilizar los PSP restringidos y con privilegios definidos de IBM Cloud deben existir.

Estos requisitos previos garantizan que la configuración de la versión 1.24 PodSecurityPolicy del clúster es equivalente a la configuración de Admisión de seguridad de pod de la versión 1.25 y que la actualización y el cambio a Admisión de seguridad de pod no interrumpen las aplicaciones existentes. Tenga en cuenta que estos requisitos previos no impiden el uso de proveedores de seguridad de pod de terceros.

Antes de empezar

Si no está preparado para migrar a Pod Security Admission, puede borrar el mensaje de estado realizando una renovación del nodo maestro del clúster.

Si ya ha realizado las acciones de requisito previo de actualización de Admisión de seguridad de pod, el mensaje de error indica una acción que puede haber perdido o un cambio inesperado en los recursos definidos de IBM Cloud Kubernetes Service que debe abordar. Realice los pasos siguientes basándose en el mensaje que está viendo.

No se pudo obtener PodSecurityPolicies

  1. Ejecute el siguiente comando para obtener sus PSP.
    kubectl get podsecuritypolicies
    
  2. Si no hay ningún error, vuelva a intentar actualizar el maestro de clúster.

Se ha encontrado que no esIBM PodSecurityPolicy

Hay PSP adicionales que deben eliminarse.

Antes de actualizar el clúster a la versión 1.25, verifique que solo existen los siguientes PSP.

  • ibm-privileged-psp
  • ibm-anyuid-psp
  • ibm-anyuid-hostpath-psp
  • ibm-anyuid-hostaccess-psp
  • ibm-restricted-psp
  1. Liste los PSP.

    kubectl get podsecuritypolicies
    
  2. Si la PodSecurityPolicy adicional ya no se utiliza, elimínela. Si hay políticas de seguridad de pod adicionales, revise la guía de migración.

    kubectl delete podsecuritypolicies PSP
    
  3. Vuelva a intentar la actualización del clúster.

No se pudo obtener ClusterRoleBinding privilegiado-usuario-psp

Este mensaje indica que el enlace de rol de clúster de privileged-psp-user no existe o que algún otro error ha impedido que la operación de actualización leyera el recurso.

  1. Liste el recurso.
    kubectl get clusterrolebindings privileged-psp-user
    
  2. Si obtiene un error NotFound, cree o actualice el enlace de rol de clúster de privileged-psp-user .

ClusterRoleBinding privileged-psp-user no tiene lo esperado roleRef

Este error indica un cambio inesperado y que el enlace de rol de clúster hace referencia al rol de clúster incorrecto.

  1. Eliminar el enlace de rol de clúster.

    kubectl delete clusterrolebinding privileged-psp-user
    
  2. Cree el enlace de rol de clúster de privileged-psp-user .

ClusterRoleBinding privileged-psp-user no tiene los temas esperados

Si este cambio ha sido intencionado, primero debe determinar si las apps se pueden ejecutar con el enlace de rol de clúster. Si pueden, cree o actualice el enlace de rol de clúster restricted-psp-user.

No se pudo obtener ClusterRoleBinding restricted-psp-user

Este mensaje indica que el enlace de rol de clúster restricted-psp-user no existe o que algún otro error ha impedido que la operación de actualización leyera el recurso.

  1. Obtenga los detalles del enlace de rol de clúster de restricted-psp-user.
    kubectl get clusterrolebindings restricted-psp-user
    
  2. Si obtiene un error NotFound, cree o actualice el enlace de rol de clúster restricted-psp-user.

ClusterRoleBinding restricted-psp-user no tiene lo esperado roleRef

Este error indica que es un cambio inesperado y que el enlace de rol de clúster hace referencia al rol de clúster incorrecto.

Complete los siguientes pasos para cambiar la dirección de facturación ( roleRef).

  1. Eliminar el enlace de rol de clúster.
    kubectl delete clusterrolebinding restricted-psp-user
    
  2. Cree o actualice el enlace de rol de clúster restricted-psp-user.

ClusterRoleBinding restricted-psp-user no tiene los temas esperados

Si este cambio ha sido intencionado, primero debe determinar si las aplicaciones se pueden ejecutar correctamente con el enlace de rol de clúster.

A continuación, cree o actualice el enlace de rol de clúster restricted-psp-user.

Creación o actualización de la privileged-psp-user ClusterRoleBinding

Cree o actualice el enlace de rol de clúster de privileged-psp-user ejecutando el mandato siguiente.

kubectl apply -f - <<EOF
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: privileged-psp-user
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: ibm-privileged-psp-user
subjects:
- apiGroup: rbac.authorization.k8s.io
  kind: Group
  name: system:masters
- apiGroup: rbac.authorization.k8s.io
  kind: Group
  name: system:nodes
- apiGroup: rbac.authorization.k8s.io
  kind: Group
  name: system:serviceaccounts
- apiGroup: rbac.authorization.k8s.io
  kind: Group
  name: system:authenticated
EOF

Creación del enlace de rol de clúster de restricted-psp-user

Cree o actualice el archivo de configuración de la aplicación ( restricted-psp-user ) ClusterRoleBinding ejecutando el siguiente comando.

kubectl apply -f - <<EOF
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: restricted-psp-user
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: ibm-restricted-psp-user
subjects:
- apiGroup: rbac.authorization.k8s.io
  kind: Group
  name: system:masters
- apiGroup: rbac.authorization.k8s.io
  kind: Group
  name: system:nodes
- apiGroup: rbac.authorization.k8s.io
  kind: Group
  name: system:serviceaccounts
- apiGroup: rbac.authorization.k8s.io
  kind: Group
  name: system:authenticated
EOF