A carga de trabalho migrada falha na versão 1.20 e posterior com os nós do Ubuntu

O AppArmor permite que um administrador do sistema restrinja os recursos de um contêiner implantado. Para implantar uma carga de trabalho de contêiner migrada, o Migrate to Containers requer o perfil AppArmor fornecido pelo pacote Linux LXC.

No entanto, como parte da atualização do Google Kubernetes Engine (GKE) 1.20, as imagens de nó do Ubuntu não incluem mais o pacote LXC por padrão. Isso significa que novos clusters de implantação que usam nós do Ubuntu ou nós do Ubuntu para clusters de implantação existentes que são atualizados para o GKE 1.20 e posterior não podem executar as cargas de trabalho migradas.

Ao implantar cargas de trabalho de contêiner em nós do Ubuntu para versões do GKE 1.20 e posteriores, a carga de trabalho pode entrar em um loop de falha e os registros contêm mensagens de erro no 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 o problema:

  1. Conecte-se ao cluster de implantação usando um comando no formulário:

    gcloud container clusters get-credentials CLUSTER --zone ZONE --project PROJECT
  2. Instale manualmente o pacote Linux LXC no cluster de implantação usando o comando:

    migctl setup install --cos-runtime