Warum schlägt mein Cluster-Upgrade aufgrund der Voraussetzungen für das Upgrade der Pod-Sicherheit fehl?
Wenn Sie Ihr IBM Cloud Kubernetes Service von der Version Kubernetes ( 1.24 ) auf die Version 1.25 aktualisieren, schlägt die Aktualisierung fehl und es wird eine Fehlermeldung angezeigt, die dem folgenden Beispiel ähnelt.
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'
Der KubernetesPodSecurityPolicy-Zugriffskontroller wurde in Kubernetes 1.25 entfernt und durch einen neuen -Zugriffskontroller ersetzt.
Für ein sicheres Upgrade von IBM Cloud Kubernetes Service-Clustern von Version 1.24 auf Version 1.25müssen der Cluster PodSecurityPolicies (PSP) und die zugehörige rollenbasierte Zugriffssteuerung die folgenden Voraussetzungen erfüllen.
- Über die 5 IBM Cloud definierten PSPs hinaus können keine PSPs vorhanden sein.
- Die für IBM Cloud definierten Clusterrollenbindungen, die allen Benutzern und Servicekonten die Berechtigung zur Verwendung der für IBM Cloud definierten privilegierten und eingeschränkten PSPs erteilen, müssen vorhanden sein.
Diese Voraussetzungen stellen sicher, dass die Konfiguration des Clusters der Version 1.24 PodSecurityPolicy der Version 1.25 entspricht und dass das Upgrade und der Wechsel zu Pod Security Admission vorhandene Anwendungen nicht unterbrechen.
Beachten Sie, dass diese Voraussetzungen die Verwendung von Pod-Sicherheitsprovidern anderer Anbieter nicht ausschließen.
Vorbereitende Schritte
- Lesen Sie die Versionsinformationen und Aktualisierungshinweise zu 1.25 (Version archiviert).
- Lesen Sie das Handbuch Migration von PSPs auf Pod Security Admission.
Wenn Sie nicht zur Migration auf Pod Security Admission bereit sind, können Sie die Statusnachricht löschen, indem Sie eine Cluster-Master-Aktualisierung durchführen.
Wenn Sie die für das Upgrade von Pod Security Admission erforderlichen Vorbereitungsschritte bereits durchgeführt haben, weist die Fehlermeldung auf eine möglicherweise übersehene Aktion oder eine unerwartete Änderung an durch IBM Cloud Kubernetes Service definierten Ressourcen hin, die Sie beheben müssen. Führen Sie abhängig von der Nachricht, die angezeigt wird, die folgenden Schritte aus.
Konnte nicht abgerufen werden PodSecurityPolicies
- Führen Sie den folgenden Befehl aus, um Ihre PSPs abzurufen.
kubectl get podsecuritypolicies - Wenn kein Fehler auftritt, versuchen Sie erneut, das Upgrade für den Cluster-Master durchzuführen.
Nicht-IBM PodSecurityPolicy gefunden
Es müssen zusätzliche PSPs entfernt werden.
Stellen Sie vor dem Upgrade Ihres Clusters auf Version 1.25sicher, dass nur die folgenden PSPs vorhanden sind.
ibm-privileged-pspibm-anyuid-pspibm-anyuid-hostpath-pspibm-anyuid-hostaccess-pspibm-restricted-psp
-
Listen Sie Ihre PSPs auf.
kubectl get podsecuritypolicies -
Wenn die zusätzliche PodSecurityPolicy nicht mehr verwendet wird, löschen Sie sie. Wenn zusätzliche Pod-Sicherheitsrichtlinien vorhanden sind, lesen Sie das Migrationshandbuch.
kubectl delete podsecuritypolicies PSP -
Wiederholen Sie das Cluster-Upgrade.
ClusterRoleBinding konnte nicht als privilegierter PSP-Benutzer angemeldet werden
Diese Nachricht gibt an, dass die privileged-psp-user-Clusterrollenbindung nicht vorhanden ist oder dass ein anderer Fehler die Upgradeoperation daran gehindert hat, die Ressource zu lesen.
- Die Ressource auflisten.
kubectl get clusterrolebindings privileged-psp-user - Wenn der Fehler
NotFoundangezeigt wird, erstellen oder aktualisieren Sie dieprivileged-psp-user-Clusterrollenbindung.
ClusterRoleBinding privileged-psp-user hat nicht erwartet roleRef
Dieser Fehler weist auf eine unerwartete Änderung hin und darauf, dass die Clusterrollenbindung auf die falsche Clusterrolle verweist.
-
Löschen Sie die Cluster-Rollenbindung.
kubectl delete clusterrolebinding privileged-psp-user -
Erstellen Sie die
privileged-psp-user-Clusterrollenbindung.
ClusterRoleBinding privileged-psp-user hat keine erwarteten Themen
Wenn diese Änderung beabsichtigt war, müssen Sie zuerst ermitteln, ob Ihre Apps mit der Clusterrollenbindung ausgeführt werden können. Wenn dies möglich ist, erstellen oder aktualisieren Sie die Clusterrollenbindung restricted-psp-user.
ClusterRoleBinding konnte nicht abgerufen werden restricted-psp-user
Diese Nachricht gibt an, dass die restricted-psp-user-Clusterrollenbindung nicht vorhanden ist oder dass ein anderer Fehler das Lesen der Ressource durch die Upgradeoperation verhindert hat.
- Rufen Sie die Details der
restricted-psp-user-Clusterrollenbindung ab.kubectl get clusterrolebindings restricted-psp-user - Wenn der Fehler
NotFoundangezeigt wird, erstellen oder aktualisieren Sie die Clusterrollenbindung für restricted-psp-user.
ClusterRoleBinding restricted-psp-user hat nicht erwartet roleRef
Dieser Fehler gibt an, dass es sich um eine unerwartete Änderung handelt und dass die Clusterrollenbindung auf die falsche Clusterrolle verweist.
Führen Sie die folgenden Schritte aus, um die roleRef.
- Löschen Sie die Cluster-Rollenbindung.
kubectl delete clusterrolebinding restricted-psp-user - Clusterrollenbindung für 'restricted-psp-user' erstellen oder aktualisieren.
ClusterRoleBinding "restricted-psp-user" hat nicht die erwarteten Themen
Wenn diese Änderung beabsichtigt war, müssen Sie zuerst bestimmen, ob Anwendungen ordnungsgemäß mit der Clusterrollenbindung ausgeführt werden.
Erstellen oder aktualisieren Sie anschließend restricted-psp-user Clusterrollenbindung.
Erstellen oder Aktualisieren der privileged-psp-user ClusterRoleBinding
Erstellen oder aktualisieren Sie die privileged-psp-user-Clusterrollenbindung, indem Sie den folgenden Befehl ausführen.
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
restricted-psp-user-Clusterrollenbindung erstellen
Erstellen oder aktualisieren Sie die restricted-psp-user ClusterRoleBinding, indem Sie den folgenden Befehl ausführen.
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