הגדרת אשכולות לשימוש ב-OpenStack

הפעלת תוכנת Distributed Cloud ל-bare metal בלבד ב-OpenStack מאפשרת לשלב את האשכולות עם תשתית כשירות (IaaS), איזון עומסים כשירות (LBaaS) ואחסון של OpenStack. כשמגדירים את האשכולות לספק שירותי ענן חיצוני, תהליך האיניציאליזציה של הצומת מועבר ל-OpenStack.

אתם יכולים להקצות באופן אוטומטי משאבי OpenStack LBaaS במקום MetalLB כדי לחשוף שירותים שפועלים באשכולות שלכם לדיירים אחרים ב-OpenStack או מחוץ לרשת OpenStack. למידע נוסף על התכונות והיתרונות של OpenStack, קראו את המסמכים של OpenStack.

במסמך הזה מוסבר רק איך להגדיר את האשכול לשימוש עם OpenStack. במדריכים הבאים מוסבר איך לפרוס את הפתרון:

  • במאמר פריסת אשכול ב-OpenStack מוסבר איך לפרוס אשכול היברידי במכונות וירטואליות (VM) של OpenStack. הפריסה משתמשת בסקריפט כדי לפשט את ההתקנה. במדריך מוסבר גם איך להפעיל איזון עומסים כשירות (LBaaS).

  • במאמר Configure the OpenStack Cloud Provider for Kubernetes מוסבר איך להתקין את ספק שירותי הענן של OpenStack באשכול שנפרס ב-OpenStack. לא צריך את ספק שירותי הענן של OpenStack כדי להשתמש בתוכנת Google Distributed Cloud עם OpenStack.

לפני שמתחילים

  • מחליטים אילו אשכולות צריכים להשתמש במשאבי OpenStack LBaaS.

    אחרי שיוצרים אשכול שמוגדר להשתמש במשאבי OpenStack LBaaS, אי אפשר לשנות את ההגדרה כדי לעבור למשאבי MetalLB. חשוב לוודא שאתם מפעילים את האשכולות עם ההגדרות הנכונות של ספק שירותי הענן.

  • מוודאים שיש לכם גישה למכונות שאתם מנסים להגדיר.

מידע נוסף על הפעלת cloud-controller-manager זמין במסמכי התיעוד של Kubernetes.

שינוי קובץ התצורה של האשכול

ב-OpenStack Kubernetes Cloud Provider, צריך להריץ את kubelet בכל הצמתים עם הארגומנט הבא:

cloud-provider: "external"

כדי לוודא שהאשכול עומד בדרישה הזו, מוסיפים את ההערה baremetal.cluster.gke.io/external-cloud-provider: "true" לקובץ התצורה של האשכול בקטע המטא-נתונים לפני שיוצרים את האשכול.

הרשומה בקובץ התצורה אמורה להיראות כמו בדוגמה הבאה:

apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
  name: cluster1
  namespace: cluster-cluster1
  annotations:
    baremetal.cluster.gke.io/external-cloud-provider: "true"
spec:
  ...

חלק מספקי שירותי הענן בפלטפורמות ענן אחרות דורשים פורמט מיוחד ל-providerID. ‫Google Distributed Cloud יוצר providerID בפורמט כמו baremetal://MACHINE_ADDRESS לכל מכונת צומת. אם רוצים להגדיר providerID שונה, אפשר לציין אחד לכל צומת יחד עם כתובת ה-IP.

בקובץ התצורה הבא של אשכול לדוגמה, אפשר לראות איך מציינים את providerID לצומתי האשכול:

 apiVersion: baremetal.cluster.gke.io/v1
 kind: Cluster
 metadata:
   name: cluster1
   namespace: cluster-cluster1
 spec:
   clusterNetwork:
     pods:
       cidrBlocks:
       - 192.168.0.0/16
     services:
       cidrBlocks:
       - 10.96.0.0/20
   controlPlane:
     nodePoolSpec:
       nodes:
       - address: 10.200.0.1
+        providerID: some-prefix://unique-string
       - address: 10.200.0.2
+        providerID: some-prefix2://unique-string2
  ...

---
 apiVersion: baremetal.cluster.gke.io/v1
 kind: NodePool
 metadata:
   name: nodepool1
   namespace: cluster-cluster1
 spec:
   clusterName: cluster1
   nodes:
   - address: 172.18.0.2
+    providerID: some-prefix3://unique-string3

יצירת האשכול

אחרי שערכתם את קובץ התצורה, השתמשו בפקודה הבאה כדי להפעיל את האשכול:

bmctl create cluster -c cluster1

מידע נוסף על יצירת אשכולות זמין במאמר סקירה כללית על יצירת אשכולות.

הגדרת הצומת

כשיוצרים אשכול שמוגדר ל-OpenStack, בצומתי האשכול מתבצעים השינויים הבאים:

  • כל הצמתים ב-cluster1 פועלים עם הארגומנט הנדרש: cloud-provider: "external".

  • לכל הצמתים יש גם את ה-taint הבא שנוסף לקובצי התצורה שלהם:

    taints:
    - effect: NoSchedule
      key: node.cloudprovider.kubernetes.io/uninitialized
      value: "true"
    

    הכתמים האלה יוסרו אחרי שתפעילו את ספק שירותי הענן באשכול הזה.

  • ‫kubelet פועל עם providerID שציינתם בקובץ התצורה של האשכול.

המאמרים הבאים