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
이 문제를 해결하려면 다음 단계를 따르세요.
다음 형식의 명령어를 사용하여 배포 클러스터에 연결합니다.
gcloud container clusters get-credentials CLUSTER --zone ZONE --project PROJECT
다음 명령어를 사용하여 배포 클러스터에 Linux LXC 패키지를 수동으로 설치합니다.
migctl setup install --cos-runtime