最近我在我的 kubernetes 中部署了带有 helm 的 gitlab runner。问题是我基于 docker:dind 创建了一个 docker 镜像,其中包含一些 maven 包,当 gitlab 根据我的镜像运行
runner
pod 时,该 pod 没有 docker.sock
。我不知道问题出在哪里?
我为跑步者使用了下图:
image: <my private-registry>/dind-java17-new:17
这是我在
values.yml
gitlab runner 中的运行器配置:
runners:
# runner configuration, where the multi line strings is evaluated as
# template so you can specify helm values inside of it.
#
# tpl: https://helm.sh/docs/howto/charts_tips_and_tricks/#using-the-tpl-function
# runner configuration: https://docs.gitlab.com/runner/configuration/advanced-configuration.html
config: |
[[runners]]
executor = "kubernetes"
[runners.kubernetes]
privileged = true
helper_image = "registry.gitlab.com/gitlab-org/gitlab-runner/gitlab-runner-helper:x86_64-782e15da"
我在我的
.gitlab-ci.yml
中尝试了以下解决方案,但它不起作用:
variables:
DOCKER_HOST: tcp://docker:2375
DOCKER_DRIVER: overlay2
DOCKER_TLS_CERTDIR: ""
services:
- name: <my private-registry>/dind-java17-new:17
entrypoint: ["env", "-u", "DOCKER_HOST"]
command: ["dockerd-entrypoint.sh"]
我收到了这个错误:
error during connect: Get "http://docker:2375/v1.24/version": dial tcp: lookup docker on 169.254.25.10:53: server misbehaving
很高兴听到任何解决方案!
进行这样的远程诊断总是很困难,但当我查看您的案例时,我首先会确认权限是否正确分配给了跑步者 Pod。检查
values.yml
配置中的特权设置。您的值文件中似乎有“错误的缩进”。与这里相比https://collabnix.com/install-and-configure-gitlab-runner-on-kubernetes-using-helm/
runners:
config: |
[[runners]]
executor = "kubernetes"
[runners.kubernetes]
privileged = true
由于您使用的是 DinD 设置,GitLab Runner pod 应该能够访问 Kubernetes pod 内的 Docker 套接字。确保您已将 Docker 套接字正确安装到 Runner Pod 中。您可以将volumeMounts部分添加到values.yml中的运行器配置中:
runners:
config: |
[[runners]]
executor = "kubernetes"
[runners.kubernetes]
privileged = true
helper_image = "registry.gitlab.com/gitlab-org/gitlab-runner/gitlab-runner-helper:x86_64-782e15da"
[runners.kubernetes.volumes]
- name: docker-socket
hostPath:
path: /var/run/docker.sock
[runners.kubernetes.volume_mounts]
- name: docker-socket
mountPath: /var/run/docker.sock
如果还是不行请回复。
快乐编码!