La carga de trabajo migrada falla en 1.20 y versiones posteriores con nodos de Ubuntu.
AppArmor permite que un administrador del sistema restrinja las funciones de un contenedor desplegado. Para desplegar una carga de trabajo de contenedor migrada, Migrate to Containers necesita el perfil de AppArmor proporcionado por el paquete LXC de Linux.
Sin embargo, como parte de la actualización a Google Kubernetes Engine (GKE) 1.20, las imágenes de nodo de Ubuntu ya no incluyen el paquete LXC de forma predeterminada. Esto significa que los nuevos clústeres de implementación que usen nodos de Ubuntu o los nodos de Ubuntu de los clústeres de implementación que se actualicen a GKE 1.20 y versiones posteriores no podrán ejecutar tus cargas de trabajo migradas.
Al implementar cargas de trabajo de contenedores en nodos de Ubuntu para versiones de GKE 1.20 y posteriores, la carga de trabajo puede entrar en un bucle de fallos y los registros contienen mensajes de error con el siguiente formato:
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
Para solucionar este problema, sigue estos pasos:
Conéctate al clúster de implementación mediante un comando con el siguiente formato:
gcloud container clusters get-credentials CLUSTER --zone ZONE --project PROJECT
Instala manualmente el paquete LXC de Linux en el clúster de implementación mediante el comando:
migctl setup install --cos-runtime