Pod не может подключиться к себе через сервис IP (kubernetes v1.10) - PullRequest
0 голосов
/ 27 апреля 2018

У меня есть кластер kubernetes (v1.10) и фланель как cni. При использовании настроек по умолчанию установка работает нормально (с использованием kubeadm), но модуль не может подключиться к себе через служебный IP-адрес.

Попробовал установить режим шпильки как "неразборчивый мост", но kubelet жалуется:

Hairpin mode set to "promiscuous-bridge" but kubenet is not enabled, falling back to "hairpin-veth"

Не уверен, что происходит. Прошел через это https://kubernetes.io/docs/tasks/debug-application-cluster/debug-service/#a-pod-cannot-reach-itself-via-service-ip но без помощи. Есть указатели?

Ответы [ 2 ]

0 голосов
/ 24 августа 2018

В моем случае проблема не заключалась в отключении службы firewalld, как указано ниже. Мои модули core-dns продолжали падать с ошибкой connect - нет маршрута к хосту

https://github.com/rancher/rancher/issues/6139

Запустите приведенные ниже команды на каждом из ваших узлов, как указано

  • systemctl stop firewalld
  • systemctl отключить firewalld
0 голосов
/ 28 апреля 2018

Фланельная конфигурация по умолчанию не устанавливает для HairpinMode значение true.

https://raw.githubusercontent.com/coreos/flannel/v0.9.1/Documentation/kube-flannel.yml

Устранение проблемы путем установки значения true для свойства hairpinMode во фланелевой конфигурации. Изменение конфигурации выглядит следующим образом:

kind: ConfigMap
apiVersion: v1
metadata:
  name: kube-flannel-cfg
  namespace: kube-system
  labels:
    tier: node
    app: flannel
data:
  cni-conf.json: |
    {
      "name": "cbr0",
      "type": "flannel",
      "delegate": {
        "hairpinMode": true,
        "isDefaultGateway": true
      }
    }
  net-conf.json: |
    {
      "Network": "10.244.0.0/16",
      "Backend": {
        "Type": "vxlan"
      }
    }

Полная фланелевая конфигурация здесь:

https://gist.githubusercontent.com/phagunbaya/2a53519a9427ba0623244f1680a5b5ff/raw/13ada0d6dd92388c8c5aae93bfb1ccaf9c79f60b/flannel-0.9.1.yaml

Вместо команды по умолчанию kubectl для применения фланелевого cni используйте следующую команду:

kubectl apply -f https://gist.githubusercontent.com/phagunbaya/2a53519a9427ba0623244f1680a5b5ff/raw/13ada0d6dd92388c8c5aae93bfb1ccaf9c79f60b/flannel-0.9.1.yaml
...