Kubernetes의 네트워크 처리에 대해서 설명하면서 왜 특정 Pod에 연결이 몰릴 수 있는지를 설명한 글입니다.


Kubernetes의 Service는 실제 리소스는 아니고 IP 자리표시자로만 사용되기 때문에 실제 서비스로 연결이 들어올 때 iptables에서 Service에 연결된 Pod의 IP로 대체되어 사용되는데 이때 iptables는 연결할 팟을 무작위 알고리즘으로 선택합니다.


이때 HTTP keepalive처럼 연결을 오랫동안 유지하는 경우 이미 연결된 Pod에 요청을 계속 보내고 새로운 연결만 다시 무작위로 선택되므로 오래된 연결을 가지고 있는 Pod에 연결이 몰릴 수 있고 Pod을 늘린다고 분산되지 않습니다.


이 문제를 해결하려면 클라이언트쪽에서 로드 밸런싱 로직을 가지고 있거나 로드 밸런싱 기능이 있는 서비스를 도입해야 합니다. 인프라에서 해결하는 방식으로는 보통 Istio나 Linkerd같은 서비스 메시를 사용하는 방법이 있습니다.


https://learnk8s.io/kubernetes-long-lived-connections

Load balancing and scaling long-lived connections in Kubernetes

Learnk8s

Load balancing and scaling long-lived connections in Kubernetes

다음 내용이 궁금하다면?

또는

이미 회원이신가요?

2024년 6월 22일 오전 5:56

 • 

저장 20조회 2,509

댓글 0

    함께 읽은 게시물

    효과적인 경력 기술 가이드

    

    ... 더 보기



    OpenAI의 오픈소스 모델 gpt-oss 시리즈의 차별점(?) 중에 하나는 가중치를 4.25bit 양자화해서 공개했다는 것이다.

    ... 더 보기

    오늘의 탐라는 “ChatGPT 쓰셨던데 그러고도 개발자입니까?” 인가..

    ... 더 보기

    오픈소스 쓰셨던데 그러고도 개발자입니까?

    www.haruair.com

    오픈소스 쓰셨던데 그러고도 개발자입니까?

    이제 개발자(응용 애플리케이션 개발자, 대부분의 백엔드도 응용 어플리케이션이다)는 더이상 병목이 아니어야한다. 오히려 기획자와 디자이너가 병목이 되게 만드는 개발자만이 살아남을 것이며, 이전에도 그랬지만 앞으로는 더더욱 개발자가 기획 및 디자인 역량도 갖추어야 경쟁력이 있을 것이다.