2016-12-17 83 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服務器的路由。這可以通過將公共IP直接分配給運行api服務器的機器來實現,或者也可以讓負載均衡器直接引導流量。您提到您使用的是VMWare,因此根據您的網絡設置可能會有不同的路徑。

0

我還沒有完全明白這一點,因爲我有一些問題涉及到我自己的這個實現(比如,我如何擴展它?)。但是,我就是這麼做的。

首先,你顯然有一個域,這是說「mywonderfulwebsite.com」,在那裏你有你可以編輯的DNS區域,爲mywonderfulwebsite.com添加一個'A'記錄並指向你的IP地址簇。

現在,哪個IP地址很有趣,因爲Kubernetes強制您運行多個節點,至少有一個主服務器和一個應用服務器。因此,在這種情況下,要使用的IP地址是應用程序服務器的IP地址。順便說一下,爲什麼我不確定如何擴展它,因爲如果我有1個主節點+10個應用程序節點,我現在使用哪個IP地址?他們全部?

在應用程序節點上,部署ingress-nginx-controller,因爲這是您的裸機負載平衡器。裸機是一個術語,你會聽到很多,而谷歌搜索,它基本上是你有一個空的服務器,你手動安裝Kubernetes上,它不像AWS,Azure,或其他。

一旦您安裝了入口控制器,就可以開始創建使用它的入口資源。所以,我最初有一個混亂,但現在都清楚。創建入口只是應用程序部署的資源,但它需要LoadBalancer或Ingress Controller將來自外部世界的請求傳遞到羣集中。

一旦您創建了另一個入口,來自該域的任何請求都將從dns服務器傳遞到您的應用節點,它將傳入入口-nginx控制器,該入口將嘗試將其與任何現有入口資源進行匹配當它找到一個,它將配置後端爲您的應用程序和賓果創建的服務資源!你的應用程序將收到請求。

我有一個github可能會幫助你:http://github.com/christhomas/kubernetes-cluster