Die migrierte Arbeitslast schlägt in 1.20 und höher mit Ubuntu-Knoten fehl
AppArmor ermöglicht einem Systemadministrator, die Berechtigungen eines bereitgestellten Containers einzuschränken. Zum Bereitstellen einer migrierten Containerarbeitslast erfordert Migrate to Containers das AppArmor-Profil, das vom Linux-LXC-Paket bereitgestellt wird.
Im Rahmen der Aktualisierung auf Google Kubernetes Engine (GKE) 1.20 enthalten Ubuntu-Knoten-Images das LXC-Paket jedoch nicht mehr standardmäßig. Das bedeutet, dass neue Bereitstellungscluster, die Ubuntu-Knoten verwenden, oder Ubuntu-Knoten für vorhandene Bereitstellungscluster, die auf GKE 1.20 und höher aktualisiert wurden, Ihre migrierten Arbeitslasten nicht ausführen können.
Wenn Sie Containerarbeitslasten auf Ubuntu-Knoten für GKE ab Version 1.20 bereitstellen, kann die Arbeitslast eine Absturzschleife aufweisen und die Logs enthalten Fehlermeldungen im folgenden Format:
D0806 01:59:15.000000 8 hcutil.py:136] SHELL CMD: aa-exec -p lxc-container-default echo 123 D0806 01:59:15.000000 8 hcutil.py:168] SHELL STDERR: b"aa-exec: ERROR: profile 'lxc-container-default' does not exist\n" D0806 01:59:15.000000 8 hcutil.py:168] SHELL STDERR: b'\n' D0806 01:59:15.000000 8 hcutil.py:210] SHELL COMPLETED: 1 (aa-exec -p lxc-container-default echo 123) required AppArmor profile 'lxc-container-default' does not exist, if this pod runs on a GKE node of type 'Container Optimized OS' (COS) please run `migctl setup install --cos-runtime` to install it E0806 01:59:15.000000 8 hcmain.py:22] Traceback (most recent call last): File "./hcmain.py", line 19, in safe_action File "./hcmain.py", line 74, in run_action File "./hcrunner.py", line 392, in validateSystem Exception: Invalid system or AppArmor profile E0806 01:59:15.000000 8 hcmain.py:23] Invalid system or AppArmor profile I0806 01:59:15.000000 8 termination_log.py:4] writing error to termination log at /dev/termination-log
So lösen Sie dieses Problem:
Stellen Sie mit einem Befehl im folgenden Format eine Verbindung zum Deployment-Cluster her:
gcloud container clusters get-credentials CLUSTER --zone ZONE --project PROJECT
Installieren Sie das Linux LXC-Paket manuell mit dem folgenden Befehl auf dem Deployment-Cluster:
migctl setup install --cos-runtime