사진에 보이는것 처럼 apiserver가 자꾸 몇 초간격으로 올라왔다가 내려갔다를 반복합니다..
물론 self healing때문에 반복하는건 아는데 어느 부분에서 죽어서 켜지는 지를 모르겠습니다 로그를 확인해도 error로그도 없구요.. apiserver 떨어지면서 자꾸 다른 것들도 떨어져서 답답하네요.. 제발 도와주세요..
아래 사항들을 확인해보시기 바랍니다.
현재 상황에서 가장 먼저 할 일은 apiserver 로그를 상세히 확인하는 것입니다. kubectl logs 명령어를 통해 apiserver pod의 로그를 살펴보세요.
kubectl logs
kubectl logs -n kube-system <apiserver-pod-name>
만약 로그가 너무 많다면, 특정 타임스탬프 이후의 로그만 보거나, grep을 활용해 검색합니다.
grep
예를 들어 아래 명령어는 error라는 단어가 들어간 로그만 검색합니다.
kubectl logs -n kube-system <apiserver-pod-name> | grep "error"
현재 kubectl get pods -A를 실행한 결과 일부 pod이 정상적으로 작동하지 않는 상태입니다.
kubectl get pods -A
kubectl describe pod <apiserver-pod-name> -n kube-system
kubectl top nodes
kubectl top pods -A
로그에 dial tcp ... connection refused 에러가 보이는 점에서 apiserver와 etcd 사이의 연결 문제가 있을 가능성도 큽니다.
dial tcp ... connection refused
/etc/kubernetes/manifests/kube-apiserver.yaml
이미 calico를 설치하셨고, network policy와 관련된 문제일 가능성도 있습니다. 네트워크 구성에서 apiserver와 etcd 사이의 통신이 제대로 이루어지는지 확인하세요.
calico
telnet
kubectl top nodes 및 kubectl top pods를 통해 클러스터의 리소스가 부족하지 않은지 확인하세요. CPU 및 메모리 부족은 apiserver가 죽는 주요 원인 중 하나입니다.
kubectl top pods
self-healing으로 인해 pod가 계속 재시작된다면, 잠시 자동 재시작을 멈추고 문제를 분석해야 합니다.
아래 사항들을 확인해보시기 바랍니다.
1. Apiserver 로그 확인
현재 상황에서 가장 먼저 할 일은 apiserver 로그를 상세히 확인하는 것입니다.
kubectl logs
명령어를 통해 apiserver pod의 로그를 살펴보세요.kubectl logs -n kube-system <apiserver-pod-name>
만약 로그가 너무 많다면, 특정 타임스탬프 이후의 로그만 보거나,
grep
을 활용해 검색합니다.예를 들어 아래 명령어는 error라는 단어가 들어간 로그만 검색합니다.
kubectl logs -n kube-system <apiserver-pod-name> | grep "error"
2. Kubernetes Pod 상태 확인
현재
kubectl get pods -A
를 실행한 결과 일부 pod이 정상적으로 작동하지 않는 상태입니다.kubectl describe pod <apiserver-pod-name> -n kube-system
을 통해 상세 상태를 살펴봅니다. 특히 이벤트 로그에서 무슨 이유로 재시작되고 있는지 확인하세요.kubectl top nodes
또는kubectl top pods -A
명령어를 실행하여 apiserver와 노드가 CPU 등 충분한 리소스를 가지고 있는지 확인하세요.3. Etcd 연결 문제
로그에
dial tcp ... connection refused
에러가 보이는 점에서 apiserver와 etcd 사이의 연결 문제가 있을 가능성도 큽니다.docker logs <etcd-container-name>
/etc/kubernetes/manifests/kube-apiserver.yaml
파일에서 etcd 설정을 확인하세요. 특히 etcd endpoints, 인증서 경로 등이 정확한지 점검합니다.--etcd-servers=https://127.0.0.1:2379 --etcd-cafile=/etc/kubernetes/pki/etcd/ca.crt --etcd-certfile=/etc/kubernetes/pki/apiserver-etcd-client.crt --etcd-keyfile=/etc/kubernetes/pki/apiserver-etcd-client.key
4. Network Policy 문제
이미
calico
를 설치하셨고, network policy와 관련된 문제일 가능성도 있습니다. 네트워크 구성에서 apiserver와 etcd 사이의 통신이 제대로 이루어지는지 확인하세요.telnet
명령어를 사용해 etcd 서버와 통신 가능한지 확인합니다.telnet <etcd-ip> 2379
kubectl get pods -n kube-system | grep calico
5. Cluster Resource 상태 확인
kubectl top nodes
및kubectl top pods
를 통해 클러스터의 리소스가 부족하지 않은지 확인하세요. CPU 및 메모리 부족은 apiserver가 죽는 주요 원인 중 하나입니다.6. Self-healing Loop 방지
self-healing으로 인해 pod가 계속 재시작된다면, 잠시 자동 재시작을 멈추고 문제를 분석해야 합니다.