본문 바로가기

Programming/Tip&Informaion

knative/istio activator 종료 및 재실행 현상

kserve를 설치하면서 내부적으로 knative를 활용하고 있다.
언젠가부터 트래픽이 증가할 때 pod은 문제가 없는데 에러가 발생하기 시작했다.

 

호출하는 쪽에서 로그를 확인하니
upstream connect error or disconnect/reset before headers. reset reason: connection failure, transport failure reason: delayed connect error: 111
와 같은 에러가 발생했다.

 

확인하다 보니 knative 설치 때 생성된 activator가 죽었다 살아나기 시작했다.
activator 자체는 proxy 역할로 request들을 모았다가 pod에 전달해주는 역할을 한다고 한다.


일단 proxy 리소스를 증가시켜보았다.

activator deployment에 annotation에 아래와 같이 추가했다.

sidecar.istio.io/proxyCPU: 500m
sidecar.istio.io/proxyMemory: 512Mi

 

일단 조금 안정화된 것 같았는데 다시 죽기 시작했다.


이번에 activator pod을 확인해보니, OOM이 발생한 걸 확인할 수 있었다.
activator deployment 자체 request, limit 의 memory, cpu를 증가시켰다.

추가로, 조금 더 안정화를 위해서 replica 개수 증가 및 target burst capacity를 0으로 설정하였다.

 

------------

 

현재 상황 해결을 위의 방법으로 해결 가능하나, 결국 트래픽이 많아지면 다시 문제가 발생했다.

해결은 hpa 로 activator를 auto-scailing을 해야할 필요가 있었다.

eks에서 확인해보니, hpa를 실행해야 하는데 metric이 수집이 되고 있지 않았다.

 

hpa metric 서버 설치(https://aptakube.com/blog/how-to-fix-failedgeteesourcemetric-hpa)

kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml

 

후에 hpa에서 activator를 확인하니, target cpu가 100으로 되어 있어서 이걸 적당한 수치로 낮춘다.

오토스케일이 적절히 일어나는 것이 확인 완료되면서 상황이 종료됐다.