מידע על סביבת זמן הריצה של קונטיינרים ב-containerd

ב-Google Distributed Cloud, זמן הריצה של קונטיינרים הוא containerd בכל הצמתים של אשכולות האדמין והמשתמשים, כולל צומתי Windows. כסביבת זמן ריצה של קונטיינר שסיימה את שלב האינקובציה ב-Cloud Native Computing Foundation (CNCF), containerd מספקת תמיכה מובנית ב-Kubernetes.

בגרסה 1.24 של Kubernetes הוסר dockershim, הרכיב שמאפשר ל-Kubernetes להשתמש ב-Docker Engine כסביבת זמן הריצה של הקונטיינר. במאמר הזה נסביר איך למצוא מאגרי צמתים שעדיין משתמשים ב-Docker Engine ולעדכן אותם ל-containerd.

תמיכה ב-containerd באשכול אדמין

ב-Google Distributed Cloud, כל הצמתים של אשכולות האדמין משתמשים ב-containerd.

תמיכה ב-containerd באשכול משתמשים

ב-Google Distributed Cloud יש תמיכה בסוגים הבאים של קובצי אימג' של מערכת ההפעלה לצומתי אשכולות של משתמשים:

סוג קובץ האימג' של מערכת ההפעלהסביבת זמן ריצה של קונטיינרים
ubuntu_cgv2containerd
cos_cgv2containerd
windowscontainerd

הגבלות והמלצות

  • החל מגרסה 1.13.0, Google Distributed Cloud לא תומך יותר בסוג קובץ האימג' של מערכת ההפעלה ubuntu. כל הצמתים באשכול חייבים להשתמש בסביבת זמן הריצה של containerd.

  • אי אפשר לשדרג לגרסה 1.13 אשכול שמשתמש ב-Docker Engine. כדי לשדרג לגרסה 1.13, צריך לעדכן את האשכול כך שישתמש בסביבת זמן הריצה של containerd.

  • החל מגרסה 1.12.0, אי אפשר יותר ליצור אשכולות חדשים שמשתמשים בסוג קובץ האימג' של מערכת ההפעלה ubuntu. כלומר, לא תוכלו יותר ליצור אשכולות חדשים שמשתמשים בסביבת זמן הריצה של קונטיינרים של Docker Engine.

איך בודקים אילו מאגרי צמתים משתמשים ב-Docker Engine

Ubuntu

מציגים את רשימת מאגרי הצמתים של Ubuntu שמשתמשים ב-Docker Engine:

kubectl --kubeconfig USER_CLUSTER_KUBECONFIG get onpremnodepools \
    -o json -A | jq -r '.items[] |select(.spec.osImageType == "ubuntu")|.metadata.name'

מחליפים את USER_CLUSTER_KUBECONFIG בנתיב של קובץ ה-kubeconfig של אשכול המשתמש.

פלט לדוגמה:

ubuntu-node-pool-1
ubuntu-node-pool-3

Windows

כל מאגרי הצמתים של Windows באשכול משתמשים באותו זמן ריצה של קונטיינר. סביבת זמן הריצה של צומתי Windows נקבעת לפי הערך של enableWindowsDataplaneV2, שהוא שדה בקובץ התצורה של אשכול המשתמש.

אם הערך של enableWindowsDataplaneV2 הוא true, כל הצמתים של Windows באשכול המשתמש משתמשים ב-containerd. אם הערך הוא false, כל הצמתים של Windows משתמשים ב-Docker Engine.

מריצים את הפקודה הבאה כדי לראות באילו אשכולות משתמשים הערך של enableWindowsDataplaneV2 מוגדר כ-false. כך אפשר לדעת אילו אשכולות משתמשים מוגדרים להשתמש ב-Docker Engine לצומתי Windows.

kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG get onpremuserclusters \
    -A -o json | jq -r '.items[] |select(.spec.enableWindowsDataplaneV2 == false)|.metadata.name'

בפלט מופיעה רשימה של כל אשכולות המשתמשים שמוגדרים להשתמש ב-Docker Engine לצומתי Windows. לדוגמה:

user-cluster-1

אם באשכול המשתמשים יש מאגרי צמתים של Windows, והערך של enableWindowsDataplaneV2 באשכול מוגדר כ-false, לא תוכלו לשדרג אותו לגרסה 1.13.

עדכון מאגרי צמתים של Linux לשימוש ב-containerd

לכל מאגר צמתים בקובץ התצורה של אשכול המשתמש, מגדירים את osImageType osImageType ל-ubuntu_cgv2 או ל-cos_cgv2.

דוגמה:

nodePools
- name: "my-node-pool"
  osImageType: "ubuntu_cgv2"

מעדכנים את אשכול המשתמשים:

gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG

מחליפים את מה שכתוב בשדות הבאים:

  • ‫ADMIN_CLUSTER_KUBECONFIG: הנתיב לקובץ kubeconfig של אשכול האדמין

  • ‫USER_CLUSTER_CONFIG: הנתיב של קובץ ההגדרות של אשכול המשתמש

עדכון צומתי Windows לשימוש ב-containerd

בקובץ התצורה של אשכול המשתמש, מגדירים את enableWindowsDataplaneV2 לערך true.

enableWindowsDataplaneV2: true

מעדכנים את אשכול המשתמשים:

gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG

הפקודה הקודמת מגדירה את סביבת זמן הריצה של הקונטיינר ל-containerd לכל צומתי Windows באשכול.