从任何POD呼叫服务

时间:2018-01-04 10:07:38

标签: kubernetes kubernetes-service

我想如何从节点内部或外部的任何pod调用服务。

我有3个部署和服务节点。我已经有了一个kube-proxy。

我在其他pod上执行bash:

kubectl exec --namespace=develop myotherdpod-78c6bfd876-6zvh2 -i -t -- /bin/bash

在我的另一个pod中,我试图执行curl:

curl -v http://myservice.develop.svc.cluster.local/user

这是我创建的服务:

{
  "kind": "Service",
  "apiVersion": "v1",
  "metadata": {
    "name": "myservice",
    "namespace": "develop",
    "selfLink": "/api/v1/namespaces/develop/services/mydeployment-svc",
    "uid": "1b5fb4ae-ecd1-11e7-8599-02cc6a4bf8be",
    "resourceVersion": "10660278",
    "creationTimestamp": "2017-12-29T19:47:30Z",
    "labels": {
      "app": "mydeployment-deployment"
    }
  },
  "spec": {
    "ports": [
      {
        "name": "http",
        "protocol": "TCP",
        "port": 80,
        "targetPort": 8080
      }
    ],
    "selector": {
      "app": "mydeployment-deployment"
    },
    "clusterIP": "100.99.99.140",
    "type": "ClusterIP",
    "sessionAffinity": "None"
  },
  "status": {
    "loadBalancer": {}
  }
}

1 个答案:

答案 0 :(得分:3)

在我看来,部署的网络覆盖可能有些不对劲。首先,我会仔细检查pod是否可以访问kube-dns并获得正确的服务IP。

persistent_menu

如果您能够确认,那么我还会检查kube-proxy等服务是否正常工作。您可以使用

来完成
nslookup myservice.develop.svc.cluster.local
nslookup myservice # If they are in the same namespace it should work as well

如果这不起作用,我还会通过执行

来检查Overlay网络中的pod
systemctl status kube-proxy

如果一切正常,我会尝试使用其他网络覆盖:https://kubernetes.io/docs/concepts/cluster-administration/networking/

如果这也不起作用,我会检查是否有防火墙规则阻止节点之间的某些通信。