Workload yang dimigrasikan gagal pada versi 1.20 dan yang lebih baru dengan node Ubuntu

AppArmor memungkinkan administrator sistem membatasi kemampuan container yang di-deploy. Untuk men-deploy beban kerja container yang dimigrasikan, Migrate to Containers memerlukan profil AppArmor yang disediakan oleh paket LXC Linux.

Namun, sebagai bagian dari update untuk Google Kubernetes Engine (GKE) 1.20, image node Ubuntu tidak lagi menyertakan paket LXC secara default. Artinya, cluster deployment baru yang menggunakan node Ubuntu, atau node Ubuntu untuk cluster deployment yang ada dan diupgrade ke GKE 1.20 dan yang lebih baru, tidak dapat menjalankan beban kerja yang dimigrasikan.

Saat men-deploy beban kerja container di node Ubuntu untuk GKE versi 1.20 dan yang lebih baru, beban kerja tersebut dapat memasuki error loop dan log berisi pesan error dalam bentuk:

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

Untuk menyelesaikan masalah ini:

  1. Hubungkan ke cluster deployment menggunakan perintah dalam format:

    gcloud container clusters get-credentials CLUSTER --zone ZONE --project PROJECT
  2. Instal paket Linux LXC secara manual di cluster deployment menggunakan perintah:

    migctl setup install --cos-runtime