Ubuntu 노드를 사용하는 1.20 이상에서 마이그레이션된 워크로드 실패

AppArmor를 사용하면 시스템 관리자가 배포된 컨테이너의 기능을 제한할 수 있습니다. 마이그레이션된 컨테이너 워크로드를 배포하려면 Migrate to Containers를 사용하려면 Linux LXC 패키지에서 제공하는 AppArmor 프로필이 필요합니다.

하지만 Google Kubernetes Engine(GKE) 1.20으로 업데이트할 때 Ubuntu 노드 이미지에는 LXC 패키지가 더 이상 기본적으로 포함되지 않습니다. 즉, 기존 클러스터에 대해 GKE 1.20 이상으로 업그레이드된 Ubuntu 노드를 사용하는 새 배포 클러스터는 마이그레이션된 워크로드를 실행할 수 없습니다.

GKE 버전 1.20 이상의 Ubuntu 노드에 컨테이너 워크로드를 배포하면 워크로드가 비정상 종료 루프로 전환될 수 있으며 로그에 다음 형식의 오류 메시지가 포함됩니다.

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

이 문제를 해결하려면 다음 단계를 따르세요.

  1. 다음 형식의 명령어를 사용하여 배포 클러스터에 연결합니다.

    gcloud container clusters get-credentials CLUSTER --zone ZONE --project PROJECT
  2. 다음 명령어를 사용하여 배포 클러스터에 Linux LXC 패키지를 수동으로 설치합니다.

    migctl setup install --cos-runtime