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,504

댓글 0

    함께 읽은 게시물


    🕊️ [Medium] JPA vs Hibernate vs DataJPA

    J

    ... 더 보기

    JPA vs Hibernate vs Spring Data JPA

    Medium

    JPA vs Hibernate vs Spring Data JPA

     • 

    저장 148 • 조회 8,479


    새로운 AI 브라우저와 함께 공식문서를 깊이 있게 + 효율적으로 공부하기

    A

    ... 더 보기

    - YouTube

    youtu.be

     - YouTube


    < 아무리 애써도 인생이 변하지 않는 진짜 이유 >

    1. 어제의 태양은 오늘의 태양과 다르다. 이름만 같을 뿐, 둘은 전혀 다른 존재다.

    ... 더 보기

    Next.js 까보기: "쓸 줄 아는 개발자"에서 "알고 쓰는 개발자로" 강의를

    ... 더 보기

    Next.js 까보기: "쓸 줄 아는 개발자"에서 "알고 쓰는 개발자"로

    www.productengineer.info

    Next.js 까보기: "쓸 줄 아는 개발자"에서 "알고 쓰는 개발자"로