במסמך הזה מפורטים פתרונות לשגיאות נפוצות בזהויות מנוהלות של עומסי עבודה.
כדי לבדוק את הסטטוס של Pod, מריצים את הפקודה הבאה:
kubectl describe pod
פריסת ה-Pod נכשלת עם אישורים
אם פריסת ה-Pod של עומס העבודה ב-Google Kubernetes Engine (GKE) נכשלה עם האישורים המצורפים, משתמשים בפקודה הבאה כדי לבדוק את סטטוס ה-Pod:
kubectl describe pod POD_NAME -n POD_NAMESPACE
שגיאות שקשורות להרשאות
בקטע הזה מתוארות שגיאות שקשורות להרשאות שגויות.
ההרשאה נדחתה במהלך הנפקת האישור: הנפקת האישור מ-GKE Auth נכשלה
השגיאה הזו נראית כך:
Permission denied while issuing the certificate: failed to issue the certificate from the GKE Auth: rpc error: code = PermissionDenied desc = Permission 'privateca.certificates.createForSelf' denied on 'projects/PROJECT_NUMBER/locations/REGION/caPools/ CA_POOL_ID'
השגיאה התרחשה כי במאגר הזהויות של עומסי העבודה חסר התפקיד CA Service Workload Certificate Requester (roles/privateca.workloadCertificateRequester) במאגר המשני של רשות האישורים.
כדי לפתור את השגיאה, צריך להקצות את התפקיד למאגר:
gcloud privateca pools add-iam-policy-binding SUBORDINATE_CA_POOL_ID \
--project=CA_POOL_PROJECT_ID \
--location=REGION \
--role=roles/privateca.workloadCertificateRequester \
--member="principal://iam.googleapis.com/projects/CA_POOL_PROJECT_NUMBER/name/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog"
מחליפים את מה שכתוב בשדות הבאים:
-
SUBORDINATE_CA_POOL_ID: מזהה המאגר של רשות האישורים המשנית -
CA_POOL_PROJECT_ID: מזהה הפרויקט של מאגר רשויות האישורים הבסיסיות -
REGION: האזור של רשות האישורים המשנית -
CA_POOL_PROJECT_NUMBER: מספר הפרויקט של מאגר ה-CA -
PROJECT_ID: מזהה הפרויקט של מאגר הזהויות של עומסי העבודה
הפעולה MountVolume.SetUp נכשלה עבור נפח האחסון
השגיאה הזו נראית כך:
MountVolume.SetUp failed for volume "fleet-spiffe-credentials" : rpc error: code = Internal desc = unable to mount volume: while creating volume: while loading trust bundles: rpc error: code = Internal desc = while getting trust map from the trustBundleWatcher: rpc error: code = Internal desc = no GKEClusterTrustBundle objects found with fleet WIP nickname fleet-project/svc.id.goog
השגיאה הזו התרחשה כי למאגר הזהויות של עומסי העבודה חסר התפקיד Private CA Pool Reader (roles/privateca.poolReader) במאגר ה-CA המשני.
כדי לפתור את השגיאה, צריך להקצות את התפקיד למאגר ולהמתין כמה דקות עד שחבילות האישורים ייטענו:
gcloud privateca pools add-iam-policy-binding SUBORDINATE_CA_POOL_ID \
--location=REGION \
--role=roles/privateca.poolReader \
--member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/name/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog"
מחליפים את מה שכתוב בשדות הבאים:
-
SUBORDINATE_CA_POOL_ID: מזהה המאגר של רשות האישורים המשנית -
REGION: האזור של רשות האישורים המשנית -
PROJECT_NUMBER: מספר הפרויקט של מאגר הזהויות של עומסי העבודה -
PROJECT_ID: מזהה הפרויקט של מאגר הזהויות של עומסי העבודה
כדי לבדוק אם חבילות האישורים קיימות, אפשר להשתמש בפקודה הבאה:
kubectl get gkeclustertrustbundle
כשחבילות האישורים נטענות, התגובה נראית כך:
NAME AGE
svc.id.goog-PROJECT_ID.svc.id.goog 5m35s
בפלט, PROJECT_ID הוא מזהה הפרויקט של הצי שאליו משויך שורש האמון.
שגיאות באישור
השגיאות בקטע הזה קשורות להגדרת האישור.
יכולות להתרחש כמה שגיאות אם לא נוצרים אישורים מנוהלים של זהויות עומסי עבודה. כדי לבדוק אם האישורים האלה קיימים בכרכים שמוצמדים ל-Pod, מבצעים את הפעולות הבאות:
מתחברים ל-Pod.
# Open the pod sh interface kubectl exec -it $pod_name -n $pod_namespace -- shמציגים ובודקים את הקבצים של פרטי הכניסה.
# Look up the volume contents: ls -la /var/run/secrets/workload-spiffe-credentials cat /var/run/secrets/workload-spiffe-credentials/certificates.pem cat /var/run/secrets/workload-spiffe-credentials/ca_certificates.pem cat /var/run/secrets/workload-spiffe-credentials/private_key.pem cat /var/run/secrets/workload-spiffe-credentials/trust_bundles.json
אפשר גם לבדוק את סטטוס הקצאת האישורים של Pod באמצעות בדיקת k8s_containerהיומנים של מאגר ה-gke-metadata-server דרך המסוףGoogle Cloud .
התנאי המוקדם נכשל במהלך הנפקת האישור
תיאור ה-Pod יכול לכלול את ההודעה הבאה:
Failed precondition while issuing the certificate: failed to issue the certificate from the GKE Auth: rpc error: code = FailedPrecondition
השגיאה הזו התרחשה כי מאגר הזהויות של עומסי העבודה לא הוגדר עם הגדרת הנפקת אישורים (CIC).
כדי לפתור את השגיאה הזו, יוצרים CIC ומשתמשים בו כדי לעדכן את מאגר הזהויות של עומס העבודה.