0

我在网上找了很久。但是没有用。请帮助或尝试提供一些想法如何实现这一目标。

服务定义:

{
  "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

谢谢

4

1 回答 1

0

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

于 2018-11-20T07:11:12.510 回答