ב-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_cgv2 | containerd |
cos_cgv2 | containerd |
windows | containerd |
הגבלות והמלצות
החל מגרסה 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 באשכול.