A carga de trabalho migrada falha na versão 1.20 e posteriores com nós do Ubuntu
O AppArmor permite que um administrador do sistema restrinja as capacidades de um contentor implementado. Para implementar uma carga de trabalho de contentor migrada, o Migrate to Containers requer o perfil do AppArmor fornecido pelo pacote LXC do Linux.
No entanto, como parte da atualização para o Google Kubernetes Engine (GKE) 1.20, as imagens de nós do Ubuntu já não incluem o pacote LXC por predefinição. Isto significa que os novos clusters de implementação que usam nós do Ubuntu ou nós do Ubuntu para clusters de implementação existentes que são atualizados para o GKE 1.20 e posterior não podem executar as suas cargas de trabalho migradas.
Quando implementa cargas de trabalho de contentores em nós do Ubuntu para versões 1.20 e posteriores do GKE, a carga de trabalho pode entrar num ciclo de falhas e os registos contêm mensagens de erro no seguinte 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 resolver este problema:
Estabeleça ligação ao cluster de implementação através de um comando no formato:
gcloud container clusters get-credentials CLUSTER --zone ZONE --project PROJECT
Instale manualmente o pacote LXC do Linux no cluster de implementação através do comando:
migctl setup install --cos-runtime