在K8s中,我无法使用选择器应用程序

时间:2018-11-07 11:40:15

标签: docker kubernetes kube-proxy

我在网上搜索了很长时间。但是没用。请帮助或尝试给出一些想法来实现这一目标。

服务定义:

{
  "kind": "Service",
  "apiVersion": "v1",
  "metadata": {
    "name": "eureka1",
    "namespace": "default",
    "selfLink": "/api/v1/namespaces/default/services/eureka1",
    "uid": "aed393f1-d127-11e8-8f19-fa163e4dc428",
    "resourceVersion": "7432445",
    "creationTimestamp": "2018-10-16T09:41:40Z",
    "labels": {
      "k8s-app": "eureka1"
    }
  },
  "spec": {
    "ports": [
      {
      "name": "tcp-38761-8761-6fjms",
      "protocol": "TCP",
      "port": 80,
      "targetPort": 80,
      "nodePort": 8761
    }
  ],
  "selector": {
    "k8s-app": "eureka1"
  },
  "clusterIP": "10.254.65.233",
  "type": "NodePort",
  "sessionAffinity": "None",
  "externalTrafficPolicy": "Cluster"
  },
  "status": {
    "loadBalancer": {}
  }
}

kubectl描述服务eureka1:

Name:                     eureka1
Namespace:                default
Labels:                   k8s-app=eureka1
Annotations:              <none>
Selector:                 k8s-app=eureka1
Type:                     NodePort
IP:                       10.254.65.233
Port:                     tcp-38761-8761-6fjms  80/TCP
TargetPort:               80/TCP
NodePort:                 tcp-38761-8761-6fjms  8761/TCP
Endpoints:                172.101.51.8:80
Session Affinity:         None
External Traffic Policy:  Cluster
Events:                   <none>

kubectl得到ep:

NAME                         ENDPOINTS
eureka1                      172.101.51.8:80
eureka2                      172.101.52.8:80

如果我在eureka1应用程序telnet中访问10.254.65.233 80

Trying 10.254.65.233...
telnet: connect to address 10.254.65.233: Connection timed out

但是我可以ping 10.254.65.233

尝试使用其他服务IP而不是选择器,并且可以telnet。

kube-proxy模式为ipvs

谢谢

1 个答案:

答案 0 :(得分:0)

如果未将网络正确配置为“发夹式”流量,通常在kube-proxyiptables模式运行并且Pods与网桥网络连接时,可能会发生这种情况。 Kubelet公开了一个hairpin-mode标志,该标志允许服务的端点在尝试访问自己的服务VIP时对其自身进行负载平衡。 hairpin-mode标志必须设置为hairpin-vethpromiscuous-bridge