עדכון אשכולות משתמשים

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

סקירה כללית

במקרה של אשכולות משתמשים שמופעלת בהם גרסה 1.20 של Kubernetes ומעלה, אפשר לשנות את המאפיינים הבאים:

ב-Kubernetes 1.22 ואילך, אפשר לעדכן את סוגי המופעים של EC2.

כדי לעדכן את המשאבים האלה, עורכים את המשאבים AWSCluster ו-AWSNodePool.

אחרי שמעדכנים את ההגדרות, GKE ב-AWS מעביר את האשכול או את מאגר הצמתים למצב Updating. כשהעדכון יסתיים, האשכול או מאגר הצמתים יחזרו למצב Provisioned.

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

כדי לשנות את אשכולות המשתמשים, האשכול ומאגר הצמתים צריכים להריץ Kubernetes בגרסה 1.20 ומעלה. אם האשכול שלכם לא מריץ Kubernetes 1.20, קודם צריך לשדרג את אשכול המשתמשים.

כדי לשנות את קבוצות האבטחה של האשכול, לתפקיד AWS IAM (שמוגדר כ-spec.authentication.awsIAM.adminIdentityARNs ב-anthos-gke.yaml) שמנהל את אשכולות המשתמשים של GKE ב-AWS, צריכה להיות ההרשאה ec2:ModifyNetworkInterfaceAttribute.

עדכון קבוצות אבטחה

בקטע הזה מעדכנים את קבוצות האבטחה של אשכול ושל מאגר צמתים. כדי לעדכן את קבוצות האבטחה, פועלים לפי השלבים הבאים:

  1. בספרייה של anthos-aws, משתמשים ב-anthos-gke כדי להעביר את ההקשר לשירות הניהול.

    cd anthos-aws
    anthos-gke aws management get-credentials

  2. פותחים בכלי לעריכת טקסט את קובץ ה-YAML שיצר את ה-AWSCluster. אם אין לכם קובץ YAML ראשוני, אתם יכולים להשתמש ב-kubectl edit.

    עריכת YAML

    אם פעלתם לפי ההוראות במאמר יצירת אשכול משתמשים, קובץ ה-YAML נקרא cluster-0.yaml. פותחים את הקובץ בכלי לעריכת טקסט.

    kubectl edit

    כדי להשתמש ב-kubectl edit כדי לערוך את ה-AWSCluster, מריצים את הפקודה הבאה:

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl edit awscluster cluster-name
    

    מחליפים את cluster-name ב-AWSCluster. לדוגמה, כדי לערוך את האשכול שמוגדר כברירת מחדל, cluster-0, מריצים את הפקודה הבאה:

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl edit awscluster cluster-0
    
  3. עורכים את השדה spec.controlPlane.securityGroupIDs של AWSCluster.

    apiVersion: multicloud.cluster.gke.io/v1
    kind: AWSCluster
    ...
    spec:
      controlPlane:
        securityGroupIDs:
          - SECURITY_GROUP_ID
        ...
    

    מחליפים את SECURITY_GROUP_ID במזהה של קבוצת האבטחה החדשה. כדי להוסיף כמה קבוצות אבטחה, מוסיפים ערכים נוספים למערך בקטע spec.controlPlane.securityGroupIDs.

    בדוגמה הבאה נכללות קבוצות האבטחה sg-12345678ab ו-sg-abcdef1234:

    apiVersion: multicloud.cluster.gke.io/v1
    kind: AWSCluster
    spec:
      controlPlane:
        securityGroupIDs:
          - sg-12345678ab
          - sg-abcdef1234
        ...
    
  4. עורכים את השדה spec.securityGroupIDs במשאבי AWSNodePool.

    apiVersion: multicloud.cluster.gke.io/v1
    kind: AWSNodePool
    spec:
      securityGroupIDs:
        - SECURITY_GROUP_ID
      ...
    
  5. שומרים את הקובץ. אם אתם משתמשים ב-kubectl edit, השינויים יחולו אוטומטית על ידי kubectl. אם עורכים את קובץ ה-YAML, מריצים את הפקודה הבאה כדי להחיל אותו על שירות הניהול:

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl apply -f cluster-0.yaml
    
  6. צריך לבדוק את סטטוס העדכון עם kubectl. בסיום העדכון, המצב של האובייקט משתנה מ-Updating ל-Provisioned.

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl get AWSClusters,AWSNodePools
    

    לדוגמה, בזמן שהאשכול נמצא במצב עדכון, הפלט נראה כך:

    NAME        STATE       AGE      VERSION           ENDPOINT
    cluster-0   Updating    10m41s   1.25.5-gke.2100   gke-xyz.elb.us-east-1.amazonaws.com
    
    NAME               CLUSTER     STATE       AGE       VERSION
    cluster-0-pool-0   cluster-0   Updating    10m40s    1.25.5-gke.2100
    

עדכון סוגי המכונות

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

  1. בספרייה של anthos-aws, משתמשים ב-anthos-gke כדי להעביר את ההקשר לשירות הניהול.

    cd anthos-aws
    anthos-gke aws management get-credentials

  2. פותחים בכלי לעריכת טקסט את קובץ ה-YAML שיצר את ה-AWSCluster. אם אין לכם קובץ YAML ראשוני, אתם יכולים להשתמש ב-kubectl edit.

    עריכת YAML

    אם פעלתם לפי ההוראות במאמר יצירת אשכול משתמשים, קובץ ה-YAML נקרא cluster-0.yaml. פותחים את הקובץ בכלי לעריכת טקסט.

    kubectl edit

    כדי להשתמש ב-kubectl edit כדי לערוך את ה-AWSCluster, מריצים את הפקודה הבאה:

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl edit awscluster cluster-name
    

    מחליפים את cluster-name ב-AWSCluster. לדוגמה, כדי לערוך את האשכול שמוגדר כברירת מחדל, cluster-0, מריצים את הפקודה הבאה:

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl edit awscluster cluster-0
    
  3. עורכים את השדה spec.controlPlane.instanceType של AWSCluster.

    apiVersion: multicloud.cluster.gke.io/v1
    kind: AWSCluster
    ...
    spec:
      controlPlane:
        instanceType: AWS_INSTANCE_TYPE
        ...
    

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

  4. עורכים את השדה spec.instanceType במשאבי AWSNodePool.

    apiVersion: multicloud.cluster.gke.io/v1
    kind: AWSNodePool
    spec:
      instanceType: AWS_INSTANCE_TYPE
      ...
    
  5. שומרים את הקובץ. אם אתם משתמשים ב-kubectl edit, השינויים יחולו אוטומטית על ידי kubectl. אם עורכים את קובץ ה-YAML, מריצים את הפקודה הבאה כדי להחיל אותו על שירות הניהול:

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl apply -f cluster-0.yaml
    
  6. צריך לבדוק את סטטוס העדכון עם kubectl. בסיום העדכון, המצב של האובייקט משתנה מ-Updating ל-Provisioned.

    env HTTPS_PROXY=http://localhost:8118 \
      kubectl get AWSClusters,AWSNodePools
    

    לדוגמה, בזמן שהאשכול נמצא במצב עדכון, הפלט נראה כך:

    NAME        STATE       AGE      VERSION           ENDPOINT
    cluster-0   Updating    10m41s   1.25.5-gke.2100   gke-xyz.elb.us-east-1.amazonaws.com
    
    NAME               CLUSTER     STATE       AGE       VERSION
    cluster-0-pool-0   cluster-0   Updating    10m40s    1.25.5-gke.2100
    

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