במאמר הזה מוסבר איך להסיר כתובות IP סטטיות מאשכול ב-Google Distributed Cloud.
כשיוצרים אשכול שמשתמש בכתובות IP סטטיות לצמתים, מציינים קבוצה של כתובות IP בקובץ של טווח כתובות IP. אם תבינו בהמשך שציינתם יותר כתובות IP ממה שצריך, תוכלו להסיר חלק מכתובות ה-IP מהאשכול.
הסרת כתובות IP מאשכול משתמשים
מוודאים שיישארו מספיק כתובות IP אחרי ההסרה. צריך כתובת IP אחת לכל צומת באשכול, ועוד כתובת IP אחת שתשמש לצומת זמני במהלך שדרוגים. לדוגמה, אם יש לכם שלושה צמתי אשכול, תצטרכו ארבע כתובות IP שיישארו אחרי ההסרה.
איך לעשות את זה?
לכל אשכול משתמשים משויך יש משאב מותאם אישית מסוג OnPremUserCluster באשכול הניהול. באשכול האדמין, עורכים את המשאב המותאם אישית OnPremUserCluster באשכול המשתמשים:
kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG edit onpremusercluster USER_CLUSTER_NAME \ --namespace USER_CLUSTER_NAME-gke-onprem-mgmtמחליפים את מה שכתוב בשדות הבאים:
- ADMIN_CLUSTER_KUBECONFIG: הנתיב לקובץ kubeconfig של אשכול האדמין
- USER_CLUSTER_NAME: השם של אשכול המשתמשים
הסרת כתובות ה-IP שנבחרו מהקטע
ipBlocks:network: ... ipMode: ipBlocks: - gateway: 198.51.100.254 ips: - hostname: user-host1 ip: 198.51.100.1 - hostname: user-host2 ip: 198.51.100.2 - hostname: user-host3 ip: 198.51.100.3 - hostname: user-host4 ip: 198.51.100.4 - hostname: user-host5 ip: 198.51.100.5 netmask: 255.255.255.0 type: staticסוגרים את סשן העריכה.
בקטגוריית המשתמשים, מציגים את כל אובייקטי המכונה במרחב השמות שמוגדר כברירת מחדל:
kubectl --kubeconfig USER_CLUSTER_KUBECONFIG get machines --output yaml
מוחקים את כל אובייקטי המכונות שמשתמשים באחת מכתובות ה-IP שהוסרו. לדוגמה, נניח שהסרתם את הכתובת 198.51.100.1, וגיליתם שאובייקט המכונה
my-node-pool-1234משתמש בכתובת הזו:Name: my-node-pool-1234 Namespace: default Labels: kubernetes.googleapis.com/cluster-name=my-cluster kubernetes.googleapis.com/cluster-namespace=default ... Annotations: ... vm-ip-address: 198.51.100.1לאחר מכן צריך להסיר את אובייקט המכונה
my-node-pool-1234.kubectl --kubeconfig USER_CLUSTER_KUBECONFIG delete machine my-node-pool-1234
אחרי כמה דקות, צופים בכתובות של צומתי האשכול:
kubectl --kubeconfig USER_CLUSTER_KUBECONFIG get nodes --output wide
מוודאים שכתובות ה-IP שהוסרו לא מופיעות בפלט. לדוגמה:
myhost2 Ready ... 198.51.100.2 myhost3 Ready ... 198.51.100.3 myhost4 Ready ... 198.51.100.4
הסרת כתובות IP מאשכול אדמין
מוודאים שיישארו מספיק כתובות IP אחרי ההסרה. צריך כתובת IP אחת לצומת של מישור הבקרה של אשכול האדמין, שתי כתובות לצמתים של תוספים וכתובת IP נוספת לשימוש בצומת זמני במהלך שדרוגים. בנוסף, לכל אשכול משתמשים משויך, צריך כתובת אחת או שלוש למישור הבקרה של אשכול המשתמשים. כל אשכול משתמשים עם זמינות גבוהה (HA) דורש שלושה צמתים באשכול האדמין עבור מישור הבקרה של אשכול המשתמשים. כל אשכול משתמשים שאינו HA דורש צומת אחד באשכול האדמין עבור מישור הבקרה של אשכול המשתמשים.
לדוגמה, נניח שקלאסטר האדמין משויך לקלאסטר משתמש אחד עם זמינות גבוהה ולקלאסטר משתמש אחד ללא זמינות גבוהה. אחרי ההסרה, צריכים להישאר לכם שמונה כתובות IP כדי להכיל את הצמתים הבאים:
- צומת מישור הבקרה של אדמין קלאסטר
- שני צמתים להוספה
- שלושה צמתים למישור הבקרה של אשכול המשתמשים עם זמינות גבוהה
- צומת אחד למישור הבקרה של אשכול משתמשים ללא זמינות גבוהה
- צומת זמני לשימוש במהלך שדרוגים
איך לעשות את זה?
קובעים את כתובת ה-IP שמשמשת לצומת של מישור הבקרה באשכול הניהול:
kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG get nodes --output wide
בפלט, מחפשים את הצומת שמופיע כמישור הבקרה. חשוב לשים לב לכתובת ה-IP.
gke-admin-master-hdn4z Ready control-plane,master … 198.51.100.101 ...
ב-admin cluster, עורכים את המשאב המותאם אישית OnPremAdminCluster:
kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG edit onpremadmincluster --namespace kube-system
מחליפים את ADMIN_CLUSTER_KUBECONFIG בנתיב של קובץ ה-kubeconfig של אשכול האדמין.
הסרת כתובות ה-IP שנבחרו מהקטע
ipBlocks. חשוב לוודא שלא מסירים את כתובת ה-IP שמשמשת לצומת של מישור הבקרה באשכול האדמין.network: ... ipMode: ipBlocks: - gateway: 198.51.100.254 ips: - hostname: admin-host1 ip: 198.51.100.101 - hostname: admin-host2 ip: 198.51.100.102 - hostname: admin-host3 ip: 198.51.100.103 - hostname: admin-host4 ip: 198.51.100.104 - hostname: admin-host5 ip: 198.51.100.105 - hostname: admin-host6 ip: 198.51.100.106 - hostname: admin-host7 ip: 198.51.100.107 - hostname: admin-host8 ip: 198.51.100.108 - hostname: admin-host9 ip: 198.51.100.109 netmask: 255.255.255.0 type: staticסוגרים את סשן העריכה.
בקטע 'אשכול אדמין', אפשר לראות את כל אובייקטי המכונות במרחב השמות שמוגדר כברירת מחדל:
kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG get machines --output yaml
מוחקים את כל אובייקטי המכונות שמשתמשים באחת מכתובות ה-IP שהוסרו. לדוגמה, נניח שהסרתם את הכתובת 198.51.100.102, ואז גיליתם שאובייקט המכונה
gke-admin-node-משתמש בכתובת הזו:Name: gke-admin-node-5678 Namespace: default ... Status: Addresses: Address: 198.51.100.102 Type: ExternalIP ...
לאחר מכן צריך להסיר את אובייקט המכונה
gke-admin-node-5678.kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG delete machine gke-admin-node-5678
מציגים את הכתובות של צומתי האשכול:
kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG get nodes --output wide
מוודאים שכתובות ה-IP שהוסרו לא מופיעות בפלט. לדוגמה:
gke-admin-master-hdn4z Ready control-plane,master 198.51.100.101 gke-admin-node-abcd Ready ... 198.51.100.103 gke-admin-node-efgh Ready ... 198.51.100.104 my-user-cluster-ijkl Ready ... 198.51.100.105 my-user-cluster-mnop Ready ... 198.51.100.106 my-user-cluster-qrst Ready ... 198.51.100.107 my-user-cluster-uvwx Ready ... 198.51.100.108