K8s 를 사용하면서 겪었던 문제들과 해결 방법들

  • 마스터 노드에 팟이 띄워지면서 리소스 부족으로 api 요청을 받을 수 없는 이슈가 발생

    → 노드 taint 설정으로 해결

  • 하나의 팟에 이슈가 생기면서 노드 전체에 영향이 가면서, 노드가 먹통 되는 이슈가 발생

    → pod 에 최대 사용량 (limit) 지정

  • Deploy 의 변경사항이 반영되지 않음

    → rollout restart 를 통해 강제 재시작

  • Pod 가 배치 작업에 영향을 받거나 Pod 가 한 노드에만 스케줄링 됨

    → 목적에 따라 노드를 분리 후 nodeAffinity 설정을 활용 (서비스용, 배치 작업용 노드)

    → podAntiAffinity 설정을 활용

  • Pod 재배포가 되지 않음

    → 노드 수를 실제 필요 노드 수보다 여유있게 잡음

  • Pod 는 정상적이나 서비스는 요청을 받을 수 없는 상태, 배포 시 마다 순단 발생 과 같은 문제 발생

    → Liveness Probe, Readiness Probe 를 활용

  • 서비스 접근을 위한 열려있는 포트번호를 까먹거나 업무 시간 외 포트 번호 오픈 요청을 드려야 하는 경우 발생

    → Ingress 를 사용하여 Path 기반 라우팅으로 외부에서 간편하게 접속할 수 있도록 설정

그외 꿀팁

  • pod get -o wide, pod describe 명령을 통해 문제 발생 시 좀 더 많은 정보를 얻을 수 있음

  • pod 로그 확인 방법:

    • 1) stern (바로바로 pod 로그를 확인해야 할 때)
    • 2) 로그 수집기 + grafana




느낀점

  1. 여러가지 K8S 를 도입/운영하면서 직접 겪었던 다양한 경험들을 들을 수 있었고, 나도 겪어봤던 이슈가 있었기 때문에 공감을 하면서 재밌게 들을 수 있었음.
  2. K8S 를 사용하기 시작하거나 사용해 본지 1~2년 정도 된 사람들이 ‘어떤 이슈들이 발생할 수 있고, 이런 문제가 발생했을 때 다른 사람은 어떻게 해결했을지?’ 를 알아가는데 도움이 될 만한 영상 이었던 것 같음.
  3. 개인적으로 K8S 를 사용하거나 업무에서 사용할 때도 해당 세션 연사자 분이 겪었던 일들을 공유한 것처럼 어떤 이슈들이 있었고, 이를 어떻게 해결했는지 문서로라도 정리해두는 습관을 기르려고 노력해야겠다는 생각이 들었음.