2017-01-01 60 views
2

我有一個具有三種不同後端類型的應用程序。他們每個人都在不同的端口上收聽(例如8080,8180,8280)。 現在我想使用http://example.com:{8080,8180,8280}來訪問它們。爲了安全起見,應該運行每個服務的兩個吊艙。kubernetes具有多個後端端口的負載平衡器

  1. yaml文件應該像多個後端一樣,每個後端都有不同的端口?
  2. 我可以在同一個文件中包含副本的定義嗎?或者是否有某種可以包含其他文件的kubernetes主文件?

回答

0

要做到這一點,您將創建多個服務,詳情請參閱http://kubernetes.io/docs/user-guide/services/

一個例子可能看起來像(使用YAML,你也可以使用JSON):

apiVersion: v1 
kind: Service 
metadata: 
    name: yourservice_1 
    namespace: default 
    labels: 
    component: yourcomponent 
spec: 
    type: NodePort 
    selector: 
    component: yourcomponent 
    ports: 
    - name: http 
    port: 8080 
    protocol: TCP 
--- 
apiVersion: v1 
kind: Service 
metadata: 
    name: yourservice_2 
    namespace: default 
    labels: 
    component: yourcomponent 
spec: 
    type: NodePort 
    selector: 
    component: yourcomponent 
    ports: 
    - name: http 
    port: 8081 
    protocol: TCP 
--- 
Etc. 

並回答你問題的第二部分:

---是有多個定義(可以是服務,可以是任何kubernetes yaml),在一個文件中。

但是,我建議單獨的服務文件,因爲它們通常只會加載一次,並且會爲您的pod定義(因爲它會更頻繁地更改)單獨文件。

有一點要注意多服務定義:在(至少Kubernetes 1.3.5/1.3.6,我正在使用的版本),有一個失控的pod問題,某些選擇器組合導致kubernetes儘可能多地開始豆莢。爲了防止這種情況:測試和實驗。只要你避免這種情況,它就可以工作。

單個服務入口點也可以使用,並且可以定義爲:

apiVersion: v1 
kind: Service 
metadata: 
    name: yourservice_1 
    namespace: default 
    labels: 
    component: yourcomponent 
spec: 
    type: NodePort 
    selector: 
    component: yourcomponent 
    ports: 
    - name: http 
    port: 8080 
    protocol: TCP 
    - name: http2 
    port: 8081 
    protocol: TCP 
    - name: http2 
    port: 8082 
    protocol: TCP 
+1

你如何獲得所有這些服務的單一入口點?正如原來的問題所述:'http:// example.com' ... –

+0

啊,理解你的問題不同。見答案的第2部分。 –

相關問題