יצירת אשכול עם מארחים ייעודיים

בדף הזה מוסבר איך ליצור אשכול ומאגר צמתים שמשתמשים במופעים ייעודיים או במארחים ייעודיים של AWS. מארחים ומופעים ייעודיים שמורים לשימוש שלכם בלבד ולא משותפים עם לקוחות אחרים של AWS. ההגדרה למארחים ולמופעים ייעודיים נקראת דיירות.

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

כדי להשתמש במכונות או במארחים ייעודיים ב-GKE ב-AWS, צריך ליצור אשכול חדש בגרסה 1.22.8-gke.200 ואילך. אי אפשר לשדרג אשכול קיים ולהוסיף מארחים ייעודיים.

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

לפני שיוצרים אשכול, צריך להשלים את הדרישות המוקדמות. בפרט, אתם צריכים לספק את המשאבים הבאים:

  • ענן וירטואלי פרטי של AWS שבו האשכול יפעל.
  • עד שלושה תתי-רשתות של AWS לשלוש רפליקות של מישור הבקרה. כל אחד מהם צריך להיות באזור זמינות שונה ב-AWS.
  • תפקיד ה-IAM ב-AWS ש-GKE ב-AWS מקבל כשמנהלים את האשכול. לשם כך נדרש סט ספציפי של הרשאות IAM.
  • מפתחות CMK סימטריים של KMS להצפנת נתונים (etcd) והגדרות של אשכול במצב מנוחה.
  • פרופיל המופע של AWS IAM לכל עותק משוכפל של מישור הבקרה. לשם כך נדרש סט ספציפי של הרשאות IAM.
  • זוג מפתחות SSH של EC2 (אופציונלי) אם אתם צריכים גישת SSH למופעי EC2 שמריצים כל העתק של מישור הבקרה.

באחריותכם ליצור ולנהל את המשאבים האלה, שאפשר לשתף בין כל אשכולות Anthos. כל משאבי ה-AWS הבסיסיים האחרים בהיקף האשכול מנוהלים על ידי GKE ב-AWS.

בהוראות האלה משתמשים ב-GKE Multi-Cloud API כדי ליצור אשכול ומאגר צמתים. לפני שמשתמשים ב-GKE Multi-Cloud API, חשוב להכיר את ממשקיGoogle Cloud API.

מארחים ייעודיים ומופעים ייעודיים

כשיוצרים מאגר צמתים או אשכול, בוחרים אחת מהאפשרויות הבאות:

  • DEFAULT: הפעלת מופעים עם דיירות ברירת המחדל של ה-VPC
  • DEDICATED: הפעלת מכונות במופע ייעודי
  • HOST: הפעלת מופעים במארח ייעודי

לפני שיוצרים אשכול או מאגר צמתים, צריך להחליט איזו אפשרות מתאימה לכם.

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

ערבוב של הגדרות דיירות באשכול

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

הקצאת מארחים ייעודיים

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

  • צריך להשתמש באותן משפחות של מופעים שנדרשות למשאבי האשכול
  • הוקצו באותם אזורים שבהם תכננתם ליצור אשכולות
  • הפעלת מיקום אוטומטי
  • יש לכם מספיק מכסה כדי להפעיל מארחים ייעודיים

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

מגבלות

בקטע הזה מפורטות ההגבלות של תמיכה במארח ייעודי ב-GKE ב-AWS.

מאגרי צמתים

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

משפחות מופעים נתמכות

‫GKE ב-AWS תומך במארחים ייעודיים ממשפחות המופעים הבאות.

  • t3
  • m5
  • m5d
  • c5
  • c5d
  • r5
  • r5d
  • i3en

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

סוגי צמתים

יש תמיכה רק במאגרי צמתים של Linux.

יצירת אשכול

אתם יוצרים אשכול שתומך במארחים ייעודיים באמצעות Method: projects.locations.awsClusters.create עם GKE Multi-Cloud API. כדי ליצור אשכול:

gcloud

בדוגמה הבאה נוצר אשכול עם מארחים ייעודיים.

לפני השימוש בנתוני הפקודה הבאים, צריך להחליף את הנתונים הבאים:

    • CLUSTER_NAME: שם האשכול שבחרתם
    • GOOGLE_CLOUD_LOCATION: האזור הנתמך Google Cloud שבו מתבצע ניהול האשכול. לדוגמה: us-west1
    • AWS_REGION: האזור ב-AWS שבו רוצים ליצור את האשכול
    • API_ROLE_ARN: ה-ARN של תפקיד GKE Multi-Cloud API
    • CONFIG_KMS_KEY_ARN: שם משאב Amazon‏ (ARN) של מפתח AWS KMS להצפנת נתוני משתמשים
    • DB_KMS_KEY_ARN: שם משאב Amazon‏ (ARN) של מפתח AWS KMS להצפנת הסודות של האשכול
    • CONTROL_PLANE_PROFILE: הפרופיל של מופע IAM שמשויך לאשכול
    • CONTROL_PLANE_SUBNET_1, ‏CONTROL_PLANE_SUBNET_2, CONTROL_PLANE_SUBNET_3 עם מזהי רשתות המשנה של שלושת המופעים של מישור הבקרה באשכול
    • TENANCY_TYPE: ההגדרה של הדיירות של מישור הבקרה. יכול להיות DEFAULT, DEDICATED או HOST.
    • CLUSTER_VERSION: A supported cluster version
    • FLEET_PROJECT: פרויקט המארח של ה-Fleet שבו האשכול יירשם. אם רוצים לנהל את האשכול הזה מפרויקט אחר, אפשר לעיין במאמר בנושא רישום בין פרויקטים.
    • POD_ADDRESS_CIDR_BLOCKS: טווח כתובות ה-CIDR של הפודים באשכול
    • SERVICE_ADDRESS_CIDR_BLOCKS: טווח כתובות ה-CIDR של שירותי האשכול
    • VPC_ID: המזהה של ה-VPC ב-AWS עבור האשכול הזה

מריצים את הפקודה הבאה:

‫Linux,‏ macOS או Cloud Shell

gcloud alpha container aws clusters create CLUSTER_NAME \
  --location GOOGLE_CLOUD_LOCATION \
  --aws-region AWS_REGION \
  --role-arn API_ROLE_ARN \
  --config-encryption-kms-key-arn CONFIG_KMS_KEY_ARN \
  --database-encryption-kms-key-arn DB_KMS_KEY_ARN \
  --iam-instance-profile CONTROL_PLANE_PROFILE \
  --subnet-ids CONTROL_PLANE_SUBNET_1,CONTROL_PLANE_SUBNET_2,CONTROL_PLANE_SUBNET_3 \
  --instance-placement TENANCY_TYPE
  --cluster-version CLUSTER_VERSION \
  --fleet-project FLEET_PROJECT \
  --pod-address-cidr-blocks POD_ADDRESS_CIDR_BLOCKS \
  --service-address-cidr-blocks SERVICE_ADDRESS_CIDR_BLOCKS \
  --vpc-id VPC_ID \
  --tags="control-plane=CLUSTER_NAME"

‏Windows (PowerShell)

gcloud alpha container aws clusters create CLUSTER_NAME `
  --location GOOGLE_CLOUD_LOCATION `
  --aws-region AWS_REGION `
  --role-arn API_ROLE_ARN `
  --config-encryption-kms-key-arn CONFIG_KMS_KEY_ARN `
  --database-encryption-kms-key-arn DB_KMS_KEY_ARN `
  --iam-instance-profile CONTROL_PLANE_PROFILE `
  --subnet-ids CONTROL_PLANE_SUBNET_1,CONTROL_PLANE_SUBNET_2,CONTROL_PLANE_SUBNET_3 `
  --instance-placement TENANCY_TYPE
  --cluster-version CLUSTER_VERSION `
  --fleet-project FLEET_PROJECT `
  --pod-address-cidr-blocks POD_ADDRESS_CIDR_BLOCKS `
  --service-address-cidr-blocks SERVICE_ADDRESS_CIDR_BLOCKS `
  --vpc-id VPC_ID `
  --tags="control-plane=CLUSTER_NAME"

Windows‏ (cmd.exe)

gcloud alpha container aws clusters create CLUSTER_NAME ^
  --location GOOGLE_CLOUD_LOCATION ^
  --aws-region AWS_REGION ^
  --role-arn API_ROLE_ARN ^
  --config-encryption-kms-key-arn CONFIG_KMS_KEY_ARN ^
  --database-encryption-kms-key-arn DB_KMS_KEY_ARN ^
  --iam-instance-profile CONTROL_PLANE_PROFILE ^
  --subnet-ids CONTROL_PLANE_SUBNET_1,CONTROL_PLANE_SUBNET_2,CONTROL_PLANE_SUBNET_3 ^
  --instance-placement TENANCY_TYPE
  --cluster-version CLUSTER_VERSION ^
  --fleet-project FLEET_PROJECT ^
  --pod-address-cidr-blocks POD_ADDRESS_CIDR_BLOCKS ^
  --service-address-cidr-blocks SERVICE_ADDRESS_CIDR_BLOCKS ^
  --vpc-id VPC_ID ^
  --tags="control-plane=CLUSTER_NAME"

REST

בדוגמה הבאה נוצר אשכול עם מארחים ייעודיים.

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • ENDPOINT: Google Cloud נקודת הקצה של השירות
  • PROJECT_ID: הפרויקט ב- Google Cloud
  • USERNAME: משתמש שיכול לבצע פעולות כאדמין של אשכול
    • CLUSTER_NAME: שם האשכול שבחרתם
    • GOOGLE_CLOUD_LOCATION: האזור הנתמך Google Cloud שבו מתבצע ניהול האשכול. לדוגמה: us-west1
    • AWS_REGION: האזור ב-AWS שבו רוצים ליצור את האשכול
    • API_ROLE_ARN: ה-ARN של תפקיד GKE Multi-Cloud API
    • CONFIG_KMS_KEY_ARN: שם משאב Amazon‏ (ARN) של מפתח AWS KMS להצפנת נתוני משתמשים
    • DB_KMS_KEY_ARN: שם משאב Amazon‏ (ARN) של מפתח AWS KMS להצפנת הסודות של האשכול
    • CONTROL_PLANE_PROFILE: הפרופיל של מופע IAM שמשויך לאשכול
    • CONTROL_PLANE_SUBNET_1, ‏CONTROL_PLANE_SUBNET_2, CONTROL_PLANE_SUBNET_3 עם מזהי רשתות המשנה של שלושת המופעים של מישור הבקרה באשכול
    • TENANCY_TYPE: ההגדרה של הדיירות של מישור הבקרה. יכול להיות DEFAULT, DEDICATED או HOST.
    • CLUSTER_VERSION: A supported cluster version
    • FLEET_PROJECT: פרויקט המארח של ה-Fleet שבו האשכול יירשם. אם רוצים לנהל את האשכול הזה מפרויקט אחר, אפשר לעיין במאמר בנושא רישום בין פרויקטים.
    • POD_ADDRESS_CIDR_BLOCKS: טווח כתובות ה-CIDR של הפודים באשכול
    • SERVICE_ADDRESS_CIDR_BLOCKS: טווח כתובות ה-CIDR של שירותי האשכול
    • VPC_ID: המזהה של ה-VPC ב-AWS עבור האשכול הזה

ה-method של ה-HTTP וכתובת ה-URL:

POST ENDPOINT/projects/PROJECT_ID/locations/GOOGLE_CLOUD_LOCATION/awsClusters

תוכן בקשת JSON:

{
    "name": "CLUSTER_NAME",
    "authorization": {
        "adminUsers": [
            {
                "username": "USERNAME"
            }
        ]
    },
    "awsRegion": "AWS_REGION",
    "controlPlane": {
        "awsServicesAuthentication": {
            "roleArn": "API_ROLE_ARN"
        },
        "configEncryption": {
            "kmsKeyArn": "CONFIG_KMS_KEY_ARN"
        },
        "databaseEncryption": {
            "kmsKeyArn": "DB_KMS_KEY_ARN"
        },
        "iamInstanceProfile": "CONTROL_PLANE_PROFILE",
        "mainVolume": {},
        "rootVolume": {},
        "sshConfig": {},
        "subnetIds": [
           "CONTROL_PLANE_SUBNET_1",
           "CONTROL_PLANE_SUBNET_2",
           "CONTROL_PLANE_SUBNET_3"
        ],
        "tags": {
            "google:gkemulticloud:cluster": "CLUSTER_NAME"
        },
        "instancePlacement": {
          "tenancy": "TENANCY_TYPE"
        },
        "version": "CLUSTER_VERSION"
    },
    "fleet": {
        "project": "FLEET_PROJECT"
    },
    "networking": {
        "podAddressCidrBlocks": [
            "POD_ADDRESS_CIDR_BLOCKS"
        ],
        "serviceAddressCidrBlocks": [
            "SERVICE_ADDRESS_CIDR_BLOCKS"
        ],
        "vpcId": "VPC_ID"
    }
}

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

אמורים לקבל קוד סטטוס של הצלחה (2xx) ותגובה ריקה.

לאפשרויות נוספות, ראו את Method: projects.locations.awsClusters.create במאמרי העזרה.

יצירת מאגר צמתים

gcloud

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

לפני השימוש בנתוני הפקודה הבאים, צריך להחליף את הנתונים הבאים:

    • GOOGLE_CLOUD_LOCATION: the supported Google Cloud region
    • CLUSTER_NAME: השם של האשכול
    • NODE_POOL_NAME: השם של מאגר הצמתים שמנהל את האשכול – לדוגמה, us-west1
    • MIN_NODES: מספר הצמתים המינימלי שיכול להיות במאגר הצמתים
    • MAX_NODES: המספר המקסימלי של הצמתים שמאגר הצמתים יכול להכיל
    • CONFIG_KMS_KEY_ARN: שם משאב Amazon‏ (ARN) של מפתח AWS KMS שמצפין את נתוני המשתמש
    • NODEPOOL_PROFILE: פרופיל המופע של IAM למכונות וירטואליות במאגר הצמתים
    • ROOT_VOLUME_SIZE: הגודל הרצוי של נפח הבסיס של כל צומת, ב-GB
    • TENANCY_TYPE: ההגדרה של הדיירות של מישור הבקרה. יכול להיות DEFAULT, DEDICATED או HOST.
    • INSTANCE_TYPE: סוג המכונה הרצוי ב-AWS עבור מאגר הצמתים הזה
    • NODEPOOL_SUBNET: המזהה של רשת המשנה שבה יפעל מאגר הצמתים. אם רשת המשנה הזו נמצאת מחוץ לבלוק ה-CIDR הראשי של ה-VPC, צריך לבצע כמה שלבים נוספים. מידע נוסף זמין במאמר בנושא קבוצות אבטחה.
    • CLUSTER_VERSION: A supported cluster version

מריצים את הפקודה הבאה:

‫Linux,‏ macOS או Cloud Shell

gcloud alpha container aws node-pools create NODE_POOL_NAME \
    --cluster CLUSTER_NAME \
    --location GOOGLE_CLOUD_LOCATION \
    --min-nodes MIN_NODES \
    --max-nodes MAX_NODES \
    --config-encryption-kms-key-arn CONFIG_KMS_KEY_ARN \
    --iam-instance-profile NODEPOOL_PROFILE \
    --root-volume-size ROOT_VOLUME_SIZE \
    --instance-placement TENANCY_TYPE
    --instance-type INSTANCE_TYPE \
    --subnet-id NODEPOOL_SUBNET \
    --ssh-ec2-key-pair SSH_KEY_PAIR_NAME \
    --node-version CLUSTER_VERSION \
    --max-pods-per-node 110 \
    --tags "Name=CLUSTER_NAME-NODE_POOL_NAME"

‏Windows (PowerShell)

gcloud alpha container aws node-pools create NODE_POOL_NAME `
    --cluster CLUSTER_NAME `
    --location GOOGLE_CLOUD_LOCATION `
    --min-nodes MIN_NODES `
    --max-nodes MAX_NODES `
    --config-encryption-kms-key-arn CONFIG_KMS_KEY_ARN `
    --iam-instance-profile NODEPOOL_PROFILE `
    --root-volume-size ROOT_VOLUME_SIZE `
    --instance-placement TENANCY_TYPE
    --instance-type INSTANCE_TYPE `
    --subnet-id NODEPOOL_SUBNET `
    --ssh-ec2-key-pair SSH_KEY_PAIR_NAME `
    --node-version CLUSTER_VERSION `
    --max-pods-per-node 110 `
    --tags "Name=CLUSTER_NAME-NODE_POOL_NAME"

Windows‏ (cmd.exe)

gcloud alpha container aws node-pools create NODE_POOL_NAME ^
    --cluster CLUSTER_NAME ^
    --location GOOGLE_CLOUD_LOCATION ^
    --min-nodes MIN_NODES ^
    --max-nodes MAX_NODES ^
    --config-encryption-kms-key-arn CONFIG_KMS_KEY_ARN ^
    --iam-instance-profile NODEPOOL_PROFILE ^
    --root-volume-size ROOT_VOLUME_SIZE ^
    --instance-placement TENANCY_TYPE
    --instance-type INSTANCE_TYPE ^
    --subnet-id NODEPOOL_SUBNET ^
    --ssh-ec2-key-pair SSH_KEY_PAIR_NAME ^
    --node-version CLUSTER_VERSION ^
    --max-pods-per-node 110 ^
    --tags "Name=CLUSTER_NAME-NODE_POOL_NAME"

REST

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

לפני שמשתמשים בנתוני הבקשה, צריך להחליף את הנתונים הבאים:

  • ENDPOINT: Google Cloud נקודת הקצה של השירות
  • PROJECT_ID: הפרויקט ב- Google Cloud
  • USERNAME: משתמש שיכול לבצע פעולות כאדמין של אשכול
    • GOOGLE_CLOUD_LOCATION: the supported Google Cloud region
    • CLUSTER_NAME: השם של האשכול
    • NODE_POOL_NAME: השם של מאגר הצמתים שמנהל את האשכול – לדוגמה, us-west1
    • MIN_NODES: מספר הצמתים המינימלי שיכול להיות במאגר הצמתים
    • MAX_NODES: המספר המקסימלי של הצמתים שמאגר הצמתים יכול להכיל
    • CONFIG_KMS_KEY_ARN: שם משאב Amazon‏ (ARN) של מפתח AWS KMS שמצפין את נתוני המשתמש
    • NODEPOOL_PROFILE: פרופיל המופע של IAM למכונות וירטואליות במאגר הצמתים
    • ROOT_VOLUME_SIZE: הגודל הרצוי של נפח הבסיס של כל צומת, ב-GB
    • TENANCY_TYPE: ההגדרה של הדיירות של מישור הבקרה. יכול להיות DEFAULT, DEDICATED או HOST.
    • INSTANCE_TYPE: סוג המכונה הרצוי ב-AWS עבור מאגר הצמתים הזה
    • NODEPOOL_SUBNET: המזהה של רשת המשנה שבה יפעל מאגר הצמתים. אם רשת המשנה הזו נמצאת מחוץ לבלוק ה-CIDR הראשי של ה-VPC, צריך לבצע כמה שלבים נוספים. מידע נוסף זמין במאמר בנושא קבוצות אבטחה.
    • CLUSTER_VERSION: A supported cluster version

ה-method של ה-HTTP וכתובת ה-URL:

POST ENDPOINT/projects/PROJECT_ID/locations/GOOGLE_CLOUD_LOCATION/CLUSTER_NAME/awsNodePools

תוכן בקשת JSON:

{
    "name": "NODE_POOL_NAME",
    "autoscaling": {
        "minNodeCount": MIN_NODES,
        "maxNodeCount": MAX_NODES
    },
    "config": {
        "configEncryption": {
            "kmsKeyArn": "CONFIG_KMS_KEY_ARN"
        },
        "iamInstanceProfile": "NODEPOOL_PROFILE",
        "rootVolume": {
            "sizeGib": ROOT_VOLUME_SIZE
        },
        "instancePlacement": {
          "tenancy": "TENANCY_TYPE"
        },
        "instanceType" : "INSTANCE_TYPE"
        "tags": {
            "google:gkemulticloud:cluster": "NODE_POOL_NAME"
        }
    },
    "maxPodsConstraint": {
        "maxPodsPerNode": "110"
    },
    "subnetId": "NODEPOOL_SUBNET",
    "version": "CLUSTER_VERSION"
}

כדי לשלוח את הבקשה צריך להרחיב אחת מהאפשרויות הבאות:

אמורים לקבל קוד סטטוס של הצלחה (2xx) ותגובה ריקה.

אפשרויות נוספות מופיעות במאמרי העזרה בנושא Method: projects.locations.awsClusters.awsNodePools.create.

סידור וארגון

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

  1. מחיקת מאגרי צמתים
  2. מחיקת אשכול
  3. אחרי שמוחקים את מאגרי הצמתים ואת האשכול, אפשר לשחרר מארחים ייעודיים.

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