당신은 현대적인 앱 개발자입니다. 오픈 소스와 일부 상용 도구를 사용하여 새로운 앱과 컨테이너를 작성, 테스트, 배포, 관리합니다. 개발, 테스트, 스테이징 및 프로덕션 환경에서 컨테이너와 포드를 실행하기 위해 Kubernetes를 선택했습니다. 여러분은 마이크로서비스의 아키텍처와 개념, 클라우드 네이티브 컴퓨팅 재단 , 그리고 기타 최신 산업 표준을 이해하게 되었습니다.
이 여정에서 여러분은 Kubernetes가 실제로 강력하다는 것을 알게 되었습니다. 하지만 여러분은 그것이 얼마나 어렵고, 융통성이 없고, 답답한 일인지에 놀랐을 것입니다. 라우터, 방화벽, 로드 밸런서 및 기타 네트워크 장치에 대한 변경 사항과 업데이트를 구현하고 조정하는 일은 엄청난 일이 될 수 있습니다. 특히 자체 데이터 센터에서는 더욱 그렇습니다! 개발자를 눈물 흘리게 만들기에 충분합니다.
이러한 과제를 처리하는 방식은 Kubernetes를 어디서 어떻게(관리형 서비스로 또는 온프레미스로) 실행하는지와 많은 관련이 있습니다. 이 문서에서는 배포 선택이 사용 편의성에 영향을 미치는 주요 영역인 TCP 부하 분산에 대해 설명합니다.
Kubernetes용 퍼블릭 클라우드 공급업체와 같은 관리형 서비스를 사용하면 지루한 네트워킹 작업의 대부분을 대신 처리해 줍니다. 단 하나의 명령( kubectl apply -f loadbalancer.yaml
)으로 서비스 유형 LoadBalancer에서 공용 IP, DNS 레코드, TCP 로드 밸런서를 얻을 수 있습니다. 예를 들어, NGINX Ingress Controller가 포함된 Pod에 트래픽을 분산하도록 Amazon Elastic Load Balancer를 구성할 수 있으며, 이 명령을 사용하면 백엔드가 변경될 때 걱정할 필요가 없습니다. 너무 쉽기 때문에 여러분은 당연하게 여기실 거예요!
온프레미스 클러스터의 경우 상황이 완전히 다릅니다. 당신이나 당신의 네트워킹 동료가 네트워킹 자료를 제공해야 합니다. "왜 Kubernetes 앱에 사용자를 유치하는 것이 이렇게 어려울까?"라고 궁금할 수도 있습니다. 대답은 간단하지만 약간 충격적입니다. 클러스터의 프런트 도어인 서비스 유형 LoadBalancer는 실제로 존재하지 않습니다.
클러스터 외부에 앱과 서비스를 노출하려면 네트워크 팀에 티켓, 승인, 절차, 심지어 보안 검토까지 필요할 수 있습니다. 이 모든 과정이 장비를 재구성하기 전에 필요합니다. 아니면 모든 것을 직접 해야 할 수도 있고, 그러면 애플리케이션 제공 속도가 매우 느려질 수도 있습니다. 더 나쁜 점은, NodePort가 변경되면 트래픽이 차단될 수 있으므로 Kubernetes 서비스를 변경해서는 안 된다는 것입니다! 그리고 우리는 모두 사용자가 500 오류를 얼마나 좋아하는지 알고 있습니다. 아마 당신의 상사는 그것을 더욱 좋아하지 않을 겁니다.
새로운 프로젝트를 통해 "어려운 옵션"을 "쉬운 옵션"으로 전환할 수 있습니다. 쿠버네티스를 위한 NGINX 로드밸런서 . 이 무료 프로젝트는 NGINX Ingress Controller를 감시하고 로드 밸런싱을 위해 구성된 외부 NGINX Plus 인스턴스를 자동으로 업데이트하는 Kubernetes 컨트롤러 입니다. 디자인이 매우 간단하여 설치와 작동이 간편합니다. 이 솔루션을 구현하면 온프레미스 환경에서 TCP 부하 분산을 구현하여 새로운 앱과 서비스를 즉시 감지하고 트래픽에 사용할 수 있습니다. 별도로 손을 대지 않아도 됩니다.
Kubernetes용 NGINX 로드밸런서는 Kubernetes 클러스터 내부에 있습니다. nginx-ingress 서비스(NGINX Ingress Controller)를 감시하기 위해 Kubernetes에 등록되어 있습니다. 백엔드에 변경 사항이 있으면 Kubernetes용 NGINX Loadbalancer는 Worker IP와 NodePort TCP 포트 번호를 수집한 다음 NGINX Plus API를 통해 IP:ports를 NGINX Plus로 전송합니다. NGINX 업스트림 서버는 다시 로드할 필요 없이
업데이트되고 NGINX Plus는 트래픽을 올바른 업스트림 서버와 Kubernetes NodePorts로 로드 밸런싱합니다. 추가 NGINX Plus 인스턴스를 추가하면 높은 가용성을 달성할 수 있습니다.
아래 스크린샷에는 Kubernetes용 NGINX Loadbalancer가 배포되어 작업을 수행하는 모습을 보여주는 두 개의 창이 있습니다.
nginx-ingress
용)메모 : 이 예에서 Kubernetes 워커 노드는 10.1.1.8 및 10.1.1.10입니다.
Kubernetes 클러스터의 가장자리에서 네트워킹 문제로 어려움을 겪고 계시다면, 프로젝트를 살펴보고 어떻게 생각하시는지 알려주세요. Kubernetes용 NGINX Loadbalancer의 소스 코드는 오픈 소스(Apache 2.0 라이선스)이며 모든 설치 지침은 GitHub에서 확인할 수 있습니다 .
피드백을 제공하려면 repo에 댓글을 남기거나 NGINX 커뮤니티 Slack 에서 메시지를 보내주세요.
"이 블로그 게시물에는 더 이상 사용할 수 없거나 더 이상 지원되지 않는 제품이 참조될 수 있습니다. 사용 가능한 F5 NGINX 제품과 솔루션에 대한 최신 정보를 보려면 NGINX 제품군을 살펴보세요. NGINX는 이제 F5의 일부가 되었습니다. 이전의 모든 NGINX.com 링크는 F5.com의 유사한 NGINX 콘텐츠로 리디렉션됩니다."