במאמר הזה מוסבר איך להתאים אישית את ההגדרות של אשכול משתמשים ב-GKE on AWS.
יכול להיות שתרצו ליצור אשכול משתמשים בהתאמה אישית מהסיבות הבאות:
- יצירת אשכול נוסף לסביבת הכנה או לסביבת בדיקה.
- הוספת מאגרי צמתים עם סוגים שונים של מכונות.
- יצירת אשכול באזורי זמינות (AZ) ספציפיים ב-AWS.
לפני שמתחילים
לפני שמתחילים להשתמש ב-GKE on AWS, חשוב לוודא שביצעתם את המשימות הבאות:
- ממלאים את הדרישות המוקדמות.
מתקינים שירות ניהול.
אם רוצים ליצור אשכול בלי להשתמש ב-
terraform output example_cluster, צריך שיהיו לכם רשתות משנה פרטיות של AWS למישור הבקרה. כל רשת משנה צריכה להיות שייכת לאזור זמינות אחר באותו אזור AWS. צריך להגדיר טבלאות ניתוב כדי לאפשר תעבורת נתונים בין רשתות משנה פרטיות, ולכל רשת משנה צריכה להיות גישה לשער NAT.מזהה הענן הווירטואלי הפרטי (VPC) שלכם ב-AWS. מזהה VPC נראה כך:
vpc-012345678abcde. אפשר למצוא את מזהה ה-VPC במסוף AWS.
כדי להתחבר למשאבי GKE ב-AWS, מבצעים את השלבים הבאים. בוחרים אם יש לכם רשת VPC קיימת ב-AWS (או חיבור ישיר לרשת ה-VPC) או אם יצרתם רשת VPC ייעודית כשבניתם את שירות הניהול.
VPC קיים
אם יש לכם חיבור ישיר או חיבור VPN ל-VPC קיים, אל תכללו את השורה env HTTP_PROXY=http://localhost:8118 בפקודות שמופיעות בנושא הזה.
VPC ייעודי
כשיוצרים שירות ניהול ב-VPC ייעודי, GKE on AWS כולל מארח bastion בתת-רשת ציבורית.
כדי להתחבר לשירות הניהול:
עוברים לספרייה עם ההגדרה של GKE ב-AWS. יצרתם את הספרייה הזו כשהתקנתם את שירות הניהול.
cd anthos-aws
כדי לפתוח את המנהרה, מריצים את הסקריפט
bastion-tunnel.sh. המנהרה מעבירה את הנתונים אלlocalhost:8118.כדי לפתוח מנהרה ליעד המבוצר (bastion host), מריצים את הפקודה הבאה:
./bastion-tunnel.sh -Nההודעות ממנהרת ה-SSH מופיעות בחלון הזה. כשרוצים לסגור את החיבור, מפסיקים את התהליך באמצעות Control+C או סוגרים את החלון.
פותחים טרמינל חדש ועוברים לספרייה
anthos-aws.cd anthos-aws
מוודאים שאפשר להתחבר לאשכול באמצעות
kubectl.env HTTPS_PROXY=http://localhost:8118 \ kubectl cluster-infoהפלט כולל את כתובת ה-URL של שרת ה-API של שירות הניהול.
בחירת גודל מופע של מישור בקרה
GKE ב-AWS לא תומך בשינוי הגודל של מופעים במישור הבקרה. לפני שיוצרים את אשכול המשתמשים, בוחרים את גודל המכונה של מישורי הבקרה. הגודל של מישור הבקרה תלוי במספר הצמתים באשכול. בטבלה הבאה מפורטים גדלי המופעים של מישור הבקרה המומלצים לגדלים שונים של אשכולות.
| גודל האשכול (צמתים) | סוג המכונה של מישור הבקרה |
|---|---|
| 1 – 10 | m5.large |
| 11 – 100 | m5.xlarge |
| 101 – 200 | m5.2xlarge |
יצירת אשכול חדש עם הגדרה מותאמת אישית
אפשר להשתמש ב-terraform output example_cluster כדי ליצור תצורה של אשכול משתמש אחד לכל אשכול ניהול. אם רוצים ליצור אשכולות נוספים, צריך להחיל הגדרה בהתאמה אישית.
בדוגמה הזו, יוצרים אשכול באופן ידני מ-CRD AWSCluster ו-AWSNodePool.
עוברים לספרייה עם ההגדרה של GKE ב-AWS. יצרתם את הספרייה הזו כשהתקנתם את שירות הניהול.
cd anthos-aws
בספרייה של
anthos-aws, משתמשים ב-anthos-gkeכדי להעביר את ההקשר לשירות הניהול.cd anthos-aws anthos-gke aws management get-credentials
פותחים כלי לעריכת טקסט ומעתיקים את ההגדרה הבאה
AWSClusterלקובץ בשםcustom-cluster.yaml.apiVersion: multicloud.cluster.gke.io/v1 kind: AWSCluster metadata: name: CLUSTER_NAME spec: region: AWS_REGION networking: vpcID: VPC_ID podAddressCIDRBlocks: POD_ADDRESS_CIDR_BLOCKS serviceAddressCIDRBlocks: SERVICE_ADDRESS_CIDR_BLOCKS ServiceLoadBalancerSubnetIDs: SERVICE_LOAD_BALANCER_SUBNETS controlPlane: version: CLUSTER_VERSION # Latest version is 1.25.5-gke.2100 instanceType: AWS_INSTANCE_TYPE keyName: SSH_KEY_NAME subnetIDs: - CONTROL_PLANE_SUBNET_IDS securityGroupIDs: - CONTROL_PLANE_SECURITY_GROUPS iamInstanceProfile: CONTROL_PLANE_IAM_ROLE rootVolume: sizeGiB: ROOT_VOLUME_SIZE volumeType: ROOT_VOLUME_TYPE # Optional iops: ROOT_VOLUME_IOPS # Optional kmsKeyARN: ROOT_VOLUME_KEY # Optional etcd: mainVolume: sizeGiB: ETCD_VOLUME_SIZE volumeType: ETCD_VOLUME_TYPE # Optional iops: ETCD_VOLUME_IOPS # Optional kmsKeyARN: ETCD_VOLUME_KEY # Optional databaseEncryption: kmsKeyARN: ARN_OF_KMS_KEY hub: # Optional membershipName: ANTHOS_CONNECT_NAME cloudOperations: # Optional projectID: YOUR_PROJECT location: GCP_REGION enableLogging: ENABLE_LOGGING enableMonitoring: ENABLE_MONITORING workloadIdentity: # Optional oidcDiscoveryGCSBucket: WORKLOAD_IDENTITY_BUCKETמחליפים את מה שכתוב בשדות הבאים:
- CLUSTER_NAME: השם של האשכול.
AWS_REGION: האזור ב-AWS שבו האשכול פועל.
VPC_ID: המזהה של ה-VPC שבו האשכול פועל.
POD_ADDRESS_CIDR_BLOCKS: טווח כתובות IPv4 שמשמשות את הפודים של האשכול. בשלב הזה יש תמיכה רק בטווח אחד. הטווח לא יכול לחפוף לרשתות משנה שאפשר להגיע אליהן מהרשת שלכם. אפשר להשתמש באותו טווח בכמה אובייקטים שונים של AWSCluster. לדוגמה,
10.2.0.0/16.SERVICE_ADDRESS_CIDR_BLOCKS: טווח כתובות ה-IPv4 שמשמשות את השירותים של האשכול. בשלב הזה יש תמיכה רק בטווח אחד. הטווח לא יכול לחפוף לרשתות משנה שאפשר להגיע אליהן מהרשת שלכם. בטוח להשתמש באותו טווח בכמה אובייקטים שונים של AWSCluster. לדוגמה,
10.1.0.0/16.SERVICE_LOAD_BALANCER_SUBNETS: מזהי רשתות המשנה שבהן GKE ב-AWS יכול ליצור מאזני עומסים ציבוריים או פרטיים.
CLUSTER_VERSION: גרסת Kubernetes שנתמכת על ידי GKE ב-AWS. הגרסה העדכנית ביותר היא 1.25.5-gke.2100.
AWS_INSTANCE_TYPE: סוג נתמך של מופע EC2.
SSH_KEY_NAME: זוג מפתחות של AWS EC2.
CONTROL_PLANE_SUBNET_IDS: מזהי תת-הרשת באזורי הזמינות שבהם מופעלים מופעי מישור הבקרה.
CONTROL_PLANE_SECURITY_GROUPS: מזהה קבוצת אבטחה שנוצר במהלך ההתקנה של שירות הניהול. אפשר להתאים אישית את ההגדרה הזו על ידי הוספה של מזהי קבוצות אבטחה שנדרשים כדי להתחבר למישור הבקרה.
CONTROL_PLANE_IAM_PROFILE: שם הפרופיל של מכונת AWS EC2 שהוקצה לשכפול של מישור הבקרה.
ROOT_VOLUME_SIZE: הגודל, בגיביבייט (GiB), של נפחי הבסיס של מישור הבקרה.
ROOT_VOLUME_TYPE עם סוג הנפח EBS. לדוגמה,
gp3.ROOT_VOLUME_IOPS עם כמות פעולות הקלט/פלט (IOPS) שהוקצו לנפח האחסון לשנייה. ההגדרה תקפה רק אם
volumeTypeהואGP3. מידע נוסף זמין במאמר בנושא כרכי SSD לשימוש כללי (gp3).ROOT_VOLUME_KEY עם שם משאב Amazon של מפתח AWS KMS שמצפין את נפחי הבסיס של מופע מישור הבקרה.
ETCD_VOLUME_SIZE: הגודל של אמצעי האחסון שמשמשים את etcd.
ETCD_VOLUME_TYPE עם סוג הנפח EBS. לדוגמה,
gp3.ETCD_VOLUME_IOPS עם כמות פעולות הקלט/פלט (IOPS) שהוקצו לנפח האחסון לשנייה. ההגדרה תקפה רק אם
volumeTypeהואgp3. מידע נוסף זמין במאמר בנושא כרכי SSD לשימוש כללי (gp3).ETCD_VOLUME_KEY עם שם משאב Amazon של מפתח AWS KMS שמצפין את נפחי הנתונים של etcd במישור הבקרה.
ARN_OF_KMS_KEY: מפתח AWS KMS שמשמש להצפנת סודות של אשכול.
ANTHOS_CONNECT_NAME: השם של חברות Connect שמשמש לרישום האשכול. השם של המועדון חייב להיות ייחודי. לדוגמה,
projects/YOUR_PROJECT/locations/global/memberships/CLUSTER_NAME, כאשרYOUR_PROJECTהוא הפרויקט שלכם ב- Google Cloud ו-CLUSTER_NAMEהוא שם ייחודי בפרויקט. השדה הזה הוא אופציונלי.YOUR_PROJECT: מזהה הפרויקט.
GCP_REGION: האזור שבו רוצים לאחסן את היומנים. Google Cloud בוחרים אזור שקרוב לאזור AWS. מידע נוסף זמין במאמר מיקומים גלובליים – אזורים ותחומים, למשל
us-central1.ENABLE_LOGGING:
trueאוfalse, אם Cloud Logging מופעל בצמתי מישור הבקרה.ENABLE_MONITORING:
trueאוfalse, אם Cloud Monitoring מופעל בצמתי מישור הבקרה.WORKLOAD_IDENTITY_BUCKET: שם הקטגוריה של Cloud Storage שמכילה את פרטי הגילוי של זהות כוח העבודה. השדה הזה הוא אופציונלי.
יוצרים לפחות AWSNodePool אחד לאשכול. פותחים עורך טקסט ומעתיקים את הגדרת ה-AWSCluster הבאה לקובץ בשם
custom-nodepools.yaml.apiVersion: multicloud.cluster.gke.io/v1 kind: AWSNodePool metadata: name: NODE_POOL_NAME spec: clusterName: AWSCLUSTER_NAME version: CLUSTER_VERSION # latest version is 1.25.5-gke.2100 region: AWS_REGION subnetID: AWS_SUBNET_ID minNodeCount: MINIMUM_NODE_COUNT maxNodeCount: MAXIMUM_NODE_COUNT maxPodsPerNode: MAXIMUM_PODS_PER_NODE_COUNT instanceType: AWS_NODE_TYPE keyName: KMS_KEY_PAIR_NAME iamInstanceProfile: NODE_IAM_PROFILE proxySecretName: PROXY_SECRET_NAME rootVolume: sizeGiB: ROOT_VOLUME_SIZE volumeType: VOLUME_TYPE # Optional iops: IOPS # Optional kmsKeyARN: NODE_VOLUME_KEY # Optionalמחליפים את מה שכתוב בשדות הבאים:
- NODE_POOL_NAME: שם ייחודי ל-AWSNodePool.
- AWSCLUSTER_NAME: השם של AWSCluster. לדוגמה,
staging-cluster. - CLUSTER_VERSION: גרסה נתמכת של GKE ב-AWS Kubernetes.
- AWS_REGION: אותו אזור AWS כמו AWSCluster.
- AWS_SUBNET_ID: רשת משנה ב-AWS באותו אזור כמו AWSCluster.
- MINIMUM_NODE_COUNT: המספר המינימלי של הצמתים במאגר הצמתים. מידע נוסף זמין במאמר בנושא שינוי הגודל של אשכולות משתמשים.
- MAXIMUM_NODE_COUNT: המספר המקסימלי של הצמתים במאגר הצמתים.
- MAXIMUM_PODS_PER_NODE_COUNT: המספר המקסימלי של פודים ש-GKE ב-AWS יכול להקצות לצומת.
- AWS_NODE_TYPE: סוג של מכונת AWS EC2.
- KMS_KEY_PAIR_NAME: זוג המפתחות של AWS KMS שמוקצה לכל עובד במאגר הצמתים.
- NODE_IAM_PROFILE: השם של פרופיל מכונת AWS EC2 שהוקצה לצמתים במאגר.
- ROOT_VOLUME_SIZE: הגודל, בגיביבייט (GiB), של נפחי הבסיס של מישור הבקרה.
- VOLUME_TYPE: סוג נפח האחסון ב-EBS של הצומת ב-AWS.
לדוגמה,
gp3. - IOPS: מספר פעולות הקלט/פלט (IOPS) שהוקצו לנפחי אחסון לשנייה. ההגדרה תקפה רק אם
volumeTypeהואgp3. - NODE_VOLUME_KEY: ה-ARN של מפתח AWS KMS ששימש להצפנת אמצעי האחסון. מידע נוסף מופיע במאמר בנושא שימוש במפתח CMK בניהול הלקוח להצפנת אמצעי אחסון.
מחילים את המניפסטים על שירות הניהול.
env HTTPS_PROXY=http://localhost:8118 \ kubectl apply -f custom-cluster.yaml env HTTPS_PROXY=http://localhost:8118 \ kubectl apply -f custom-nodepools.yaml
יצירת קובץ kubeconfig
בזמן שה-user cluster מתחיל, אתם יכולים ליצור kubeconfigקונטקסט ל-user cluster החדש. אתם משתמשים בהקשר כדי לבצע אימות למשתמש או לאשכול ניהול.
אפשר להשתמש ב-
anthos-gke aws clusters get-credentialsכדי ליצורkubeconfigעבור אשכול המשתמשים ב-~/.kube/config.env HTTPS_PROXY=http://localhost:8118 \ anthos-gke aws clusters get-credentials CLUSTER_NAMEמחליפים את CLUSTER_NAME בשם האשכול. לדוגמה,
cluster-0.משתמשים ב-
kubectlכדי לבצע אימות לאשכול המשתמשים החדש.env HTTPS_PROXY=http://localhost:8118 \ kubectl cluster-infoאם האשכול מוכן, הפלט כולל את כתובות ה-URL של רכיבי Kubernetes באשכול.
צפייה בסטטוס של האשכול
שירות הניהול מקצה משאבי AWS כשמחילים AWSCluster או AWSNodePool.
בספרייה של
anthos-aws, משתמשים ב-anthos-gkeכדי להעביר את ההקשר לשירות הניהול.cd anthos-aws anthos-gke aws management get-credentials
כדי להציג את רשימת האשכולות, משתמשים בפקודה
kubectl get AWSClusters.env HTTPS_PROXY=http://localhost:8118 \ kubectl get AWSClustersהפלט כולל את השם, המצב, הגיל, הגרסה ונקודת הקצה של כל אשכול.
לדוגמה, הפלט הבא כולל רק
AWSClusterאחד בשםcluster-0:NAME STATE AGE VERSION ENDPOINT cluster-0 Provisioning 2m41s 1.25.5-gke.2100 gke-xyz.elb.us-east-1.amazonaws.com
הצגת האירועים של האשכול
כדי לראות אירועי Kubernetes מהזמן האחרון מאשכול המשתמשים, משתמשים ב-kubectl get events.
בספרייה של
anthos-aws, משתמשים ב-anthos-gkeכדי להעביר את ההקשר לשירות הניהול.cd anthos-aws anthos-gke aws management get-credentials
מריצים את
kubectl get events.env HTTPS_PROXY=http://localhost:8118 \ kubectl get events
הפלט כולל מידע, אזהרות ושגיאות שקשורים לשירות הניהול.
מחיקת אשכול משתמשים
כדי למחוק אשכול משתמשים, מבצעים את השלבים הבאים:
בספרייה של
anthos-aws, משתמשים ב-anthos-gkeכדי להעביר את ההקשר לשירות הניהול.cd anthos-aws anthos-gke aws management get-credentials
משתמשים ב-
kubectl deleteכדי למחוק את קובץ המניפסט שמכיל את אשכולות המשתמשים.env HTTPS_PROXY=http://localhost:8118 \ kubectl delete -f CLUSTER_FILEמחליפים את CLUSTER_FILE בשם המניפסט שמכיל את האובייקטים AWScluster ו-AWSNodePool. לדוגמה,
cluster-0.yaml.
מחיקת כל אשכולות המשתמשים
כדי למחוק את כל אשכולות המשתמשים:
בספרייה של
anthos-aws, משתמשים ב-anthos-gkeכדי להעביר את ההקשר לשירות הניהול.cd anthos-aws anthos-gke aws management get-credentials
משתמשים ב-
kubectl deleteכדי למחוק את AWSNodePools ואת AWSClusters משירות הניהול.env HTTPS_PROXY=http://localhost:8118 \ kubectl delete AWSNodePool --all env HTTPS_PROXY=http://localhost:8118 \ kubectl delete AWSCluster --all
מידע נוסף זמין במאמר הסרת ההתקנה של GKE ב-AWS.
המאמרים הבאים
מגדירים את ספק הזהויות באמצעות GKE Identity Service.
הפעלת עומס העבודה הראשון ב-GKE ב-AWS.
יצירת פריסה שפונה החוצה באמצעות מאזן עומסים או Ingress.
אפשר לקרוא את המפרטים של AWSCluster ושל AWSNodePool בהגדרות של משאבים בהתאמה אישית.