EKS Pod-Operationen
Logs lesen, Pods finden, in Container exec’en und Deployments in EKS-Umgebungen neu starten.
Wann diese Fähigkeit verwendet werden sollte
Diese Fähigkeit verwenden, wenn der Benutzer Folgendes möchte:
- Logs eines Pods oder Dienstes anzeigen
- Pods in einer EKS-Umgebung auflisten oder suchen
- Einen Befehl in einem laufenden Pod ausführen
- Ein Deployment neu starten (Rollout-Restart)
- Einen Pod debuggen (beschreiben, Status prüfen, vorherige Logs anzeigen)
- Überprüfen, ob ein Dienst in einer bestimmten Umgebung läuft
Voraussetzungen
- kubectl: installiert und im PATH verfügbar
- AWS CLI: installiert mit SSO-Profilen, die pro Umgebung konfiguriert sind
- Kubeconfigs: pro Umgebung erstellt unter
~/.kube/config_<env> - Config:
~/.eks-config.json— wird beim ersten Durchlauf automatisch durch Scannen der Kubeconfigs und AWS-Profile erstellt. Siehe CONFIG.md für die manuelle Einrichtung.
Preflight-Prüfungen
Führen Sie das Preflight-Skript vor der ersten Operation in einer Konversation aus:
python3 <skill_dir>/scripts/eks_preflight.py
Um auch eine bestimmte Umgebung zu überprüfen (Kubeconfig + SSO):
python3 <skill_dir>/scripts/eks_preflight.py --env stg
Wenn SSO abgelaufen ist, teilen Sie dem Benutzer mit: aws sso login --sso-session <session> (der Session-Name steht in der Preflight-Ausgabe).
Operationen
pods — Pods auflisten oder beschreiben
# Pods für einen Dienst suchen
python3 <skill_dir>/scripts/eks_ops.py pods --env stg --service my-service
# Alle Pods in der Umgebung auflisten
python3 <skill_dir>/scripts/eks_ops.py pods --env stg --all
# Einen Pod beschreiben (Ereignisse, Zustände, Mounts)
python3 <skill_dir>/scripts/eks_ops.py pods --env stg --service my-service --describe
logs — Pod-Logs lesen
# Letzte 100 Zeilen (Standard)
python3 <skill_dir>/scripts/eks_ops.py logs --env stg --service my-service
# Benutzerdefinierte Anzahl und Zeitfenster
python3 <skill_dir>/scripts/eks_ops.py logs --env stg --service my-service --tail 500 --since 1h
# Vorheriger Container (nach Absturz/Neustart)
python3 <skill_dir>/scripts/eks_ops.py logs --env stg --service my-service --previous
# Alle Replikate auf einmal (verwendet stern, falls installiert)
python3 <skill_dir>/scripts/eks_ops.py logs --env stg --service my-service --all-pods
# Logs in Echtzeit streamen
python3 <skill_dir>/scripts/eks_ops.py logs --env stg --service my-service --follow
# Bestimmter Pod per Name (Dienstauflösung überspringen)
python3 <skill_dir>/scripts/eks_ops.py logs --env stg --pod my-service-abc123-xyz --tail 200
exec — Einen Befehl in einem Pod ausführen
Den genauen Befehl dem Benutzer anzeigen und vor der Ausführung die Genehmigung einholen.
python3 <skill_dir>/scripts/eks_ops.py exec --env dev --service my-service -- ls /app/conf
python3 <skill_dir>/scripts/eks_ops.py exec --env dev --service my-service -- cat /app/conf/application.conf
python3 <skill_dir>/scripts/eks_ops.py exec --env stg --service my-service -- env | grep -i heap
python3 <skill_dir>/scripts/eks_ops.py exec --env stg --service my-service -- df -h
restart — Rollout-Restart eines Deployments
Den Restart-Befehl dem Benutzer anzeigen und vor der Ausführung die Genehmigung einholen.
python3 <skill_dir>/scripts/eks_ops.py restart --env dev --service my-service
python3 <skill_dir>/scripts/eks_ops.py restart --env dev --service my-service --watch
Wichtige Regeln
execundrestarterfordern explizite Benutzerfreigabe. Den genauen Befehl anzeigen und auf Bestätigung warten.podsundlogssind schreibgeschützt. Direkt ohne Genehmigung ausführen.- Die gesamte Ausgabe wird automatisch geschwärzt — Secrets, Tokens, Schlüssel und Anmeldeinformationen werden durch
[REDACTED]ersetzt. Siehe references/REDACTION.md. - Bloße
env-,printenv- oderset-Befehle werden innerhalb vonexecblockiert. Stattdessenenv | grep -i <keyword>verwenden. - Das Lesen von Dateien unter
/secrets/,/vault/oder Anmeldeinformationspfaden wird innerhalb vonexecblockiert. - Wenn
[REDACTED]in der Ausgabe erscheint, nicht versuchen, den Originalwert abzurufen. - Das Skript wählt automatisch den Anwendungscontainer in Multi-Container-Pods aus (überspringt Sidecars wie statsite, istio-proxy).
- Mehrere Replikate: Wenn ein Dienst mehrere Pods hat, wählt
--serviceden ersten laufenden aus. Wenn der Benutzer ein bestimmtes Replikat möchte, zuerstpods --env <env> --service <name>ausführen, um alle Replikate aufzulisten, den Benutzer fragen, welches, dann--pod <pod-name>anstelle von--serviceverwenden. - Für die Log-Untersuchung in der Produktion Grafana oder Splunk bevorzugen — diese Fähigkeit als Ergänzung verwenden.
- Entwickler haben normalerweise nur Lesezugriff auf EKS —
restartkann in Produktionsclustern fehlschlagen.
Fehlerbehandlung
| Fehler | Ursache | Lösung |
|---|---|---|
SSO session may be expired | AWS SSO-Token abgelaufen | aws sso login --sso-session <session> |
Kubeconfig not found | Fehlende Kubeconfig-Datei | aws eks update-kubeconfig --profile <env> --name <cluster> --kubeconfig ~/.kube/config_<env> |
No pods found for service | Falscher Dienstname oder keine laufenden Pods | pods --env <env> --all, um verfügbare Pods zu sehen |
Blocked: Dumps all environment variables | Exec-Blockliste ausgelöst | env | grep -i <keyword> stattdessen verwenden |
connection refused localhost:8080 | Rancher Desktop kubectl-Konflikt | Skript erkennt dies automatisch. Wenn es bestehen bleibt, which kubectl prüfen |
Fehlerbehebung
| Problem | Lösung |
|---|---|
kubectl: command not found | brew install kubectl |
aws: command not found | brew install awscli |
| Config nicht gefunden | ~/.eks-config.json erstellen — siehe Voraussetzungen |
| Falscher Namespace | namespace in der Umgebungskonfiguration festlegen |
| Logs leer | --previous für abgestürzte Container versuchen oder --since erhöhen |
stern nicht gefunden | brew install stern (optional — fällt auf sequenzielles kubectl zurück |