我有一个节点在我的Kubernetes群集之外运行一个Web服务,我需要从一个Pod中访问。说明文档中提到使用服务没有选择在这里: http://kubernetes.io/docs/user-guide/services/访问外部服务
因此,我创建像一个服务:
{
"kind": "Service",
"apiVersion": "v1",
"metadata": {
"name": "my-service"
},
"spec": {
"ports": [
{
"protocol": "TCP",
"port": 8082,
"targetPort": 8082
}
]
}
}
然后创建我的终点:
{
"kind": "Endpoints",
"apiVersion": "v1",
"metadata": {
"name": "my-service"
},
"subsets": [
{
"addresses": [
{ "ip": "128.115.198.7" }
],
"ports": [
{ "port": 8082 }
]
}
]
}
测试应用程序:
apiVersion: v1
kind: Pod
metadata:
name: ta-p
spec:
restartPolicy: Never
containers:
- name: ta-c
image: "centos:7"
command: ["/bin/bash","-c", "sleep 100000"]
nodeSelector:
node: "kube-minion-1"
远程进入Pod操作:
kubectl exec ta-p -c ta-c -i --tty -- /bin/bash
然后,每当我kubectl exec
到我荚容器和尝试ping或卷曲我的服务,像这样:
curl http://my-service/api/foo
超时。我已验证DNS已设置并正常工作。然而,我甚至尝试使用直接绑定到该服务的IP地址:
curl http://10.0.124.106:8082/api/foo
任何人有任何建议吗?
您仍然需要指定一个带有服务的端口。我认为'curl http:// my-service/api/foo'会默认使用80端口,但你已经打开8082 –
是的,我试过了,仍然没有运气。我知道我所有的Kube节点都可以到达外部服务节点,因为我可以从任何节点进行卷曲并且可以很好地到达外部服务。然而,Pod的侧面卷曲只是超时。如果有问题,我正在使用1.2版本的alpha-6。 – tbs