עומס עבודה שהועבר נכשל בגרסה 1.20 ואילך עם צמתי Ubuntu

AppArmor מאפשר למנהל מערכת להגביל את היכולות של קונטיינר שנפרס. כדי לפרוס עומס עבודה של קונטיינר שהועבר, כלי Migrate to Containers דורש את פרופיל AppArmor שסופק על ידי חבילת Linux LXC.

עם זאת, במסגרת העדכון ל-Google Kubernetes Engine‏ (GKE) 1.20, תמונות של צמתי Ubuntu לא כוללות יותר את חבילת LXC כברירת מחדל. המשמעות היא שאשכולות פריסה חדשים שמשתמשים בצמתי Ubuntu, או צמתי Ubuntu באשכולות פריסה קיימים שמשודרגים ל-GKE 1.20 ואילך, לא יכולים להריץ את עומסי העבודה שהועברו.

כשפורסים עומסי עבודה של קונטיינרים בצמתי Ubuntu בגרסאות GKE 1.20 ואילך, עומס העבודה יכול להיכנס ללולאת קריסה והיומנים מכילים הודעות שגיאה בפורמט:

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