我正在尝试在 Google Cloud 上设置以下环境并遇到 3 个主要问题:
数据库集群
- 3个节点
- 一个端口向世界开放,几个端口向计算集群开放
计算集群 - 5 个节点 - 与数据库集群通信 - 两个对外开放的端口 - 运行 Docker 容器
a)数据库集群运行良好,我的配置端口向世界开放,但我不知道如何将其他端口限制为仅计算集群?
我设法让第一个 Pod 和 Replication-Controller 在计算集群上运行,并创建了一个服务来向世界开放容器:
控制器:
{
"id": "api-controller",
"kind": "ReplicationController",
"apiVersion": "v1beta1",
"desiredState": {
"replicas": 2,
"replicaSelector": {
"name": "api"
},
"podTemplate": {
"desiredState": {
"manifest": {
"version": "v1beta1",
"id": "apiController",
"containers": [{
"name": "api",
"image": "gcr.io/my/api",
"ports": [{
"name": "api",
"containerPort": 3000
}]
}]
}
},
"labels": {
"name": "api"
}
}
}
}
服务:
{
"id": "api-service",
"kind": "Service",
"apiVersion": "v1beta1",
"selector": {
"name": "api"
},
"containerPort": "api",
"protocol": "TCP",
"port": 80,
"selector": { "name": "api" },
"createExternalLoadBalancer": true
}
b)容器暴露了 3000 端口,服务端口 80。两者之间的联系在哪里?
防火墙使用标签。我希望在我的计算集群中运行 4-5 个不同的 pod,其中 2 个具有通往世界的开放端口。同一实例上可以运行 2 个或更多容器。然而,标签特定于节点,而不是容器。
c)我是否公开了具有相同防火墙配置的所有节点?我无法为容器分配标签,因此不确定如何公开 api 服务?