여러분 CKA 범위를 보면 트러블슈팅이 30% 비율로 출제된다고 되어있어요. 즉, 무조건 나온다고 봐야겠죠? 어떤 문제가 나올지는 모르겠지만 정리할 수 있는 부분들은 정리해두려요! 그리고 나서 나중에 시험에 적용해야겠어요
1. Toubleshoot application fauilure
2 tier 구조로 문제가 나온다면 클라이언트 -> 웹서비스 -> 웹 -> DB 서비스 -> DB 순으로 확인해보기
- 서비스에 있는 Selector와 Pod에 있는 Selector가 일치하는지 체크하기
- kubectl describe service <service 이름 >
- 파드를 확인하기
- kubectl get pods 에서 restart 횟수도 체크하기
- kubectl describe pod <파드이름>로 어떤 이슈인지 체크하기
- kubectl logs <파드이름> 로그로 뭔가 이슈가 있는지 체크하기
- 만약, 파드가 재시작이 반복 되는것 같다 하면 kubectl logs -f 옵션을 추가해서 실시간으로 로그를 확인하기
- 또는 kubectl logs <파드이름> --previous 옵션으로 지난 로그를 확인해보는 것도 좋음
- 웹 관련해서 모두 체크 했으면 DB 서비스, DB 파드들도 describe로 확인하기
2. Troubleshoot Cluter Component failure
일단 Cluster가 이상하다고 하면 체크해볼 리스트들은 아래와 같다.
- kubectl get nodes 로 모두 정상인지 체크
- kubectl get pods로 클러스터에 작동중인 파드들의 상태도 체크
- kubectl get pods -n kube-system에 파드들이 정상 작동중인지 체크
- 문제가 있는 노드로 접근해서 service kube-apiserver status
- service kube-controller-manager status / service kube-scheduler status / service kubelet status /service kube-proxy status; 등등 상태 체크 해보기
- kubectl logs kube-apiserver-master -n kube-system 그리고 문제 있는 것 같으면 로그로 확인하기
- 어떤 이슈인지 자세히 보기위해서는 sudo jornalctl -u kube-apiserver 무조건 쳐보기
- kube-system에서 뭔가 이슈가 생기면 정상 작동 안하면 /etc/kubernetes/manifest가서 파일을 체크해서 수정하자
※ kube-system 네임스페이스는 쿠버네티스 클러스터의 핵심 컴포넌트들을 관리합니다. 이에는 쿠버네티스 API 서버, 스케줄러, 컨트롤러 매니저와 같은 중요한 시스템 컴포넌트들이 포함됩니다.쿠버네티스의 클러스터 관리와 운영을 위한 도구들도 kube-system 네임스페이스에서 실행됩니다. 예를 들어, kube-proxy, CoreDNS 또는 kube-dns, 그리고 다양한 클러스터 레벨의 로깅 및 모니터링 도구들이 이에 해당합니다.
3. Troubleshoot Woker node Failure
- kubectl get node 해서 not ready가 나오면 그다음에는 kubectl describe node <노드이름> 으로 상세히 확인하기
- top / df -h CPU, 메모리, 디스크 공간 체크하기
- service kubelet status 체크하기
- journalctl -u kubelet / containerd 체크하기
- 인증서가 만료되진 않았는지 체크하기 -> openssl x509 -in /var/lib/kubelet/woker-1.crt -text
- /var/lib/kubelet/config.yaml 파일에서 수정할게 있으면 수정하기, 수정 후 service kubelet start로 시작해주기;
※ kubelet은 쿠버네티스(Kubernetes) 클러스터 내의 각 노드에서 실행되는 주요 에이전트입니다. 이는 마스터 컴포넌트와 노드(워커 머신) 사이의 통신을 담당하며, 다음과 같은 중요한 역할을 수행합니다:파드의 생명주기 관리에 필수적인 역할을 합니다. 실행 중인 컨테이너의 상태를 주기적으로 체크하고, 그 상태를 쿠버네티스의 API 서버에 보고합니다 kubelet은 노드의 사용 가능한 리소스(예: CPU, 메모리)를 모니터링하고, 이를 쿠버네티스 스케줄러에 제공하여, 어떤 파드가 해당 노드에 스케줄링될 수 있는지 결정하는 데 도움을 줍니다.
'Certificated 도전 > CKA - Kubernetes' 카테고리의 다른 글
[CKA] 23년 12월 CKA 취득 후기 및 문제유형, 공부법 정리 (0) | 2023.12.14 |
---|---|
[CKA] RBAC 문제, 권한 체크시 사용하는 명령어 (0) | 2023.12.11 |
[CKA] ClusterRole과 Role 차이 (2) | 2023.12.04 |
[CKA] Role , RoleBinding 이해하기 - 단골 문제 (1) | 2023.12.04 |
[CKA] 특정 노드에 파드가 할당 되는 것을 제어하는 taint , toleration (0) | 2023.12.03 |