You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

配置Kubernetes中git-sync侧车容器周期性拉取失败,求助排查

问题原因与解决方案

核心问题

你把git-sync放在initContainers里,同时设置了GIT_SYNC_ONE_TIME: "false"和GIT_SYNC_PERIOD: "10"——init容器的要求是必须成功退出后,主容器才能启动,但周期性拉取模式下git-sync会一直保持运行状态,不会退出,直接导致Pod初始化流程卡住,主容器永远无法启动。

修正方案

把git-sync从initContainers移到containers列表中,作为侧车容器和主容器(nginx)一起运行,这样它就能持续周期性拉取代码到共享卷,同时不影响主容器的启动。

修正后的Deployment配置

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
        - name: nginx-helloworld
          image: nginx
          ports:
            - containerPort: 80
          volumeMounts:
            - mountPath: "/usr/share/nginx/html"
              name: www-data
        # 将git-sync转为侧车容器
        - name: git-sync
          image: k8s.gcr.io/git-sync:v3.1.3
          volumeMounts:
            - name: www-data
              mountPath: /data
          env:
            - name: GIT_SYNC_REPO
              value: "https://github.com/musaalp/design-patterns.git"
            - name: GIT_SYNC_BRANCH
              value: "master"
            - name: GIT_SYNC_ROOT
              value: /data
            - name: GIT_SYNC_DEST
              value: "hello"
            - name: GIT_SYNC_PERIOD
              value: "600" # 10分钟=600秒,注意单位为秒,原配置的"10"是10秒
            - name: GIT_SYNC_ONE_TIME
              value: "false"
          securityContext:
            runAsUser: 0
      volumes:
        - name: www-data
          emptyDir: {}

额外说明

  • GIT_SYNC_PERIOD的单位是秒,若需每10分钟拉取一次,需设置为"600",原配置的"10"会导致每10秒拉取一次
  • 无需手动创建单独的Pod,Deployment会根据模板自动管理Pod的生命周期
  • 侧车容器与主容器共享www-data卷,git-sync拉取的代码会实时同步到nginx的静态文件目录

内容的提问来源于stack exchange,提问作者Musa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 06:39:16