Flannel не работает при настройке кластера coreOS + kubernetes

Я установил coreOS baremetal на 4 ПК. Я установил статические IP-адреса для всех машин. Я следил за официальным руководством coreOS для coreOS + kubernetes.

Поскольку у меня статическая сетевая конфигурация и многоузловой кластер etcd, я следовал следующему руководство по начальной загрузке etcd. Я запустил сценарий на всех ПК и, используя etcdctl member list, вижу, что все узлы (ПК) присутствуют в кластере etcd.

Затем я перешел к шагу 2 (развертывание основных узлов Kubernetes) и шаг за шагом следовал инструкциям.

Я столкнулся с проблемой здесь:

curl -X PUT -d "value={\"Network\":\"$POD_NETWORK\",\"Backend\":{\"Type\":\"vxlan\"}}" "$ETCD_SERVER/v2/keys/coreos.com/network/config"

Я использовал значение по умолчанию POD_NETWORK (как указано в шаге 1) и одно из ETCD_ENDPOINTS как ETCD_SERVER. Однако, когда я заворачиваюсь, соединение устанавливается, но я получаю ответ 404 page not found.

Я предполагаю, что проблема либо во фланеле, либо в etcd (вероятно, etcd). Даже если я просто curl $ETCD_SERVER, страница не найдена. Через несколько дней я в растерянности, действительно не знаю, что может быть не так и как это исправить? Если вам нужна дополнительная информация, дайте мне знать. Если вы просто укажете мне правильное направление, чтобы я мог начать решать эту проблему, я был бы признателен. Спасибо

Изменить: я узнал, что если я curl "${ETCD_SERVER}/version", я получу правильный ответ ({"etcdserver":"2.3.7","etcdcluster":"2.3.0"}), если это поможет.

Обновление: Я обнаружил, что CURL не работает, потому что я установил ETCD_SERVER не на тот порт (2380 вместо 2379). Теперь это работает. Однако служба flanneld по-прежнему не запускается и возвращает ошибку. Job for flanneld.service failed because the control process exited with error code. Вот выход journalctl -xe

-- Subject: Unit flannel-docker-opts.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit flannel-docker-opts.service has failed.
-- 
-- The result is failed.
Mar 08 08:43:26 kubernetes-4 systemd[1]: flannel-docker-opts.service: Unit entered failed state.
Mar 08 08:43:26 kubernetes-4 systemd[1]: flannel-docker-opts.service: Failed with result 'exit-code'.
Mar 08 08:43:30 kubernetes-4 sudo[27594]:      kub : TTY=pts/2 ; PWD=/home/kub ; USER=root ; COMMAND=/bin/systemctl start flanneld
Mar 08 08:43:30 kubernetes-4 sudo[27594]: pam_unix(sudo:session): session opened for user root by kub(uid=0)
Mar 08 08:43:30 kubernetes-4 sudo[27594]: pam_systemd(sudo:session): Cannot create session: Already running in a session
Mar 08 08:43:36 kubernetes-4 systemd[1]: flanneld.service: Service hold-off time over, scheduling restart.
Mar 08 08:43:36 kubernetes-4 systemd[1]: Stopped flannel - Network fabric for containers (System Application Container).
-- Subject: Unit flanneld.service has finished shutting down
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit flanneld.service has finished shutting down.
Mar 08 08:43:36 kubernetes-4 systemd[1]: Starting flannel - Network fabric for containers (System Application Container)...
-- Subject: Unit flanneld.service has begun start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit flanneld.service has begun starting up.
Mar 08 08:43:36 kubernetes-4 rkt[27608]: rm: unable to resolve UUID from file: open /var/lib/coreos/flannel-wrapper.uuid: no such file or directory
Mar 08 08:43:36 kubernetes-4 rkt[27608]: rm: failed to remove one or more pods
Mar 08 08:43:36 kubernetes-4 flannel-wrapper[27625]: + exec /usr/bin/rkt run --uuid-file-save=/var/lib/coreos/flannel-wrapper.uuid --trust-keys-from-https --mount volume=notify,target=/run/systemd/notify 
Mar 08 08:43:36 kubernetes-4 flannel-wrapper[27625]: run: discovery failed
Mar 08 08:43:36 kubernetes-4 systemd[1]: flanneld.service: Main process exited, code=exited, status=254/n/a
Mar 08 08:43:36 kubernetes-4 rkt[27652]: stop: unable to resolve UUID from file: open /var/lib/coreos/flannel-wrapper.uuid: no such file or directory
Mar 08 08:43:36 kubernetes-4 systemd[1]: Failed to start flannel - Network fabric for containers (System Application Container).
-- Subject: Unit flanneld.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit flanneld.service has failed.
-- 
-- The result is failed.
Mar 08 08:43:36 kubernetes-4 systemd[1]: flanneld.service: Unit entered failed state.
Mar 08 08:43:36 kubernetes-4 systemd[1]: flanneld.service: Failed with result 'exit-code'.
Mar 08 08:43:36 kubernetes-4 sudo[27594]: pam_unix(sudo:session): session closed for user root
Mar 08 08:43:36 kubernetes-4 systemd[1]: Starting flannel docker export service - Network fabric for containers (System Application Container)...
-- Subject: Unit flannel-docker-opts.service has begun start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit flannel-docker-opts.service has begun starting up.
Mar 08 08:43:36 kubernetes-4 rkt[27659]: rm: unable to resolve UUID from file: open /var/lib/coreos/flannel-wrapper2.uuid: no such file or directory
Mar 08 08:43:36 kubernetes-4 rkt[27659]: rm: failed to remove one or more pods
Mar 08 08:43:36 kubernetes-4 flannel-wrapper[27674]: + exec /usr/bin/rkt run --uuid-file-save=/var/lib/coreos/flannel-wrapper2.uuid --trust-keys-from-https --net=host --volume run-flannel,kind=host,source
Mar 08 08:43:38 kubernetes-4 flannel-wrapper[27674]: run: discovery failed
Mar 08 08:43:38 kubernetes-4 systemd[1]: flannel-docker-opts.service: Main process exited, code=exited, status=254/n/a
Mar 08 08:43:38 kubernetes-4 systemd[1]: Failed to start flannel docker export service - Network fabric for containers (System Application Container).
-- Subject: Unit flannel-docker-opts.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit flannel-docker-opts.service has failed.
-- 
-- The result is failed.
Mar 08 08:43:38 kubernetes-4 systemd[1]: flannel-docker-opts.service: Unit entered failed state.
Mar 08 08:43:38 kubernetes-4 systemd[1]: flannel-docker-opts.service: Failed with result 'exit-code'.
Mar 08 08:43:39 kubernetes-4 sudo[27708]:      kub : TTY=pts/2 ; PWD=/home/kub ; USER=root ; COMMAND=/bin/journalctl -xe
Mar 08 08:43:39 kubernetes-4 sudo[27708]: pam_unix(sudo:session): session opened for user root by kub(uid=0)
Mar 08 08:43:39 kubernetes-4 sudo[27708]: pam_systemd(sudo:session): Cannot create session: Already running in a session

Обновление 2: (добавлен вывод systemctl для служб flanneld и flannel-docker-opts)

systemctl cat flannel-docker-opts вывод:

# /usr/lib/systemd/system/flannel-docker-opts.service
[Unit]
Description=flannel docker export service - Network fabric for containers (System Application Container)
Documentation=https://github.com/coreos/flannel
PartOf=flanneld.service
Before=docker.service

[Service]
Type=oneshot
TimeoutStartSec=60

Environment="FLANNEL_IMAGE_TAG=v0.6.2"
Environment="RKT_RUN_ARGS=--uuid-file-save=/var/lib/coreos/flannel-wrapper2.uuid"
Environment="FLANNEL_IMAGE_ARGS=--exec=/opt/bin/mk-docker-opts.sh"

ExecStartPre=-/usr/bin/rkt rm --uuid-file=/var/lib/coreos/flannel-wrapper2.uuid
ExecStart=/usr/lib/coreos/flannel-wrapper -d /run/flannel/flannel_docker_opts.env -i
ExecStop=-/usr/bin/rkt stop --uuid-file=/var/lib/coreos/flannel-wrapper2.uuid

[Install]
WantedBy=multi-user.target

systemctl cat flanneld вывод:

# /usr/lib/systemd/system/flanneld.service
[Unit]
Description=flannel - Network fabric for containers (System Application Container)
Documentation=https://github.com/coreos/flannel
After=etcd.service etcd2.service etcd-member.service
Before=docker.service flannel-docker-opts.service
Requires=flannel-docker-opts.service

[Service]
Type=notify
Restart=always
RestartSec=10s
LimitNOFILE=40000
LimitNPROC=1048576

Environment="FLANNEL_IMAGE_TAG=v0.6.2"
Environment="FLANNEL_OPTS=--ip-masq=true"
Environment="RKT_RUN_ARGS=--uuid-file-save=/var/lib/coreos/flannel-wrapper.uuid"
EnvironmentFile=-/run/flannel/options.env

ExecStartPre=/sbin/modprobe ip_tables
ExecStartPre=/usr/bin/mkdir --parents /var/lib/coreos /run/flannel
ExecStartPre=-/usr/bin/rkt rm --uuid-file=/var/lib/coreos/flannel-wrapper.uuid
ExecStart=/usr/lib/coreos/flannel-wrapper $FLANNEL_OPTS
ExecStop=-/usr/bin/rkt stop --uuid-file=/var/lib/coreos/flannel-wrapper.uuid

[Install]
WantedBy=multi-user.target

# /etc/systemd/system/flanneld.service.d/40-ExecStartPre-symlink.conf
[Service]
ExecStartPre=/usr/bin/ln -sf /etc/flannel/options.env /run/flannel/options.env

Обновление 3: при использовании journalctl -xer я получаю новую ошибку, если это полезно:

Mar 09 08:39:15 kubernetes-4 locksmithd[1147]: Unlocking old locks failed: [etcd.service etcd2.service] are inactive. Retrying in 5m0s.
Mar 09 08:39:15 kubernetes-4 locksmithd[1147]: [etcd.service etcd2.service] are inactive

person mythic    schedule 07.03.2017    source источник
comment
Можете ли вы опубликовать вывод вашей команды curl, если возможно, с флагом -i для включения заголовков ответа?   -  person Antoine Cotten    schedule 07.03.2017
comment
@AntoineCotten завиток прошел, но я все еще не могу запустить flanneld (см. Мое обновление)   -  person mythic    schedule 08.03.2017
comment
К сожалению, сообщения об ошибках бесполезны, не могли бы вы добавить вывод systemctl cat <unit name> для flannel-docker-opts и flanneld?   -  person Antoine Cotten    schedule 08.03.2017
comment
@AntoineCotten добавлен   -  person mythic    schedule 08.03.2017
comment
Похоже, вам придется добавить флаг --debug в переменную среды FLANNEL_IMAGE_ARGS в обоих модулях. У меня такое ощущение, что journalct -xe подавляет интересные части вывода.   -  person Antoine Cotten    schedule 08.03.2017
comment
@AntoineCotten У меня проблемы с редактированием файла flannel-docker-opts.service. Я не могу писать в него, хотя редактирую его как root. Дам тебе знать, когда разберусь.   -  person mythic    schedule 08.03.2017
comment
Вы запускали systemctl daemon-reload после редактирования файла? Вы также можете использовать systemd drop-in.   -  person Antoine Cotten    schedule 08.03.2017
comment
@AntoineCotten Я не могу его изменить, поэтому сейчас попробую добавить. Правильный ли этот синтаксис для использования флага отладки? Environment="FLANNEL_IMAGE_ARGS=--exec--debug=/opt/bin/mk-docker-opts.sh"   -  person mythic    schedule 08.03.2017
comment
Флаг должен находиться в самом конце, а не добавляться к флагу --exec.   -  person Antoine Cotten    schedule 08.03.2017
comment
@AntoineCotten Я добавил --debug со вставкой, но journalctl по-прежнему выводит тот же результат   -  person mythic    schedule 08.03.2017
comment
Типичная проблема с journald. Возможно, вы можете попытаться выполнить поиск в последних журналах с помощью journalctl -r, в противном случае вам придется экспортировать переменные из модуля в текущую оболочку и запустить команду ExecStart вручную, чтобы увидеть сообщения об ошибках.   -  person Antoine Cotten    schedule 09.03.2017
comment
@AntoineCotten У меня еще одна ошибка при использовании journalctl -r (см. Мое обновление). Если это не поможет, я также попробую запустить ExecStart команду   -  person mythic    schedule 09.03.2017
comment
Locksmithd - это что-то еще, просто снимите флаги -x и -e. Разговор становится слишком обширным, вместо этого мы должны начать чат.   -  person Antoine Cotten    schedule 09.03.2017
comment
Позвольте нам продолжить это обсуждение в чате.   -  person mythic    schedule 09.03.2017


Ответы (1)


С одного из узлов Etcd или любого из узлов, если вы отключаете Etcd на них в прокси-режиме. Попробуйте использовать двоичный файл etcdctl, включенный в CoreOS, чтобы узнать состояние кластера:

etcdctl cluster-health

должно отображаться что-то вроде:

member ce2a822cea30bfca is healthy: got healthy result from http://10.129.69.201:2379
cluster is healthy

Попробуйте также:

etcdctl set /coreos.com/network/config '{"Network":"$POD_NETWORK", "Backend": {"Type": "vxlan"}}
person Vincent De Smet    schedule 08.03.2017
comment
Все участники и кластеры здоровы. Проблема в другом. Проверьте мое обновление, пожалуйста - person mythic; 08.03.2017