AWS에서 실행 중인 Kubernetes 클러스터가 있습니다. Kubes 작업자는 프라이빗 서브넷에 있고 마스터는 퍼블릭 서브넷에 있습니다.
클러스터가 잘 작동하고 있습니다. 이제 포드에 3개의 컨테이너를 배포하고 3개의 포트가 이러한 컨테이너에 대한 서비스로 노출됩니다.
인터넷에서 이 포드에 액세스하고 싶습니다. 즉, 외부입니다.
500개의 포드가 있으므로 각 포드에 로드 밸런서를 배포할 수 없습니다. 어떻게 해야 합니까?
답변1
우리가 이에 대해 논의했다는 것을 알고 있지만 다른 사람들도 가능한 해결책을 알 수 있도록 여기서도 답변을 드리고 싶습니다.
내가 이해한 바에 따르면, 들어오는 트래픽을 요청된 서비스/배포로 라우팅하는 데 사용할 수 있는 수신 컨트롤러가 필요합니다.
IE; this.example.com이 귀하의 도메인이 됩니다.
여러 컨테이너로 구성된 포드를 배포했습니다.
이론적으로는 다음과 같은 항목 설정을 가질 수 있습니다.
apiVersion: extensions/v1beta1 kind: Ingress metadata: name: my-ingress annotations: kubernetes.io/ingress.class: nginx ingress.kubernetes.io/rewrite-target: / spec: tls: - hosts: - this.example.com secretName: my-tls rules: - host: this.example.com http: paths: - path: /one backend: serviceName: this-deploy servicePort: 80 - path: /two backend: serviceName: this-deploy servicePort: 9000 - path: /three backend: serviceName: this-deploy servicePort: 8080
이 항목에서는 동일한 서비스를 지정하지만 각 서비스에는 서로 다른 포트가 있습니다.
사용자가 this.example.com/one
트래픽 항목 컨트롤러 설정으로 이동하면 일치하는 규칙이 있는지, 트래픽을 서비스로 보내는 규칙이 있는지 확인합니다.
서비스 자체에는 트래픽이 전달될 엔드포인트가 있습니다. 이는 포드(또는 복제본이 많은 경우 그 중 하나)가 됩니다.
이러한 리소스는 수신 컨트롤러를 설정하는 데 도움이 될 수 있습니다.
https://hub.kubeapps.com/charts/stable/nginx-ingress https://github.com/kubernetes/ingress-nginx