דלגו לתוכן

טבלת סימפטומים לפי שכבה

סימפטום / שגיאהסיבות (לפי סדר)לאישורתיקון
/trident-ci not found (נתיב בלי group)TRIDENT_GROUP לא מוגדרGitLab: Settings, CI/CD, Variables של ה-groupלהגדיר TRIDENT_GROUP=<GROUP> (path, לא display name), בלי Mask. variables
pipeline לא מתחילinclude לא מצליח; ה-branch לא dev/main (workflow rules); אין runnerGitLab: Pipelines, הודעת השגיאהci/overview
job תקוע ב-pending, no runner for tagsrunner כבוי; tag לא תואם; runner בהיקף של project אחרsudo gitlab-runner list; GitLab: Settings, CI/CD, Runnersלהפעיל את ה-runner ל-project; ה-tags: ב-job זהה ל-tags של ה-runner. runners
docker build לא מוצא את החבילה המשותפתbuild context הוא services/<SERVICE> במקום ה-parentlog של buildcontext = התיקייה שמכילה את הקוד המשותף. docker
Temporary failure in name resolution ב-pip installDNS ב-build (resolv.conf מצביע ל-127.0.0.53)cat /etc/docker/daemon.jsonenv-cards
blob unknown to registry ב-pushcontainerd image store (Docker 29)docker info --format '{{.Driver}}'env-cards
denied: access forbidden ב-pushאין docker login ל-$CI_REGISTRY לפני pushlog של publishלהוסיף login עם --password-stdin. registry
promote: 403scope חסר; role נמוך על branch מוגן; Protect על משתנה ב-branch לא מוגן (token ריק); token פג; token נוצר ב-project שגויlog של promote; הגדרות המשתנהpermissions, variables
!URL_VAR: export ...משתנה הוגדר ב-GitLab, אבל הסקריפט רץ ב-shell של ה-VMecho "$TRIDENT_GITOPS_URL"export באותו shell. overview
credential file is not readable and non-empty: <FILE>שם קובץ שגוי (user במקום username); קובץ ריק; token הוא העתק של ה-usernamels -l <FILE>; wc -c <FILE>לקרוא את ה-header של הסקריפט לשמות המדויקים; chmod 600. bash/snippets
job הרץ run ישןקוראים pipeline לא נכוןה-CANDIDATE ב-log: branch + תאריךלפתוח את ה-pipeline העדכני
job ידני promote:prod לא מתקדםנלחץ על pipeline ישן; needs לא עברGitLab: Pipelinesה-candidate הוא של ה-pipeline שלו, לפי תכנון. ci/patterns
סימפטום / שגיאהסיבותלאישורתיקון
Welcome to GitLab אבל project could not be foundWelcome מוכיח authentication בלבד; הוא לא בודק הרשאה על project. סיבות: URL/path שגוי; מפתח שגוי ב-~/.ssh/config; המשתמש לא memberssh -v -T git@<GITLAB_HOST> (איזה מפתח הוצג); GitLab: Membersלהעתיק URL מ-Code, לתקן IdentityFile. ssh
Permission denied (publickey).pub לא רשום; config מצביע למפתח אחר; הרשאות לא 700/600ssh-keygen -lf <FILE> מול ה-fingerprint ב-GitLabssh
HTTP Basic: Access deniedה-identity לא member בפרויקט; scope חסר; token שגויgit ls-remote עם אותו credentialלהוסיף כ-Reporter (קריאה). לא לשדרג ל-Developer. permissions
rejected (non-fast-forward)ה-remote התקדם (CI עשה commit)git fetch, git status, git log --oneline origin/main..HEADgit pull לפני עריכה; לא --force. git/sync
merge --ff-only נכשל, fatal: Not possible to fast-forwardmain מקומי הקדים/סטה (commit מקומי שלא נדחף)שורה 2 של הפלט; git log --oneline --graph --allלהבין מה ה-commit הזר; reset לפי היעד. git/undo
"שינוי של CI לא מופיע אצלי"ה-clone המקומי ישן (GitLab הוא האמת)git fetch && git statusgit pull
שינוי מקומי לא מגיע ל-Argoלא נדחף (Argo לא רואה את ה-clone)git status, git log origin/main..HEADgit push
git push מעלה רק branch אחדpush פשוט דוחף רק את ה-branch הנוכחיgit branch -vvgit push -u origin <BRANCH>; tags: git push origin <TAG>. git/branches
סימפטום / שגיאהסיבותלאישורתיקון
YAML parse error ... line NdefaultImageTag ריק (לא נעשה promote); הזחה שבורה; חסר רווח אחרי :helm template ... --set defaultImageTag=probeN הוא שורה ב-output המרונדר, לא ב-template. promote או תיקון ערך. helm/testing
ערך ריק ב-render (image: /ingest-api)מפתח הוצב מחוץ ל-generic: (עמודה 0)helm template ... | grep -n 'image:'להזיז לבלוק הנכון. helm/values
$values ריק / helm template נכשל מקומית$values הוא של Argo בלבד-להשתמש בנתיבים אמיתיים, -f חוזר. helm/overview
Error: open <FILE>: no such file or directory ב-helm templateשגיאת נתיב, לא YAML: -f לוקח את המילה הבאה (-f charts/x הפך את ה-chart לקובץ values); או values חיים ב-clone של gitops ולא ב-templatesls <FILE>; לספור -f מול קבציםhelm template <RELEASE> <CHART_DIR> -n <NS> -f <FILE>: ה-chart ראשון, כל -f עם נתיב אמיתי. helm/overview
lint עובר, template נכשלrequired לא מסופק: lint לא מכשילhelm template ...; echo $?להשתמש ב-template. helm/testing
רינדור עובר אבל ערך לא הוזרקשם מפתח/רישיות שגויה (secret ו-Secret)helm template ... | grep -n 'expected-key'לתקן מפתח; תמיד לרנדר אחרי עריכה
סימפטום / שגיאהסיבותלאישורתיקון
Unknown (וגם Healthy לידו)Argo לא הצליח לרנדר, אין משאבים, ו-Healthy ריקkubectl get application <APP> -n argocd -o jsonpath='{.status.conditions}'לקרוא ה-condition מלמטה. Healthy ליד Unknown = דגל אדום. argocd/operate
ComparisonError ... YAML parse error line Nכמו בשכבת Render; גם credential, נתיב שגוי, $values בלי ref: valueskubectl get application <APP> -n argocd -o jsonpath='{.status.conditions}'overview
repository not found / authentication requiredrepo Secret חסר; url לא זהה ל-repoURLkubectl get secret <SECRET> -n argocd -o jsonpath='{.data.url}' | base64 -durl זהה byte-ב-byte (כולל .git). argocd/operate
kubectl get applications -n argocd ריק אחרי pushה-root לא הוחל ידנית (bootstrap edge)kubectl get applications -n argocdלהריץ את סקריפט ה-bootstrap. argocd/overview
OutOfSync לנצחשדה שה-cluster מילא בברירת מחדל; שדה immutable שונה (selector)diff ב-UI של Argoלהסיר/להתאים את השדה. argocd/applications
Synced + Healthy אבל לא עובדאף אחד מהם לא מוכיח התנהגותcurl -k --resolve <HOST>:<PORT>:<VM_IP> https://<HOST>:<PORT>/infoלבדוק /info, לוגים, ConfigMap
StatefulSet.apps "postgres" is invalid: spec: Forbidden: updates to statefulset spec for fields other than 'replicas', 'ordinals', 'template', 'updateStrategy', 'persistentVolumeClaimRetentionPolicy' and 'minReadySeconds' are forbiddenvolumeClaimTemplates של StatefulSet הוא immutable (למשל אחרי הוספת storage.className)kubectl -n argocd get application <APP> -o jsonpath='{.status.operationState.message}{"\n"}'לפני שמוחקים: אין נתונים ב-PVC? נמחק רק STS + PVC (Argo יוצר מחדש מ-Git), לא את ה-StorageClass. אם התיקון ב-Git לפני היצירה הראשונה, אין מה למחוק. kubernetes/storage-probes
operationState.phase: Failed ולא משתנהה-retry הפנימי של sync אוטומטי (ברירת מחדל 5, syncPolicy.retry) נגמר, ו-Argo לא מנסה שוב אותו revision; refresh=hard קורא Git אבל לא מפעיל sync מחדשkubectl -n argocd get application <APP> -o jsonpath='{.status.operationState.phase} {.status.operationState.finishedAt}{"\n"}'; date -uלתקן את הסיבה, ואז sync ידני (כפתור Sync ב-UI). push ל-Git לא עוזר אם הכשל במצב ה-cluster. argocd/operate
operationState.message מראה שגיאה ישנהההודעה נשארת מהניסיון האחרוןלהשוות finishedAt ל-date -uלא סומכים על הודעה בלי timestamp. argocd/operate
תיקון kubectl edit / scale נעלםselfHeal-התיקון ב-Git. argocd/operate
syncPolicy: {}: אין sync אוטומטיחסר automatedkubectl get application <APP> -n argocd -o jsonpath='{.spec.syncPolicy}'automated: {prune: true, selfHeal: true}
ה-app לא נמחקfinalizer / root שמכיל את עצמוkubectl get application <APP> -n argocd -o jsonpath='{.metadata.finalizers}'cleanup
סימפטום / שגיאהסיבותלאישורתיקון
ImagePullBackOff / ErrImagePullSecret של pull חסר ב-namespace הזה; server שגוי; scope של token; extraImagePullSecrets לא הוגדר; נתיב/tag שגוי; defaultImageTag ריקkubectl describe pod -n <NS> -l trident.dev/service=<SERVICE> ואז Eventsbash bootstrap/prepare-environment.sh <ENV> ל-env החסר; לתקן values. kubernetes/secrets
עובד ב-dev ולא ב-stagingמשהו שונה: בדרך כלל Secret ב-namespacekubectl get secret -n <NS>bash bootstrap/prepare-environment.sh <ENV>
CrashLoopBackOffמשתנה ריק (REDIS_HOST); קובץ סיסמה לא מותקן; DB לא עלהkubectl logs -n <NS> -l trident.dev/service=<SERVICE> --previousלתקן values; לא להניח "downstream": לקרוא logs/Events של כל Pod שנופל
StartError ... mounting ... /var/run/secrets/kubernetes.io ... read-only file system (postgres-0 ב-CrashLoopBackOff)Secret הותקן ב-/run/secrets (קריאה בלבד) והתנגש בהתקנת ה-token של ה-service account (/var/run הוא /run)kubectl -n <NS> describe pod postgres-0 ואז EventsmountPath: /run/secrets/<APP_DIR> (תת-תיקייה) ו-POSTGRES_PASSWORD_FILE=/run/secrets/<APP_DIR>/postgres_password (הקובץ, לא התיקייה). אותה התנגשות פגעה גם ב-signal-processor. kubernetes/overview
kubectl logs ריק / אין לוגיםה-container אף פעם לא התחיל (אין מה להדפיס)kubectl -n <NS> describe pod <SERVICE>-0 ואז Events; logs -c <CONTAINER> בוחר container; --previous לקריסה אחרונהלקרוא Events, לא לוגים; init container שיצא 0 תקין. kubernetes/overview
Pod של StatefulSet שבור לא מוחלף אחרי תיקון ב-Gitrolling update של StatefulSet מחכה שה-Pod הישן יהיה Readykubectl -n <NS> get pods -wkubectl -n <NS> delete pod <SERVICE>-0: ה-StatefulSet יוצר אותו מחדש עם ה-spec החדש. ב-Deployment לא מוחקים, הוא מחליף לבד. kubernetes/storage-probes
Pod Running אבל לא Readyתלות לא זמינה (503 בכוונה); host שגוי ב-ConfigMapkubectl describe pod -n <NS> -l trident.dev/service=<SERVICE> (probe)לתקן את התלות. storage-probes
pod has unbound immediate PersistentVolumeClaims (Pod Pending)storage.className חסר, אין default StorageClasskubectl get pvc -n <NS> (עמודת STORAGECLASS ריקה); kubectl get scstorage.className: course-local-path ב-values (לא default StorageClass ב-cluster), ו-push. אם ה-StatefulSet כבר קיים: ראה Forbidden בשכבת Argo
Pending בלי שגיאה, PVC WaitForFirstConsumerתקין עד ש-Pod משתמש בוkubectl describe pvc -n <NS>אין. אם Pod לא קיים, תקן אותו
Pod לא נוצרSecret/ConfigMap מופנה לא קייםkubectl get events -n <NS> --sort-by=.lastTimestampליצור את ה-Secret הנדרש
סימפטוםסיבותלאישורתיקון
404 מה-ingressingressClassName לא nginx; hostname שגוי; pathkubectl get ingress -n <NS>לתקן values. kubernetes/networking
cert שגוי / שגיאת TLSשם ה-Secret ב-extraTls; Secret לא קיים ב-namespacekubectl get secret <SECRET> -n <NS>hostname מופיע פעמיים (hosts[].hostname ו-extraTls[].hosts), שנה את שניהם
אין חיבור ל-hostחסר ב-/etc/hosts; NodePort שגוי (גלה עם kubectl -n ingress-nginx get svc, המספר אחרי 443:)curl -k --resolve <HOST>:<PORT>:<VM_IP> https://<HOST>:<PORT>/infoלהוסיף ל-/etc/hosts או --resolve
סימפטוםסיבותלאישורתיקון
נתונים נעלמו אחרי מחיקת Pod של DBstorage: {} (ephemeral)kubectl get pvc -n <NS>storage.className + requestedSize
PVC נשאר אחרי cleanupnamespace לא נמחקkubectl get pvc -Acleanup
סימפטוםסיבותלאישורתיקון
ה-dashboard ריק או מערבב envsrelabel_configs מחק את namespace; label שגויPrometheus: Status, Targets; up{namespace="<NS>"}observability
Grafana לא עולהSecret admin חסר ב-namespace של observabilitykubectl get secret -n <NS>להריץ את סקריפט ה-prepare של observability
ה-app של observability אדום לפני שהוכןnamespace לא קיים (תקין עד prepare)kubectl get nsלהכין, אחר כך sync