2016-12-17 11 views
1

Rancherを使用してVMwareホストにKubernetesクラスタをセットアップしました。私はkubernetes-dashboardを実行しており、kubectlを使ってクラスタにコマンドを実行することができます。Kubernetes APIを公開IPに公開するにはどうすればよいですか?

ここでは、SaaSビルドツール(Distelli)を使用してアプリケーションをクラスタに展開したいと考えています。このビルドツールは、HTTPSクライアント証明書、クライアントキー、およびクラスタ証明書を使用してホストに接続する必要があります。

しかし、私のkubernetes APIは公開されていません。

これが私の現在のkubernetesサービスの構成です:

$kubectl describe services kubernetes 
Name:   kubernetes 
Namespace:  default 
Labels:   component=apiserver 
      provider=kubernetes 
Selector:  <none> 
Type:   ClusterIP 
IP:   10.43.0.1 
Port:   https 443/TCP 
Endpoints:  10.42.173.175:6443 
Session Affinity: ClientIP 

私は外部IPアドレス上でこのサービスを利用できるようにするにはどうすればよいですか?私はサーバーに入力ロードバランサを使用しようとしましたが、使用できない503サービスしか返しません。

アイデア?

答えて

1

公開インターネットからAPIサーバーへのルートが必要です。これは、apiサーバを実行しているマシンにパブリックIPダイレクトを割り当てるか、ロードバランサに直接トラフィックを与えることで実現できます。あなたはVMWare上にあると述べたので、ネットワークの設定に応じていくつかの異なるパスが存在する可能性があります。

0

私はこれを完全に把握していません。自分の実装に関連するいくつかの質問があります(たとえば、どのようにスケールすることができますか?)。しかし、これが私のやり方です。

まず「mywonderfulwebsite.com」というドメインがあります。そこには編集可能なDNSゾーンがあり、mywonderfulwebsite.comの「A」レコードを追加して、あなたのIPアドレスを指しますクラスタ。

Kubernetesのように複数のノード、少なくとも1つのマスターサーバーと1つのアプリケーションサーバーを実行するため、どのIPアドレスが興味深いのでしょうか。したがって、このシナリオでは、使用するIPアドレスは、アプリケーションサーバーのIPアドレスです。これはちょっと私がこれをスケールする方法がわからない理由です.1つのマスター+ 10アプリノードがあれば、私は今どのIPアドレスを使うのですか?それらのすべて?

アプリケーションノードでは、これはベアメタルのロードバランサであるため、ingress-nginx-controllerをデプロイします。ベアメタルとは、グーグルで多くのことを聞く言葉ですが、基本的にKubernetesを手作業でインストールした空のサーバ、AWS、Azureなどのようなものはありません。

入力コントローラをインストールしたら、それを使用する入力リソースの作成を開始できます。私が当初混乱していたものだが、今はすべてが明確である。イングレスを作成することは、アプリケーションを配備するための単なるリソースですが、外部からの要求をクラスタに渡すには、LoadBalancerまたはIngressコントローラが必要です。

別の入力を作成すると、そのドメインからのリクエストはdnsサーバーからアプリケーションノードに渡され、ingress-nginx-controllerに渡され、既存の入力リソースと照合しようとしますそれが見つかると、アプリとビンゴのために作成したサービスリソースのバックエンドで設定されます!あなたのアプリはリクエストを受け取ります。

私はあなたを助けるかもしれないgithubの持っている:http://github.com/christhomas/kubernetes-cluster

関連する問題