2016-08-23 2 views
0

내 kubernetes 클러스터에 kubernetes 서비스를 외부 소비자에게 공개 할 수있는 간단한 레이어 7로드 밸런서를 구현하고 싶습니다.Kubernetes 클러스터 용 외부로드 밸런서

내가는 Kubernetes 서비스와 각각의 엔드 포인트를 관찰하고 백엔드/프론트 엔드 구성을 다시로드하는 간단한 HA-프록시 기반 컨테이너를 작성합니다

이 내게는 Kubernetes 서비스에 액세스 할 수 있습니다 (다시로드하는 동안 SYN 먹는 ​​규칙을 보완) 접근 방식 일 이상

로는 Kubernetes 서비스의

(1) 하 - 프록시 전달 모든 요청이 clusterIP하는 주소를 비교하여 얼마나

http://load-balancer-ip:port/SVCa -------> Pod endpoints..... 
http://load-balancer-ip:port/SVCb -------> Pod endpoints..... 
http://load-balancer-ip:port/SVCc -------> Pod endpoints..... 

이상 SVCa, SVCb, SVCc있다.

http://load-balancer-ip:port/SVCa ------->clusterIP-SVCa 
http://load-balancer-ip:port/SVCb ------->clusterIP-SVCa 
http://load-balancer-ip:port/SVCc ------->clusterIP-SVCa 

(2) HA-프록시로드 밸런싱 노동자 노드 IP 요청 : 포트 NodePort 형 서비스를

http://load-balancer-ip:port/SVCa --------> node1:p1, node2:p1, node3:p1 
http://load-balancer-ip:port/SVCb --------> node1:p2, node2:p2, node3:p2 
http://load-balancer-ip:port/SVCc --------> node1:p3, node2:p3, node3:p3 

주를 작성하여 얻을 : 내 K8S 클러스터가 사용자 지정 솔루션에서 실행을 (에 -premise VMs)

답변

3

이 경우 nginx IngressController가 더 잘 작동한다고 생각합니다. 입구 정의 안에 백엔드 서비스와 호스트 이름 만 설정하면됩니다.

여기를보세요 : 클러스터가 예측 가능한 노드 이름이없는 매우 역동적 인 경우 https://github.com/kubernetes/contrib/tree/master/ingress/controllers/nginx

+0

IngressController는 내 질문에 itel (1)과 다를 바가 없습니다. http : // load-balancer-ip : port/SVCa ----> SVCa.svc.cluster.local. 이것은 clusterIP 유형과 headless 유형의 서비스에 대해 clusterIP-SVCa 또는 Pod Endpoint로 각각 해결됩니다. –

+0

또한이 프로덕션 유스 케이스의 경우 NGINX IngressController를 그대로 고려하지 않습니다.이 단계에서 실험적입니다. –

+0

왜 NGINX IngressController를 실험적으로 사용 하시겠습니까? – aledbf

1

(2)이 적합하지 않습니다. 이는 변경 불가능한 인프라 스트럭처에 대해서도 매우 반대 패턴입니다.

(1)이 작동하지만 지금은 슈퍼 지능 아닌 다른 노드 -에 프록시에 KUBE 프록시에 의존, 당신은 기본적으로 프록시를 KUBE하는 haproxy에서 (상대적으로 바보 프록시) (강력한 프록시)를가는 것은 거치대 - 추가 점프 및 일부 (최소 임에도 불구하고) 대기 시간 추가

원래 계획이 가장 좋으며 본질적으로 진입 컨트롤러와 같습니다.

관련 문제