Udemy CKA course 12. Troubleshooting: 응용 프로그램, 마스터 노드, 워커 노드, 네트워크 실패 시 복구

jihyelee·2024년 2월 12일
0

kubernetes

목록 보기
14/15

Certified Kubernetes Administrator (CKA) with Practice Tests (강의 링크, 레퍼런스 노트)

  • 평소 강의 할인도 많이 하고, 연습문제도 풀어볼 수 있으니 실제 강의 수강을 추천
  • 아래는 강의 내용 번역 및 정리본 (문제 시 댓글로 알려주세요)

어플리케이션 고장

  • 클러스터가 어떻게 구성되었는지 아는 것이 중요
    • e.g. DB Pod -> DB Service -> Web Pod -> Web Service -> User
  • 웹서버 접근 가능한지 확인
    • curl http://web-service-ip:node-port
  • 서비스 확인
    • kubectl describe service [서비스명]
    • e.g. pod에 대한 엔드포인트를 잘 찾았는지, labels와 selector가 매칭되는지
  • 파드 확인
    • kubectl get pod
    • kubectl describe pod [pod명]
    • kubectl logs [pod명] -f --previous
  • 확인해볼만한 것들
    • 포트가 제대로 지정되어 있는지
    • labels & selector 가 제대로 연결되어 있는지
    • 환경변수가 제대로 작성되어 있는지
    • 명령어 등에 오타가 있지는 않은지

컨트롤플레인 고장

  • 노드 확인
    • kubectl get nodes
  • 파드 확인
    • kubectl get pod
    • kubectl get pod -n kube-system
  • 서비스 확인
    • 마스터 노드
      • service kube-apiserver status
      • service kube-controller-manager status
        • e.g. deployment를 수정했음에도 replica set 내 pod가 줄거나 늘지 않았을 때 controller-manager 확인 (명령어, volume 등 경로 확인)
      • service kube-scheduler status
        • e.g. pod가 node에 배포되지 않았을 때 kube-scheduler 확인
    • 워커 노드
      • service kubelet status
      • service kube-proxy status
  • 서비스 로그 확인
    • kubectl logs [pod명] -n kube-system
    • sudo journalctl -u kube-apiserver
  • static pod (e.g. kube-scheduler) 수정 방법
    • /etc/kubernetes/manifests 내 yaml 파일 수정

워커 노드 고장

  • 노드 상태 확인
    • kubectl get nodes
    • kubectl describe node [노드명]
  • 노드 재시작
    • ssh [노드명] service kubelet restart
  • CPU 용량, 메모리 용량 등 확인
    • top
    • df -h
  • kubelet 상태 확인
    • service kubelet status
    • sudo journalctl -u kubelet
  • kubelet 수정
    • /var/lib/kubelet/config.yaml 확인 (인증서 경로 등)
    • /etc/kubernetes/kubelet.conf 확인 (controlplane 포트(6443) 등)
  • 인증서 확인
    • 유효기간 만료 여부
    • 올바른 그룹 내에 있는지 여부
    • 올바른 CA에 의해 인증서가 발행되었는지 여부
    • openssl x509 -in /var/lib/kubelet/[노드명].crt -text

네트워크 고장

coreDNS 관련 이슈일 경우

  • coreDNS 파드가 대기(pending) 상태일 시
    • 네트워크 플러그인 (e.g. weavenet, flannel 등) 제대로 설치되었는지 확인
  • coreDNS 파드가 CrashLoopBackOff 혹은 Error 상태일 시
    • Docker 새 버전으로 업그레이드
    • SELinux 비활성화
    • coredns deployment의 allowPrivilegeEscalation을 true로 변경
  • coreDNS 파드와 kube-dns 서비스가 제대로 작동할 경우
    • kube-dns가 유효한 엔드포인트를 가졌는지 확인
    • kubectl -n kube-system get ep kube-dns

kube-proxy 관련 이슈일 경우

  • kube-proxy 파드 확인
  • kube-proxy 로그 확인
  • /var/lib/kube-proxy/config.conf 파일 확인
  • configmap 확인
    • 만약 kube-proxy의 configmap에서 지정한 경로와 kube-proxy 파드 내 경로가 다르다면 수정 필요
  • kube-proxy가 컨테이너 안에서 실행하고 있는지 확인
    • netstat -plan | grep kube-proxy

참고

  • 단축어 설정하기
    • alias k=kubectl
  • 자동완성 설정하기
    • 쿠버네티스 문서에서 kubectl cheat sheet 검색
    • 해당 명령어 실행
  • deployment 스케일 조정하기
    • kubectl scale deployment [deploy명] --replicas=[개수]
  • weavenet 다운로드
    • curl -L https://github.com/weaveworks/weave/releases/download/latest_release/weave-daemonset-k8s-1.11.yaml | kubectl apply -f -
profile
Graduate student at Seoul National University, majoring in Artificial Intelligence (NLP). Currently AI Researcher at LG CNS AI Lab

0개의 댓글