¿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
- Revise la información de la versión 1.25 y las acciones de actualización.
- Revise la guía Migración de PSP a Admisión de seguridad de pod.
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
- Ejecute el siguiente comando para obtener sus PSP.
kubectl get podsecuritypolicies
- 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
-
Liste los PSP.
kubectl get podsecuritypolicies
-
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
-
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.
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.
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.
- Obtenga los detalles del enlace de rol de clúster de
restricted-psp-user
.kubectl get clusterrolebindings restricted-psp-user
- 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
).
- Eliminar el enlace de rol de clúster.
kubectl delete clusterrolebinding restricted-psp-user
- 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