בדף הזה מוסבר איך משתמשים באופרטור של AlloyDB Omni ב-Kubernetes כדי לפרוס את AlloyDB Omni באשכול Kubernetes. ההנחה היא שאתם מכירים את הפעולות הבסיסיות של Kubernetes.
במאמר התקנת AlloyDB Omni מוסבר איך מתקינים את AlloyDB Omni בסביבת Linux רגילה.
סקירה כללית
כדי לפרוס את AlloyDB Omni באשכול Kubernetes, צריך להתקין את אופרטור AlloyDB Omni, שהוא תוסף ל-Kubernetes API ש-Google מספקת.
כדי להגדיר ולנהל אשכול של מסד נתונים ב-AlloyDB Omni שמבוסס על Kubernetes, צריך להתאים קובצי מניפסט הצהרתיים לכלי kubectl, כמו בכל פריסה אחרת שמבוססת על Kubernetes.
תאימות לגרסה 1.1.0 של אופרטור AlloyDB Omni
גרסה 1.1.0 של אופרטור AlloyDB Omni לא תואמת לגרסאות 15.5.3 ו-15.5.4 של AlloyDB Omni. אם אתם משתמשים באחת מהגרסאות האלה של AlloyDB Omni, יכול להיות שתקבלו הודעת שגיאה דומה לזו:
Error from server (Forbidden): error when creating "[...]/dbcluster.yaml": admission webhook "vdbcluster.alloydbomni.dbadmin.goog" denied the request: unsupported database version 15.5.3
לפני שמתחילים
אתם צריכים גישה אל:
אשכול Kubernetes, שבו פועלת התוכנה הבאה:
- Kubernetes בגרסה 1.21 ואילך.
- השירות
cert-manager, שמותקן באמצעות Helm.
Google Cloud CLI. אחרי שמתקינים את ה-CLI של gcloud, צריך לאמת את החשבון ב- Google Cloud באמצעות הפקודה
gcloud auth login.
לכל צומת באשכול Kubernetes חייבים להיות:
- לפחות שני מעבדי x86 או AMD64.
- זיכרון RAM בנפח 8GB לפחות.
- ליבת Linux בגרסה 4.18 ואילך.
- קבוצת בקרה v2 (cgroup v2) מופעלת.
התקנת אופרטור AlloyDB Omni
כדי להתקין את אופרטור AlloyDB Omni:
מגדירים כמה משתני סביבה:
export GCS_BUCKET=alloydb-omni-operatorexport HELM_PATH=$(gcloud storage cat gs://$GCS_BUCKET/latest)export OPERATOR_VERSION="${HELM_PATH%%/*}"מורידים את אופרטור AlloyDB Omni:
gcloud storage cp gs://$GCS_BUCKET/$HELM_PATH ./ --recursiveמתקינים את אופרטור AlloyDB Omni:
helm install alloydbomni-operator alloydbomni-operator-${OPERATOR_VERSION}.tgz \ --create-namespace \ --namespace alloydb-omni-system \ $(helm install --help | grep -q -- '--rollback-on-failure' && echo '--rollback-on-failure' || echo '--atomic') \ --timeout 5mאם ההתקנה בוצעה בהצלחה, יוצג הפלט הבא:
NAME: alloydbomni-operator LAST DEPLOYED: CURRENT_TIMESTAMP NAMESPACE: alloydb-omni-system STATUS: deployed REVISION: 1 TEST SUITE: Noneמוחקים את קובץ ההתקנה של אופרטור AlloyDB Omni שהורדתם. הקובץ נקרא
alloydbomni-operator-VERSION_NUMBER.tgzוהוא נמצא בספריית העבודה הנוכחית.
הגדרת האחסון ב-GDC במודל מחובר
כדי להתקין את אופרטור AlloyDB Omni ב-GDC במצב מחובר, צריך לבצע שלבים נוספים להגדרת האחסון, כי באשכולות של GDC במצב מחובר לא מוגדרת מחלקת אחסון כברירת מחדל. לפני שיוצרים אשכול של מסדי נתונים ב-AlloyDB Omni, צריך להגדיר סוג אחסון כברירת מחדל.
איך מגדירים את Symcloud Storage כסוג האחסון שמוגדר כברירת מחדל
מידע נוסף על שינוי ברירת המחדל של כל סוגי האחסון האחרים זמין במאמר שינוי ברירת המחדל של StorageClass.
שלבי ההתאמה של Red Hat OpenShift
אם אתם משתמשים ב-Red Hat OpenShift בגרסה 4.12 ואילך, אתם צריכים לבצע את השלבים הבאים אחרי שהתקנתם את אופרטור AlloyDB Omni ולפני שיצרתם אשכול של מסדי נתונים ב-AlloyDB Omni באשכול Kubernetes. אם לא, אפשר לדלג על השלבים האלה.
כדי להוסיף הרשאות לעדכון של פונקציות ה-finalizer של מכונות AlloyDB Omni, עורכים את התפקיד
system:controller:statefulset-controllerבאשכול באופן הבא:kubectl edit clusterrole system:controller:statefulset-controllerבכלי לעריכת טקסט, מוסיפים את הטקסט הבא בסוף תפקיד האשכול:
- apiGroups: - alloydbomni.internal.dbadmin.goog resources: - instances/finalizers verbs: - update - apiGroups: - alloydbomni.internal.dbadmin.goog resources: - backuprepositories/finalizers verbs: - updateלבקר StatefulSet צריכות להיות הרשאות נוספות כדי לעדכן את ה-finalizers של המכונה שנוספו לתפקיד האשכול, כי ב-Red Hat OpenShift מופעלת האפשרות OwnerReferencesPermissionEnforcement. בלי הרשאה לעדכן את ה-finalizers של המכונה, הבקר של StatefulSet לא יכול ליצור את ה-Persistent Volume Claim (PVC) של מסד הנתונים, והודעת השגיאה הבאה מופיעה באירועים של StatefulSet במסד הנתונים:
Warning FailedCreate [...] cannot set blockOwnerDeletion if an ownerReference refers to a resource you can't set finalizers onכדי להוסיף הרשאות לעדכון של פונקציות ה-finalizer של AlloyDB Omni DBInstance, עורכים את התפקיד
fleet-manager-roleבאשכול:kubectl edit clusterrole fleet-manager-roleבכלי לעריכת טקסט, מוסיפים את הטקסט הבא בסוף תפקיד האשכול:
- apiGroups: - alloydbomni.dbadmin.goog resources: - dbinstances/finalizers verbs: - updateמוסיפים את אילוץ הקשר האבטחה
anyuidלחשבון השירותdefaultבפרויקט Red Hat OpenShift, באופן הבא:oc adm policy add-scc-to-user anyuid system:serviceaccount:OPENSHIFT_PROJECT:default
אתם צריכים לאפשר לחשבון השירות
defaultלהשתמש באילוץ ההקשר של האבטחהanyuid, כי ב-Pod של מסד הנתונים, מארז ה-init פועל כ-root והמארזים האחרים פועלים עם מזהי משתמשים ספציפיים. בלי הרשאה להשתמש ב-anyuid, בקר ה-StatefulSet לא מצליח ליצור את ה-PVC של מסד הנתונים, והודעת השגיאה הבאה מופיעה באירועי ה-StatefulSet של מסד הנתונים:Warning FailedCreate [...] unable to validate against any security context constraint
יצירת אשכול של מסדי נתונים
אשכול מסדי נתונים של AlloyDB Omni מכיל את כל משאבי האחסון והמחשוב שנדרשים כדי להפעיל שרת AlloyDB Omni, כולל השרת הראשי, כל הרפליקות וכל הנתונים שלכם.
אחרי שמתקינים את אופרטור AlloyDB Omni באשכול Kubernetes, אפשר ליצור אשכול של מסד נתונים של AlloyDB Omni באשכול Kubernetes על ידי החלת מניפסט שדומה לזה:
apiVersion: v1
kind: Secret
metadata:
name: db-pw-DB_CLUSTER_NAME
type: Opaque
data:
DB_CLUSTER_NAME: "ENCODED_PASSWORD"
---
apiVersion: alloydbomni.dbadmin.goog/v1
kind: DBCluster
metadata:
name: DB_CLUSTER_NAME
spec:
databaseVersion: "15.7.1"
primarySpec:
adminUser:
passwordRef:
name: db-pw-DB_CLUSTER_NAME
resources:
cpu: CPU_COUNT
memory: MEMORY_SIZE
disks:
- name: DataDisk
size: DISK_SIZE
מחליפים את מה שכתוב בשדות הבאים:
DB_CLUSTER_NAME: השם של אשכול מסד הנתונים הזה, לדוגמהmy-db-cluster.
ENCODED_PASSWORD: סיסמת ההתחברות למסד הנתונים של תפקיד המשתמשpostgresשמוגדר כברירת מחדל, מקודדת כמחרוזת base64. לדוגמה,Q2hhbmdlTWUxMjM=בשבילChangeMe123.
CPU_COUNT: מספר המעבדים שזמינים לכל מכונה של מסד נתונים באשכול מסדי הנתונים הזה.
MEMORY_SIZE: כמות הזיכרון לכל מכונה של מסד נתונים באשכול מסדי הנתונים הזה. מומלץ להגדיר את הערך הזה ל-8GB לכל מעבד (CPU). לדוגמה, אם הגדרתם אתcpuל-2בשלב מוקדם יותר במניפסט, מומלץ להגדיר אתmemoryל-16Gi.
DISK_SIZE: גודל הדיסק לכל מכונה של מסד נתונים, לדוגמה10Gi.
אחרי שמחילים את המניפסט הזה, אשכול Kubernetes מכיל אשכול מסד נתונים של AlloyDB Omni עם ההגדרות שצוינו לזיכרון, למעבד (CPU) ולאחסון. כדי ליצור חיבור לבדיקה עם אשכול מסד הנתונים החדש, קראו את המאמר התחברות באמצעות psql שמותקן מראש.
למידע נוסף על מניפסטים של Kubernetes ואיך להחיל אותם, ראו ניהול משאבים.
המאמרים הבאים
- תכנון גודל האחסון ו-PVC
- הפעלה והתחברות ל-AlloyDB Omni
- ניהול AlloyDB Omni
- ניהול זמינות גבוהה ב-Kubernetes