在使用docker.sock时,在Kubernetes上托pipeJenkins

我试图在GKE上托pipe一个Jenkins图像来运行构build。 大多数情况下,我已经按照Google的教程在Kubernetes中设置了Jenkins 。 我有一个相当基本的设置与一个主节点运行的构build。

我也希望能够在Jenkins环境中使用Docker,所以我进入了Jenkins的Global Tools Configuration并添加了一个Docker实例。 我另外在我的部署文件中映射了docker.sock以绕过“无法连接到unix上的Docker守护进程:///var/run/docker.sock。docker守护进程是否正在运行? 问题。

我目前的部署看起来像这样:

apiVersion: extensions/v1beta1 kind: Deployment metadata: name: jenkins namespace: jenkins spec: replicas: 1 template: metadata: labels: app: master spec: containers: - name: master image: jenkins/jenkins:2.95 ports: - containerPort: 8080 - containerPort: 50000 readinessProbe: httpGet: path: /login port: 8080 periodSeconds: 10 timeoutSeconds: 5 successThreshold: 2 failureThreshold: 5 env: - name: JENKINS_OPTS valueFrom: secretKeyRef: name: jenkins key: options - name: JAVA_OPTS value: '-Xmx1400m' volumeMounts: - mountPath: /var/jenkins_home name: jenkins-home - mountPath: /var/run/docker.sock name: docker-socket securityContext: privileged: true resources: limits: cpu: 500m memory: 1500Mi requests: cpu: 500m memory: 1500Mi volumes: - name: jenkins-home gcePersistentDisk: pdName: jenkins-home fsType: ext4 partition: 1 - name: docker-socket hostPath: path: /var/run/docker.sock 

不幸的是,任何版本都会失败,并出现以下错误:

 Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: .... dial unix /var/run/docker.sock: connect: permission denied 

涉及这个错误的大部分Googlesearch似乎都不是Kubernetes相关的。

我错过了什么?

更新:在某种程度上,如果我使用这个configuration,效果会更好:

 spec: replicas: 1 template: metadata: labels: app: master spec: securityContext: runAsUser: 0 containers: 

它基本上以Jenkins的身份运行。 不幸的是,这对pipe道pipe理authentication凭证的方式有一些影响。 当我尝试使用“withRepository(repoName,credentialId)”时,pipe道将一个条目添加到/var/jenkins_home/.dockercfg ,但后来的/var/jenkins_home/.dockercfg push步骤似乎无法find这些凭据(我想以后步骤最终在/root/.dockercfg/root/.docker/config.json )。

 volumes: - name: docker-sock-volume hostPath: path: /var/run/docker.sock type: File 

尝试指定types:文件