В K8s я не могу telnet к порту, используя IP-адрес кластера из приложения селектора - PullRequest
0 голосов
/ 07 ноября 2018

Долго ищу в сети. Но бесполезно. Пожалуйста, помогите или попробуйте дать некоторые идеи, как этого добиться.

Определение услуги:

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

но я могу пинговать 10.254.65.233

Попробуйте другой сервисный IP, а не селектор и можете telnet.

Режим kube-proxy: ipvs

Спасибо

1 Ответ

0 голосов
/ 20 ноября 2018

это может произойти, когда сеть неправильно настроена для трафика «шпильки», обычно, когда kube-proxy работает в режиме iptables, и модули подключены к мостовой сети. Kubelet выставляет флаг hairpin-mode, который позволяет конечным точкам службы возвращать себе баланс, если они пытаются получить доступ к своему собственному VIP службы. Флаг hairpin-mode должен быть установлен на hairpin-veth или promiscuous-bridge.

...