EKS Pod Operations은(는) 무엇을 하나요?
EKS 환경에서 로그를 읽고, 파드를 찾고, 컨테이너에 접속하며, 배포를 재시작합니다.
이 스킬을 사용하는 경우
사용자가 다음을 원할 때 이 스킬을 사용하세요:
- 파드 또는 서비스의 로그 보기
- EKS 환경에서 파드 나열 또는 찾기
- 실행 중인 파드 내부에서 명령어 실행
- 배포 재시작(롤아웃 재시작)
- 파드 디버깅(describe, 상태 확인, 이전 로그 보기)
- 특정 환경에서 서비스가 실행 중인지 확인
전제 조건
- kubectl: 설치되어 있고 PATH에 있어야 함
- AWS CLI: 환경별 SSO 프로필이 구성되어 설치되어 있어야 함
- Kubeconfigs: 환경별로
~/.kube/config_<env>에 생성되어 있어야 함 - Config:
~/.eks-config.json— 최초 실행 시 kubeconfig와 AWS 프로필을 스캔하여 자동 생성됩니다. 수동 설정은 CONFIG.md를 참조하세요.
사전 점검
대화 중 첫 번째 작업 전에 사전 점검 스크립트를 실행하세요:
python3 <skill_dir>/scripts/eks_preflight.py
특정 환경(kubeconfig + SSO)을 확인하려면:
python3 <skill_dir>/scripts/eks_preflight.py --env stg
SSO가 만료된 경우 사용자에게 알리세요: aws sso login --sso-session <session> (세션 이름은 사전 점검 출력에 있습니다).
작업
pods — 파드 나열 또는 설명
# 서비스의 파드 찾기
python3 <skill_dir>/scripts/eks_ops.py pods --env stg --service my-service
# 환경의 모든 파드 나열
python3 <skill_dir>/scripts/eks_ops.py pods --env stg --all
# 파드 설명 (이벤트, 조건, 마운트)
python3 <skill_dir>/scripts/eks_ops.py pods --env stg --service my-service --describe
logs — 파드 로그 읽기
# 마지막 100줄 (기본값)
python3 <skill_dir>/scripts/eks_ops.py logs --env stg --service my-service
# 사용자 지정 tail 크기 및 시간 범위
python3 <skill_dir>/scripts/eks_ops.py logs --env stg --service my-service --tail 500 --since 1h
# 이전 컨테이너 (충돌/재시작 후)
python3 <skill_dir>/scripts/eks_ops.py logs --env stg --service my-service --previous
# 모든 복제본 한 번에 (stern이 설치된 경우 사용)
python3 <skill_dir>/scripts/eks_ops.py logs --env stg --service my-service --all-pods
# 실시간 로그 스트리밍
python3 <skill_dir>/scripts/eks_ops.py logs --env stg --service my-service --follow
# 특정 파드 이름으로 (서비스 확인 생략)
python3 <skill_dir>/scripts/eks_ops.py logs --env stg --pod my-service-abc123-xyz --tail 200
exec — 파드 내부에서 명령어 실행
실행 전에 정확한 명령어를 사용자에게 보여주고 승인을 받으세요.
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 — 배포 롤아웃 재시작
실행 전에 재시작 명령어를 사용자에게 보여주고 승인을 받으세요.
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
중요한 규칙
exec와restart는 명시적인 사용자 승인이 필요합니다. 정확한 명령어를 보여주고 확인을 기다리세요.pods와logs는 읽기 전용입니다. 승인 없이 직접 실행하세요.- 모든 출력은 자동으로 편집됩니다 — 비밀, 토큰, 키, 자격 증명은
[REDACTED]로 대체됩니다. references/REDACTION.md를 참조하세요. exec내에서 단독env,printenv또는set명령어는 차단됩니다. 대신env | grep -i <keyword>를 사용하세요.exec내에서/secrets/,/vault/또는 자격 증명 경로 아래의 파일 읽기는 차단됩니다.- 출력에
[REDACTED]가 나타나면 원래 값을 검색하려고 시도하지 마세요. - 스크립트는 멀티 컨테이너 파드에서 앱 컨테이너를 자동 선택합니다(사이드카인 statsite, istio-proxy는 건너니다).
- 여러 복제본: 서비스에 여러 파드가 있을 때
--service는 첫 번째 실행 중인 파드를 선택합니다. 사용자가 특정 복제본을 원하면 먼저pods --env <env> --service <name>을 실행하여 모든 복제본을 나열하고, 사용자에게 물어본 후--service대신--pod <pod-name>을 사용하세요. - 프로덕션 로그 조사에는 Grafana 또는 Splunk를 선호하세요 — 이 스킬은 보조 도구로 사용하세요.
- 개발자는 일반적으로 읽기 전용 EKS 액세스 권한을 가집니다 — 프로덕션 클러스터에서는
restart가 실패할 수 있습니다.
오류 처리
| 오류 | 원인 | 해결 방법 |
|---|---|---|
SSO session may be expired | AWS SSO 토큰 만료 | aws sso login --sso-session <session> |
Kubeconfig not found | kubeconfig 파일 없음 | aws eks update-kubeconfig --profile <env> --name <cluster> --kubeconfig ~/.kube/config_<env> |
No pods found for service | 잘못된 서비스 이름 또는 실행 중인 파드 없음 | pods --env <env> --all로 사용 가능한 파드 확인 |
Blocked: Dumps all environment variables | exec 차단 목록 트리거됨 | env | grep -i <keyword> 대신 사용 |
connection refused localhost:8080 | Rancher Desktop kubectl 충돌 | 스크립트가 자동 감지합니다. 지속되면 which kubectl 확인 |
문제 해결
| 문제 | 해결 방법 |
|---|---|
kubectl: command not found | brew install kubectl |
aws: command not found | brew install awscli |
| 설정 파일을 찾을 수 없음 | ~/.eks-config.json 생성 — 전제 조건 참조 |
| 잘못된 네임스페이스 | 환경 설정에서 namespace 설정 |
| 로그가 비어 있음 | 충돌한 컨테이너의 경우 --previous를 시도하거나 --since 증가 |
stern을 찾을 수 없음 | brew install stern (선택 사항 — 순차 kubectl로 대체됨) |