如何为GKE Autopilot集群中的CircleCI作业扩展存储?
在GKE Autopilot中为CircleCI作业配置持久存储解决磁盘不足问题
1. 先创建PersistentVolumeClaim(PVC)
你已经创建了PV,Pod无法直接绑定PV,需要先创建PVC来关联已有的PV:
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: circleci-job-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 10Gi storageClassName: standard volumeName: circleci-job-pv # 直接绑定你已创建的PV实例
执行命令创建PVC:
kubectl apply -f circleci-job-pvc.yaml
2. 修改CircleCI Helm Chart配置挂载持久卷
由于你使用CircleCI官方Helm Chart部署,需要通过配置修改Pod的卷挂载规则,有两种方式:
方式一:修改values.yaml配置文件
找到作业运行容器的配置段,添加卷和挂载规则:
# 示例values.yaml中的作业容器配置 jobRunner: container: volumeMounts: - name: circleci-storage mountPath: /home/circleci/project # 挂载到CircleCI作业默认工作目录 # 若作业有大量缓存文件,可额外挂载缓存目录 # - name: circleci-storage # mountPath: /home/circleci/.cache volumes: - name: circleci-storage persistentVolumeClaim: claimName: circleci-job-pvc
修改后执行Helm升级:
helm upgrade circleci circleci/circleci-runner -f values.yaml
方式二:直接通过Helm命令行传参
无需修改本地配置文件,直接在升级命令中指定挂载规则:
helm upgrade circleci circleci/circleci-runner \ --set jobRunner.container.volumeMounts[0].name=circleci-storage \ --set jobRunner.container.volumeMounts[0].mountPath=/home/circleci/project \ --set jobRunner.volumes[0].name=circleci-storage \ --set jobRunner.volumes[0].persistentVolumeClaim.claimName=circleci-job-pvc
3. 挂载目录的选择说明
- 核心工作目录:
/home/circleci/project是CircleCI作业的默认工作目录,代码克隆、构建、产物生成都在此目录进行,挂载持久卷到这里可直接替换临时存储,从根源解决空间不足问题。 - 缓存目录:如果你的作业依赖大量缓存(如npm、Maven、Docker镜像缓存),可额外挂载
/home/circleci/.cache目录,进一步降低临时存储的占用压力。
注意事项
- 你的PV使用
ReadWriteOnce访问模式,意味着只能被单个节点上的Pod使用,适合单节点运行的CircleCI作业场景;若需要多节点共享存储,需改用支持ReadWriteMany的存储类(如GKE Filestore)。 - GKE Autopilot集群中,
standard存储类是GCE默认的持久磁盘存储类,与你的PV配置兼容,无需额外调整。
内容的提问来源于stack exchange,提问作者Corentin S.
相关产品推荐
相关产品推荐

