בדף הזה מוסבר איך ליצור אשכול ומאגר צמתים שמשתמשים במופעים ייעודיים או במארחים ייעודיים של AWS. מארחים ומופעים ייעודיים שמורים לשימוש שלכם בלבד ולא משותפים עם לקוחות אחרים של AWS. ההגדרה למארחים ולמופעים ייעודיים נקראת דיירות.
לפני שמתחילים
כדי להשתמש במכונות או במארחים ייעודיים עם GKE ב-AWS, צריך ליצור אשכול חדש בגרסה 1.22.8-gke.200 ואילך. אי אפשר לשדרג אשכול קיים ולהוסיף מארחים ייעודיים.
הדרישות לגבי אשכולות
לפני שיוצרים אשכול, צריך להשלים את הדרישות המוקדמות. בפרט, אתם צריכים לספק את המשאבים הבאים:
- AWS VPC שבו האשכול יפעל.
- עד שלושה תתי-רשתות של 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: הפעלת מופעים במארח ייעודי
לפני שיוצרים אשכול או מאגר צמתים, צריך להחליט איזו אפשרות מתאימה לכם.
מידע נוסף זמין במאמרים Configuring instance tenancy with a launch configuration, dedicated instances ו-dedicated hosts במסמכי 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: גרסת אשכול נתמכת
- 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: your Google Cloud service endpoint
- 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: גרסת אשכול נתמכת
- 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: גרסת אשכול נתמכת
מריצים את הפקודה הבאה:
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: your Google Cloud service endpoint
- 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: גרסת אשכול נתמכת
ה-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.
סידור וארגון
כדי למחוק אשכול באמצעות מארחים ייעודיים, מבצעים את השלבים הבאים:
- מחיקת מאגרי צמתים
- מחיקת אשכול
- אחרי שמוחקים את מאגרי הצמתים ואת האשכול, אפשר לשחרר את המארחים הייעודיים.
המאמרים הבאים
- אפשר לקרוא את AWSInstancePlacement.