Certificated 도전/CKA - Kubernetes

[CKA] 무려 30% 출제 비율인 Troubleshooting 트러블슈팅 정리

지추월자 2023. 12. 10. 18:10
반응형

여러분 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, 메모리)를 모니터링하고, 이를 쿠버네티스 스케줄러에 제공하여, 어떤 파드가 해당 노드에 스케줄링될 수 있는지 결정하는 데 도움을 줍니다. 

반응형