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

זמן הריצה של הקונטיינר הוא תוכנה שאחראית לניהול קונטיינרים וקובצי אימג' של קונטיינרים בצומת Kubernetes. ‏containerd הוא זמן ריצה של קונטיינר שהוא CNCF (Cloud Native Cloud Foundation) graduated. הוא תומך ב-Kubernetes באופן מקורי, ונחשב ליעיל יותר מבחינת משאבים ומאובטח יותר מ-Docker Engine ל-Kubernetes. עד Kubernetes 1.20, ‏ Docker Engine היה זמן הריצה העיקרי של הקונטיינרים. עם זאת, Dockershim, קוד השילוב של Docker Engine ב-Kubernetes, הוצא משימוש ב-Kubernetes 1.20, והוסר ב-Kubernetes 1.24.

מעכשיו, מומלץ להשתמש ב-containerd באשכולות.

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

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

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

‫Google Distributed Cloud תומך בסוגי תמונות של מערכות הפעלה הבאים לצמתים של אשכולות משתמשים:

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

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

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

  • אי אפשר לשדרג אשכול שמשתמש ב-Docker Engine לגרסה 1.13. כדי לשדרג לגרסה 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 לערך ubuntu_containerd או cos.

דוגמה:

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

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

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 באשכול.