首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用git-sync图像作为kubernetes中的一个侧面,git周期性地拉动。

如何使用git-sync图像作为kubernetes中的一个侧面,git周期性地拉动。
EN

Stack Overflow用户
提问于 2022-08-19 20:27:58
回答 1查看 780关注 0票数 0

我试图使用git-同步图像作为库伯奈特斯的侧车,定期运行git-拉,并将克隆的数据安装到共享卷中。

当我一次将它配置为同步时,一切正常。我想像每10分钟一样定期运行它。不知怎的,当我将它配置为定期运行时,pod初始化失败了。

我读过文件,但找不到合适的答案。如果你能帮我找出我在配置中遗漏了什么,那就太好了。

这是我的配置失败。

部署

代码语言:javascript
复制
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
      initContainers:
        - 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" ##repo-path-you-want-to-clone
            - name: GIT_SYNC_BRANCH
              value: "master" ##repo-branch
            - name: GIT_SYNC_ROOT
              value: /data
            - name: GIT_SYNC_DEST
              value: "hello" ##path-where-you-want-to-clone
            - name: GIT_SYNC_PERIOD
              value: "10"
            - name: GIT_SYNC_ONE_TIME
              value: "false"
          securityContext:
            runAsUser: 0
      volumes:
        - name: www-data
          emptyDir: {}

Pod

代码语言:javascript
复制
apiVersion: v1
kind: Pod
metadata:
  creationTimestamp: null
  labels:
    run: nginx-helloworld
  name: nginx-helloworld
spec:
  containers:
  - image: nginx
    name: nginx-helloworld
    resources: {}
  dnsPolicy: ClusterFirst
  restartPolicy: Never
status: {}

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-08-20 00:56:04

您正在使用git-sync作为一个initContainers,它仅在init (生命周期中一次)运行。

一个Pod可以有多个容器在其中运行应用程序,但它也可以有一个或多个init容器,这些容器在应用程序容器启动之前运行。 Init容器与常规容器完全一样,除了:

  • Init容器总是运行到完成
  • 每个init容器必须在下一个容器启动之前成功完成。init容器

因此,将其用作常规容器

代码语言:javascript
复制
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: 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" ##repo-path-you-want-to-clone
            - name: GIT_SYNC_BRANCH
              value: "master" ##repo-branch
            - name: GIT_SYNC_ROOT
              value: /data
            - name: GIT_SYNC_DEST
              value: "hello" ##path-where-you-want-to-clone
            - name: GIT_SYNC_PERIOD
              value: "20"
            - name: GIT_SYNC_ONE_TIME
              value: "false"
          securityContext:
            runAsUser: 0
        - name: nginx-helloworld
          image: nginx
          ports:
            - containerPort: 80
          volumeMounts:
            - mountPath: "/usr/share/nginx/html"
              name: www-data
      volumes:
        - name: www-data
          emptyDir: {}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73421967

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档