我有一個具有三種不同後端類型的應用程序。他們每個人都在不同的端口上收聽(例如8080,8180,8280)。 現在我想使用http://example.com:{8080,8180,8280}
來訪問它們。爲了安全起見,應該運行每個服務的兩個吊艙。kubernetes具有多個後端端口的負載平衡器
- yaml文件應該像多個後端一樣,每個後端都有不同的端口?
- 我可以在同一個文件中包含副本的定義嗎?或者是否有某種可以包含其他文件的kubernetes主文件?
我有一個具有三種不同後端類型的應用程序。他們每個人都在不同的端口上收聽(例如8080,8180,8280)。 現在我想使用http://example.com:{8080,8180,8280}
來訪問它們。爲了安全起見,應該運行每個服務的兩個吊艙。kubernetes具有多個後端端口的負載平衡器
要做到這一點,您將創建多個服務,詳情請參閱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
你如何獲得所有這些服務的單一入口點?正如原來的問題所述:'http:// example.com' ... –
啊,理解你的問題不同。見答案的第2部分。 –