所以我有我的後端和前端作爲單獨的容器在Kubernetes部署。如何設置兩個不同的容器在Kubernetes中的兩個不同的DNS名稱上運行?
目前我不得不通過不同的端口訪問前端&後端。
如example.com:5000 = frontend
& example.com:7000 = backend
我不知道如何我可以設置我的前端容器上www.example.com
&我的後端容器中運行對api.example.com
我使用GCP運行(谷歌雲) ,已經設置我的DNS正確&我必須使用我分配給他們每個端口(5000 =前端,7000 =後端)的端口訪問服務(網絡應用程序)。
我正在考慮一個可能的解決方案,它是手動的,但我想知道是否有內置於Kubernetes。該解決方案將是:
我最好安裝在我的Kubernetes集羣的nginx的容器,將80端口上運行,這樣來通過將被重定向到相應的端口的任何請求:
如我能有api.example.com point to <my_cluster_ip>/backend
&同爲我的前端<my_cluster_ip>/frontend
讓nginx的點/後端端口5000和/前端到端口7000
我希望有內置到,我可以使用kubernetes的東西嗎?這裏是我的部署配置,因爲它代表:
{
"apiVersion": "extensions/v1beta1",
"kind": "Deployment",
"metadata": {
"name": "my_container"
},
"spec": {
"replicas": 1,
"template": {
"metadata": {
"labels": {
"app": "my_app"
}
},
"spec": {
"containers": [
{
"name": "backend",
"image": "backend_url",
"ports": [
{
"containerPort": 7000
}
],
"imagePullPolicy": "Always",
"env": [
{
"name": "NODE_PORT",
"value": "7000"
},
{
"name": "NODE_ENV",
"value": "production"
}
]
},
{
"name": "frontend",
"image": "frontend_url",
"ports": [
{
"containerPort": 5000
}
],
"imagePullPolicy": "Always",
"env": [
{
"name": "PORT",
"value": "5000"
},
{
"name": "NODE_ENV",
"value": "production"
}
]
}
]
}
}
}
}
是的,我喜歡這個解決方案比我現在的更好。我最初會這樣做,但我想要帶着寶貝步驟,因爲我剛剛開始與kubernetes! – James111
1問題:假設您在兩種不同的服務中有後端和前端,您是否會通過'cluster ip'調用後端(這不會更快,因爲它們是本地的?)或'hostname'(例如'api.example.com')? – James111
你可以通過集羣IP來調用它,但是這需要一些發現,在kubernetes的情況下kube-dns提供了這種發現。所以實際上你應該通過DNS連接。如果你在同一個命名空間中運行兩個部署/服務,就足夠通過它的名字來調用服務,比如'backend'或者通過像'backend.default.svc.cluster.local'這樣的FQDN來調用服務(如果你處於'default'命名空間)。這些域名將解析爲ClusterIP - 在大多數情況下都是一樣的,但如果您明確刪除並重新創建服務,它可能會更改。 –