Gitlab Runner не может разрешить DNS сервера Gitlab

Я столкнулся с довольно странной проблемой.

Прежде всего, мои настройки: я получил частный сервер Gitlab, который использует Gitlab CI Runners в Kubernetes для создания образов Docker. Для этого я использую изображение Kaniko. Бегуны обеспечиваются самим Gitlab встроенным управлением Kubernetes. Все это работает за сервером PFSense.

Теперь к моей проблеме: иногда Kaniko Pods не может определить имя хоста сервера GitLab. Это приводит к неудачному git pull и так к неудачной сборке. Я бы оценил вероятность провала на 60%, что для нас слишком велико. После повторной попытки сборки, она запустится без проблем.

Кластер Kubernetes, на котором запущен Gitlab CI, настроен на CentOS 7. SELinux и FirewallD отключены. Все хосты могут разрешать сервер GitLab. Он также не связан с конкретным хост-сервером, который вызывает проблему. Я видел сбой на всех 5 серверах, включая сервер диспетчера. Также я не видел, чтобы эта проблема появлялась в других стручках. Но другие Развертывания в кластере действительно не делают соединения через DNS. Я уверен, что Runner вообще может получить доступ к DNS, потому что он вытягивает образ Kaniko из gcr.io.

Кто-нибудь когда-либо видел эту проблему или знает обходной путь?

  • Я уже пробовал порождать блоки, которые только делают DNS-запросы к домену. Я не видел ни одного сбоя.
  • Также я попытался перезагрузить весь экземпляр кластера и Gitlab.
  • Я пытался сделать статическую перезапись DNS-маршрута в PFSense. Все та же проблема.

Вот мой конфиг CI:

build:
  stage: build
  image:
    name: gcr.io/kaniko-project/executor:debug
    entrypoint: [""]
  script:
    - echo $REGISTRY_AUTH > /kaniko/.docker/config.json
    - /kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/Dockerfile --destination $REGISTRY_URL/$REGISTRY_IMAGE:$CI_JOB_ID
  only:
    - master

Происходит следующая ошибка:

Initialized empty Git repository in /builds/MYPROJECT/.git/
Fetching changes...
Created fresh repository.
fatal: unable to access 'https://gitlab-ci-token:[MASKED]@git.mydomain.com/MYPROJECT.git/': Could not resolve host: git.mydomain.com

0 ответов

У нас была такая же проблема в течение нескольких дней. Мы пробовали изменить конфигурацию CoreDNS, переместить бегунов в другой кластер k8s и так далее. Наконец, сегодня я проверил свой личный раннер и обнаружил, что использую другую версию. У бегунов в кластере былоgitlab/gitlab-runner:alpine-v12.3.0, когда у меня gitlab/gitlab-runner:alpine-v12.0.1. Мы добавили строку

image: gitlab/gitlab-runner:alpine-v12.1.0

в values.yaml и эта проблема для нас решена

Есть env для gitlab-runner, который может решить эту проблему

- name: RUNNER_PRE_CLONE_SCRIPT
  value: "exec command before git fetch ..."

например: редактировать /etc/hosts

echo '127.0.0.1 git.demo.xxxx' >> /etc/hosts

или редактировать /etc/resolv.conf

echo 'nameserver 8.8.8.8' > /etc/resolv.conf

надеюсь, это сработает для вас

Другие вопросы по тегам