所以我有我的后端和前端作为单独的容器在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 - 在大多数情况下都是一样的,但如果您明确删除并重新创建服务,它可能会更改。 –