我试图在Google上设置以下环境,并有三个主要问题:
数据库集群
计算集群-5个节点-与数据库集群通信-两个向世界开放的端口-运行Docker容器。
a)数据库集群运行良好,我的配置端口向世界开放,但我不知道如何将其他端口仅限于计算集群?
我设法在计算集群上运行了第一个Pod和,并创建了一个服务来打开容器以供世界使用:
主计长:
{
"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个不同的吊舱,其中2个具有开放的端口。在同一个实例上可以运行两个或多个容器。然而,标签是特定于节点,而不是容器。
c)我是否公开了所有具有相同防火墙配置的节点?我不能将标签分配给容器,所以不确定如何公开api服务?
发布于 2015-08-03 06:34:29
我会尽我所能回答你所有的问题。
首先,您将希望升级到使用Kubernetes API的v1,因为v1beta1和v1beta3将在8月5日之后不再可用:https://cloud.google.com/container-engine/docs/v1-upgrade
还有,使用YAML。它不那么冗长;)
--
现在谈谈你提出的问题:
( a)我不确定我是否完全理解您在这里要求的内容,但是在同一个集群中运行服务(使用资源限制)比尝试处理跨集群网络要容易得多。
b)您需要指定一个targetPort,以便服务知道在容器上使用哪个端口。这应该与您的资源控制器中的端口3000相匹配。有关更多信息,请参见文档。
{
"kind": "Service",
"apiVersion": "v1",
"metadata: {
"labels": [{
"name": "api-service"
}],
},
"spec": {
"selector": {
"name": "api"
},
"ports": [{
"port": 80,
"targetPort": 3000
}]
"type": "LoadBalancer"
}
}( c)是。在Kubernetes中,kube代理接受任何节点上的通信,并将其路由到适当的节点或本地吊舱。您不需要担心将负载均衡器映射到这些特定节点,或者为这些特定节点编写防火墙规则(如果您执行滚动更新,它实际上可能会改变!)。kube将将流量路由到正确的位置,即使您的服务不在该节点上运行。
https://stackoverflow.com/questions/30775379
复制相似问题