无法在CoreOS上为PetSet创build持久卷索赔

尝试使用Kube-Solo设置PetSet

在我的本地开发环境中,我用CoreOS创build了Kube-Solo。 我试图部署一个包含持久卷索赔模板的Kubernetes PetSet作为PetSetconfiguration的一部分。 此configuration失败,并且没有任何一个Pod启动。 这是我的PetSet定义:

apiVersion: apps/v1alpha1 kind: PetSet metadata: name: marklogic spec: serviceName: "ml-service" replicas: 2 template: metadata: labels: app: marklogic annotations: pod.alpha.kubernetes.io/initialized: "true" spec: terminationGracePeriodSeconds: 30 containers: - name: 'marklogic' image: {ip address of repo}:5000/dcgs-sof/ml8-docker-final:v1 imagePullPolicy: Always command: ["/opt/entry-point.sh", "-l", "/opt/mlconfig.sh"] ports: - containerPort: 7997 name: health-check - containerPort: 8000 name: app-services - containerPort: 8001 name: admin - containerPort: 8002 name: manage - containerPort: 8040 name: sof-sdl - containerPort: 8041 name: sof-sdl-xcc - containerPort: 8042 name: ml8042 - containerPort: 8050 name: sof-sdl-admin - containerPort: 8051 name: sof-sdl-cache - containerPort: 8060 name: sof-sdl-camel env: - name: POD_IP valueFrom: fieldRef: fieldPath: status.podIP lifecycle: preStop: exec: command: ["/etc/init.d/MarkLogic stop"] volumeMounts: - name: ml-data mountPath: /var/opt/MarkLogic volumeClaimTemplates: - metadata: name: ml-data annotations: volume.alpha.kubernetes.io/storage-class: anything spec: accessModes: [ "ReadWriteMany" ] resources: requests: storage: 1Gi 

在Kubernetes仪表板中,我看到以下错误消息:

 SchedulerPredicates failed due to PersistentVolumeClaim is not bound: "ml-data-marklogic-0", which is unexpected. 

看起来无法创build持久性音量声明也阻止从我的本地存储库中拉出图像。 此外,Kubernetes仪表板显示持久性权利声明的请求,但状态持续“未决”。 我已经validation了这个问题是与持续的音量声明。 如果我从PetSetconfiguration中删除,部署成功。

我应该注意到,在此之前,我使用的是MiniKube,并且会看到相同的消息,但是一旦图像被拉出并且吊舱开始,索赔就会被占用,消息就会消失。

我在用

  • Kubernetes版本:1.4.0
  • Docker版本:1.12.1(在我的Mac上)&1.10.3(在CoreOS虚拟机里面)
  • Corectl版本:0.2.8
  • Kube-Solo版本:0.9.6

我不熟悉kube-solo。

但是,这里的问题可能是您正在尝试使用functiontesting版的dynamic卷configuration ,该function对环境中的卷没有特定的支持。

最好的解决方法是创build它希望手动查找的持久卷,以便PersistentVolumeClaim可以find它们。

同样的错误发生在我身上,发现松弛组中的以下configuration(考虑volumeClaimTemplatesStorageClass )的线索和此拉取请求

 volumeClaimTemplates: - metadata: name: cassandra-data annotations: volume.beta.kubernetes.io/storage-class: standard spec: accessModes: [ "ReadWriteOnce" ] resources: requests: storage: 1Gi --- kind: StorageClass apiVersion: storage.k8s.io/v1beta1 metadata: namespace: kube-system name: standard annotations: storageclass.beta.kubernetes.io/is-default-class: "true" labels: kubernetes.io/cluster-service: "true" provisioner: kubernetes.io/host-path