在Kubernetes

时间:2015-10-09 17:39:51

标签: kubernetes

在Kubernetes中使用gitRepo卷时,会将repo克隆到mountPath目录中。对于以下pod规范,例如:

apiVersion: v1
kind: Pod
metadata:
  name: server
spec:
  containers:
  - image: nginx
    name: nginx
    volumeMounts:
    - mountPath: /usr/share/docroot
      name: docroot-volume
  volumes:
  - name: docroot-volume
    gitRepo:
      repository: "git@somewhere:me/my-git-repository.git"

该目录显示在/ usr / share / docroot / my-git-repository的容器中。这意味着我的容器需要知道我的存储库名称。我不希望我的容器知道有关存储库名称的任何信息。它应该只知道有一个“docroot”,但初始化。 git存储库名称应该出现的唯一位置是pod规范。

Kubernetes是否还有指定git repo卷装的完整内部路径?

1 个答案:

答案 0 :(得分:0)

目前没有本地方法可以执行此操作,但我为您提交了issue

Under the hood kuberetes只是在emptyDir卷上执行git clone $source,但由于源是作为单个参数传递的,因此无法指定目标名称。

Fri, 09 Oct 2015 18:35:01 -0700 Fri, 09 Oct 2015 18:49:52 -0700 90  {kubelet stclair-minion-nwpu}       FailedSync  Error syncing pod, skipping: failed to exec 'git clone https://github.com/kubernetes/kubernetes.git k8s': Cloning into 'kubernetes.git k8s'...
error: The requested URL returned error: 400 while accessing https://github.com/kubernetes/kubernetes.git k8s/info/refs
fatal: HTTP request failed
: exit status 128

与此同时,我可以考虑两个选项来避免对存储库名称的依赖:

  1. 将存储库名称作为environment variable提供,然后可以从容器中使用
  2. 修改您的containers command以将存储库移至所需位置,然后再继续