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
надеюсь, это сработает для вас