kubernetes - 创建挂载源路径 '/usr/share/ca-certificates/mozilla'时kubernetes集群上的gitlab-runner错误

标签 kubernetes gitlab-ci-runner google-kubernetes-engine

在遵循官方文档-> https://docs.gitlab.com/runner/install/kubernetes.html(使用kubernetes执行程序)之后,我试图在kubernetes集群上使gitlab-runner“运行”,一旦部署,就会出现错误:

Error: failed to start container "gitlab-runner": Error response from daemon: error while creating mount source path '/usr/share/ca-certificates/mozilla': mkdir /usr/share/ca-certificates/mozilla: read-only file system



我正在该网站上使用示例,但无法弄清楚为什么不允许创建该目录(据我了解,默认用户为root)

这是我的config-map.yaml:
apiVersion: v1
kind: ConfigMap
metadata:
  name: gitlab-runner
  namespace: gitlab
data:
  config.toml: |
    concurrent = 1
    [[runners]]
      name = "Kubernetes Runner"
      url = "URL"
      token = "TOKEN"
      executor = "kubernetes"
      [runners.kubernetes]
        namespace = "gitlab"

这是Deployment.yaml
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: gitlab-runner
  namespace: gitlab
spec:
  replicas: 1
  selector:
    matchLabels:
      name: gitlab-runner
  template:
    metadata:
      labels:
        name: gitlab-runner
    spec:
      containers:
        - args:
            - run
          image: gitlab/gitlab-runner:alpine-v11.5.0
          imagePullPolicy: Always
          name: gitlab-runner
          volumeMounts:
            - mountPath: /etc/gitlab-runner
              name: config
            - mountPath: /etc/ssl/certs
              name: cacerts
              readOnly: true
      restartPolicy: Always
      volumes:
        - configMap:
            name: gitlab-runner
          name: config
        - hostPath:
            path: /usr/share/ca-certificates/mozilla
          name: cacerts

以下是初始化Pod的事件的完整列表:
Events:
  Type     Reason                 Age                From                                                          Message
  ----     ------                 ----               ----                                                          -------
  Normal   Scheduled              29s                default-scheduler                                             Successfully assigned gitlab-runner-5b689c7cbc-hw6r5 to gke-my-project-dev-default-pool-0d32b263-6skk
  Normal   SuccessfulMountVolume  29s                kubelet, gke-my-project-dev-default-pool-0d32b263-6skk  MountVolume.SetUp succeeded for volume "cacerts"
  Normal   SuccessfulMountVolume  29s                kubelet, gke-my-project-dev-default-pool-0d32b263-6skk  MountVolume.SetUp succeeded for volume "config"
  Normal   SuccessfulMountVolume  29s                kubelet, gke-my-project-dev-default-pool-0d32b263-6skk  MountVolume.SetUp succeeded for volume "default-token-6hr2h"
  Normal   Pulling                23s (x2 over 28s)  kubelet, gke-my-project-dev-default-pool-0d32b263-6skk  pulling image "gitlab/gitlab-runner:alpine-v11.5.0"
  Normal   Pulled                 19s (x2 over 24s)  kubelet, gke-my-project-dev-default-pool-0d32b263-6skk  Successfully pulled image "gitlab/gitlab-runner:alpine-v11.5.0"
  Normal   Created                19s (x2 over 24s)  kubelet, gke-my-project-dev-default-pool-0d32b263-6skk  Created container
  Warning  Failed                 19s (x2 over 24s)  kubelet, gke-my-project-dev-default-pool-0d32b263-6skk  Error: failed to start container "gitlab-runner": Error response from daemon: error while creating mount source path '/usr/share/ca-certificates/mozilla': mkdir /usr/share/ca-certificates/mozilla: read-only file system
  Warning  BackOff                14s                kubelet, gke-my-project-dev-default-pool-0d32b263-6skk  Back-off restarting failed container

任何线索将不胜感激

谢谢

最佳答案

从日志中,我猜您正在使用 GKE 。 Google安全性会挂载您的/文件系统(请参阅here)。这就是为什么您会出错。

通过启用容器的privileged模式进行尝试:

containers:
   securityContext:
     privileged: true

如果这样不起作用,则将/usr/share/ca-certificates/mozilla更改为/var/SOMETHING(不确定,这是一个好的解决方案)。如果/usr/share/ca-certificates/mozilla中有文件,则将其移动/复制到/var/SOMETHING

关于kubernetes - 创建挂载源路径 '/usr/share/ca-certificates/mozilla'时kubernetes集群上的gitlab-runner错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53550367/

相关文章:

docker - 从 Gitlab CI/CD 管道执行 docker 命令时权限被拒绝

linux - 将 gitlab-ci(或任何 CI)与 kubernetes 或谷歌容器引擎一起使用(gitlab-runner 不会找到 kubectl)

kubernetes - Google Kubernetes Engine 中的存储 ReadWriteMany

go - 带有客户端 Go 资源的 MarshalYAML

docker - 在IBM Cloud Kubernetes中公开HAProxy(端口80)Docker的最简单方法

gitlab - CI_APPLICATION_TAG 在 GItLab 中定义在哪里?

google-compute-engine - 无法在 GCE 中删除后端服务

kubernetes - Kubernetes节点的时间同步问题

networking - Kubernetes 更新更改了 Google Cloud 中节点的静态+保留的外部 IP

gitlab-ci-runner - 如何使用 jobs API 检查 runner 当前是否正在运行作业