1. 파드(컨테이너)에 직접 접속하는 방법
kubectl exec -it <pod-name> -n <namespace> -- /bin/bash
kubectl exec -it <pod-name> -n <namespace> bash
OR
kubectl exec -it <pod-name> -n <namespace> -- /bin/sh
kubectl exec -it <pod-name> -n <namespace> sh
OR
kubectl exec -it <pod-name> -n <namespace> -c <container> -- /bin/bash
- 위의 4개의 명령어 중에 bash나 shell이 있는 컨테이너에 따라 명령어를 입력하면 된다
- 만약 해당 파드에 여러 컨테이너가 존재한다면 컨테이너를 지정하여 명령어를 실행해야 한다
주의
- 파드가 running이 아닌 crashLoopBack이나 Init 등의 상태이면 실행 불가능하다
2. 파드(컨테이너)의 로그(이벤트)를 확인하는 법
2.1 log
kubectl logs <pod-name>
OR
kubectl logs <pod-name> -c <container>
- logs 명령어를 통해 해당 파드의 로그를 확인할 수 있다
2.2 describe
kubectl describe <pod-name>
- describe를 통해 해당 파드의 이벤트를 확인할 수 있다
3. 전체 Event log를 확인하는 법
kubectl get events | grep <search>
kubectl get events --sort-by=.metadata.creationTimestamp # 시간순으로 정렬
- 전체 이벤트 로그 중 문제가 있는 파드의 이름으로 검색하여 관련 이벤트 확인이 가능하다
4. 파드의 yaml 파일 정의를 확인하는 법
kubectl get <pod-name> -o yaml
OR
kubectl logs <pod-name> -o yaml > pod_file.yaml
5. job 재실행
5.1 job 삭제
kubectl get job
kubectl delete job <job 이름>
- Job은 helm 배포 시에 1번만 실행되기 때문에 실패 시 재 배포해주어야 한다.
5.2 - 1 Upgrade를 통해 job 재실행
helm upgrade --install <release> <chart_name> -n <namespace> -f values.yaml
kubectl get job <job 이름>
5.2 - 2 Yaml 파일로 job 재실행
kubectl get job <job 이름> > job.yaml #5.1을 수행하기 전
kubectl delete job <job 이름>
kubectl apply -f job.yaml
혹은 Job을 yaml 파일로 가져와서 job만 재적용하는 방법도 있다
6. Deployment 재시작
kubectl rollout restart deployment <deployment 이름>
파드간의 의존성 문제로 하나의 파드에 에러가 발생한 경우 다른 파드가 죽는 경우가 있다.
문제가 있는 파드 수정후에는 deployment를 재 시작하여 의존 관계에 있는 파드를 다시 살려야한다.
'DevOps(kubernetes)' 카테고리의 다른 글
[ArgoCD] k8s cluster와 연동하는법 [배스천 서버 Nodeport] (0) | 2024.08.13 |
---|---|
[k8s] 서비스 어카운트 트러블 및 SCC 부여 (0) | 2024.08.08 |
[k8s] Helm Chart로 Gitlab 배포하기(On-premise) (1) | 2024.08.08 |
[Linux] k8s에 도움되는 리눅스 명령어 (0) | 2024.08.08 |
[Jenkins] Gitlab Jenkins webhook (0) | 2024.08.06 |