STUDY/Data Engineering

18. CKA udemy 강의 정리 - Section 13 [Troubleshooting]

wonpick 2023. 1. 31. 00:38

0. Application Failure

서비스명, selector 설정, target port, 환경설정 등등의 이유로 발생 가능하다.

# 유저가 서비스 이용을 할 수 있는지 확인
curl http://web-service-ip:port

# 서비스의 엔드포인트가 할당이 되었는지 확인
kubectl get ep

# 환경설정에 문제가 없는지 확인
kubectl describe po <pod_name>
kubectl logs -f <pod_name> (--previous)

1. Control Plain Failure

# controlplane pod 상태 검사
kubectl get po -n kube-system

# controlplane pod 로그 확인
k get po -n kube-system | grep control
k logs -f <pod_name> -n kube-system

2. Worker Node Failure

워커 노드 상세 조회를 통해 OutOfDisk, MemoryPresure, DiskPresure, PIDPresure 상태 확인 가능하다.

추가적으로 kubelet이나 kubelet manifest 설정이 잘못되어 있을 수도 있으니 확인해야 한다.

# 워커 노드 조회
k get no | grep worker

# 워커노드 상세 조회
k describe no kind-cluster-worker

3. Networking

DNS 이슈

coreDNS 

  •  coredns pod가 pending 상태 -> 네트워크 플러그인 확인
  • coredns pod가 CrashLoopBackOff 또는 에러 상태 -> 설치된 OS와 도커의 버전 및 권한 문제
  • coredns와 관련된 pod가 모두 정상 -> 서비스 엔드포인트, selector, port를 확인

CNI: Network Plugin 이슈

# 네임스페이스 kube-system에 network plugin관련 pod가 동작하고 있는지 확인
kubectl get pod -n kube-system
# 동작하고 있지 않다면 해당 URL을 참고하여 Network plugin 설치
kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"

Kube Proxy이슈

kubectl get all -A
kubectl describe pod <kube-proxy-pod> -n kube-system
kubernetes describe cm -n kube-system kube-proxy
kubernetes edit daemonset.apps/kube-proxy -n kube-system

# busybox로 nslookup 하기
kubectl run test --image=busybox --rm -it -- nslookup kubernetes  

# busybox로 접속하여 port상태 점검하기
kubectl run test --image=busybox --rm -it -- sh
nc -z -v -w 2 test-service 80

 

 

참고

1. https://espossible.tistory.com/m/22

2. https://kim-dragon.tistory.com/95