Kubernetes 获取外部服务

Kubernetes 获取外部服务,kubernetes,Kubernetes,我在Kubernetes集群之外有一个节点运行一个web服务,我需要从Pod内部访问该服务。文档中提到在此处使用不带选择器的服务: 因此,我创建了这样一个服务: { "kind": "Service", "apiVersion": "v1", "metadata": { "name": "my-service" }, "spec": { "ports": [ { "p

我在Kubernetes集群之外有一个节点运行一个web服务,我需要从Pod内部访问该服务。文档中提到在此处使用不带选择器的服务:

因此,我创建了这样一个服务:

{
    "kind": "Service",
    "apiVersion": "v1",
    "metadata": {
        "name": "my-service"
    },
    "spec": {
        "ports": [
            {
                "protocol": "TCP",
                "port": 8082,
                "targetPort": 8082
            }
        ]
    }
}
curl http://my-service/api/foo
然后创建了我的端点:

{
    "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"
遥控进入吊舱执行以下操作:

kubectl exec ta-p -c ta-c -i --tty -- /bin/bash
然后,每当我
kubectl exec
进入pod中的容器并尝试ping或卷曲我的服务时,就像这样:

{
    "kind": "Service",
    "apiVersion": "v1",
    "metadata": {
        "name": "my-service"
    },
    "spec": {
        "ports": [
            {
                "protocol": "TCP",
                "port": 8082,
                "targetPort": 8082
            }
        ]
    }
}
curl http://my-service/api/foo
它超时了。我已经验证了DNS的设置和工作是否正确。但是,我甚至尝试使用直接绑定到服务的IP地址:

curl http://10.0.124.106:8082/api/foo

有人有什么建议吗?

不知道发生了什么事。看来我的Kube集群一定处于一种尴尬的状态。我重新启动了集群,它现在正在工作…

注意:现在解决这个问题的更好方法是在服务上使用
externalName
。这将向内部Kubernetes DNS添加
CNAME
记录:


此功能是Kubernetes 1.4附带的。

请确保服务和端点的端口名称相同

{
    ...
    "ports": [
      {
        "name": "my-service",
        "port": 8082
      }
    ]
    ...
}

您仍然需要指定带有服务的端口。我想
curlhttp://my-service/api/foo
默认情况下将尝试使用端口80,但您已打开8082是的,我尝试了,但仍然没有成功。我知道我的所有Kube节点都可以到达外部服务节点,因为我可以从这些节点中的任何一个进行卷曲,并很好地到达外部服务节点。然而,蜷缩在豆荚的一侧只是超时。如果有必要的话,我正在使用1.2 alpha-6版。