2017-03-20 1 views
1

세 대의 컴퓨터에서 실행되는 kubernetes 서비스가 있습니다. 클러스터 내부 및 외부의 클라이언트는 keep-alive 옵션이 활성화 된 상태에서 http를 통해이 서비스와 통신합니다. 서비스를 배포하는 동안 종료 된 포드에는 종료가 시작될 때 실패하기 시작하고 서비스 끝점 목록에서 적절히 제거되는 준비 상태 검사가 있지만 여전히 트래픽을 수신하지만 컨테이너가 갑자기 종료되면 일부 요청이 실패합니다. 우리는 이것이 호스트가 준비되었을 때 설정된 이러한 연결을 클라이언트가 재사용 할 수있게하는 연결 유지 때문이라고 생각합니다. 우리가 이러한 문제에 부딪치지 않도록 일련의 조치를 취해야합니까? 가능하다면 연결 유지 연결을 허용하고 싶습니다.keep-alive가 활성화 된 상태에서 kubernetes 서비스 재배포 오류 수정

답변

1

프록시 /로드 균형 조정이 계층 7 대신 계층 4에서 발생하면 문제가 발생합니다. 내부 서비스 (ClusterIP 유형의 Kubernetes 서비스)의 경우 Kube-proxy는 계층 4 프록시를 사용하여 프록시를 수행하기 때문에 클라이언트는 포드가 더 이상 사용할 준비가되지 않은 경우에도 연결을 유지하십시오. 마찬가지로 LoadBalancer 유형의 서비스에 대해 백엔드 유형이 TCP (AWS ELB와 기본적으로)로 설정된 경우에도 동일한 문제가 발생합니다. 자세한 내용은 this 문제를 참조하십시오.

지금 현재이 문제에 대한 해결책은 다음과 같습니다

  • 당신이 클라우드로드 밸런서를 사용하는 경우, 가서 HTTP로 백엔드를 설정합니다. 예를 들어 kubernetes 서비스에 service.beta.kubernetes.io/aws-load-balancer-backend-protocol 주석을 추가하고 ELB가 TCP 대신 HTTP 프록 싱을 사용하도록 HTTP로 설정할 수 있습니다.
  • 대신 kube-proxy
를 통해 그것을 전송의 경로로 클러스터 내에서 트래픽을 레이어 7 프록시/침입 컨트롤러를 사용하여
0

동일한 문제가 발생하고 있으므로이 문제를 해결할 방법을 찾았습니까? this link에 따르면 서비스 앞에 Load Balancer를 설치하여 직접 포드에 요청하고 자체 Keep-Alive 연결을 처리 할 수 ​​있어야합니다.

우리는이 문제를 계속 조사하고 연결 유지 연결을 사용하여 가동 중지 시간을 전혀 수행하지 않는 방법을 찾을 수 있는지 확인합니다.