Kubernetesの3つのホスト(node-A、node-B、node-C)でとして動作するロードバランサ(LB)を使用しています。 LBはポート80で動作しているGitLabサービスで使用されています.GitLabはノードCで動作しており、ノードBのパブリックIPを使用してアクセスできます。ノードBは、最初に、Replication Controllerを使用してロードバランサ(HAProxy)をセットアップします。ここKubernetes - HAでロードバランサを実行し、DNSを使用してアプリケーションにアクセスする
スニペット:
1)私は、他のノードのパブリックIPを使用してGitLabにアクセスすることはできません。
[[email protected] service-loadbalancer]# cat rc.yaml
apiVersion: v1
kind: ReplicationController
metadata:
name: service-loadbalancer
labels:
app: service-loadbalancer
version: v1
spec:
replicas: 3
selector:
app: service-loadbalancer
version: v1
完全な詳細は、ここでhere
問題です。これは期待されていますか? LBが3つのノードすべてで実行されている場合、GitLabアプリケーションはポート80上の任意のノードのパブリックIPを使用してアクセスできないはずですか?
2)「single」DNS名を使用してLBにアクセスできるようにLBを構成したいとします(例:gitlab.test.com)。私はこれがどうやってできるのだろうと思っています。 DNSは何とかサービスにマッピングされますか(もしあれば、どのように)、サービスが管理するポッドにマッピングされますか?
Google Cloudをテスト用に使用していますが、実際のセットアップがVM上で社内で実行されるため、クラウドプロバイダー固有の方法を探しています。私の現在のHAProxy(またはHAProxyが実現できない場合はNGinx)を手に入れることができればベストだろう。
本当にありがとうございます。
NodePortを使用してサービスを公開しましたか?通常、これはクラウドサービスが依存して提供されているので、サービスにLBを割り当て、自動的に負荷分散されます。そして、ノードIPではなくLBのIPを使用してアプリケーションにアクセスします。 –
いいえ。私はGitLabサービスを公開するためにLoadBalancerを使用しています。詳細は[こちら](https://pastebin.com/DvMqSUh9)を参照してください。私の場合は、Google Cloudでテストしていますが、クラウドプロバイダは使用できません。社内で稼働しているVMでは実装できない方法は使用していません。 – Technext