2016-09-20 3 views
2

Ich versuche ein Kubernetes PetSet wie in der Dokumentation beschrieben einzurichten. Wenn ich das PetSet erstelle, scheint es nicht möglich zu sein, dass der Persistent Volume Claim an das persistente Volume gebunden wird. Hier ist meine YAML-Datei für die Definition der PetSet:Kubernetes PetSet - FailedCreate des persistenten Volumes

apiVersion: apps/v1alpha1 
kind: PetSet 
metadata: 
    name: 'ml-nodes' 
spec: 
    serviceName: "ml-service" 
    replicas: 1 
    template: 
    metadata: 
     labels: 
     app: marklogic 
     tier: backend 
     annotations: 
     pod.alpha.kubernetes.io/initialized: "true" 
    spec: 
     containers: 
     - name: 'ml' 
      image: "192.168.201.7:5000/dcgs-sof/ml8-docker-final:v1" 
      imagePullPolicy: Always 
      ports: 
      - containerPort: 8000 
       name: ml8000 
       protocol: TCP 
      - containerPort: 8001 
       name: ml8001 
      - containerPort: 7997 
       name: ml7997 
      - containerPort: 8002 
       name: ml8002 
      - containerPort: 8040 
       name: ml8040 
      - containerPort: 8041 
       name: ml8041 
      - containerPort: 8042 
       name: ml8042 
      volumeMounts: 
      - name: ml-data 
       mountPath: /data/vol-data 
      lifecycle: 
      preStop: 
       exec: 
       # SIGTERM triggers a quick exit; gracefully terminate instead 
       command: ["/etc/init.d/MarkLogic stop"] 
     volumes: 
     - name: ml-data 
      persistentVolumeClaim: 
      claimName: ml-data 
     terminationGracePeriodSeconds: 30 
    volumeClaimTemplates: 
    - metadata: 
     name: ml-data 
     annotations: 
      volume.alpha.kubernetes.io/storage-class: anything 
     spec: 
     accessModes: [ "ReadWriteOnce" ] 
     resources: 
      requests: 
      storage: 2Gi 

Wenn ich ein ‚beschreiben‘ auf meinem erstellt PetSet Ich sehe folgendes:

Name:   ml-nodes 
Namespace:  default 
Image(s):  192.168.201.7:5000/dcgs-sof/ml8-docker-final:v1 
Selector:  app=marklogic,tier=backend 
Labels:   app=marklogic,tier=backend 
Replicas:  1 current/1 desired 
Annotations:  <none> 
CreationTimestamp: Tue, 20 Sep 2016 13:23:14 -0400 
Pods Status:  0 Running/1 Waiting/0 Succeeded/0 Failed 
No volumes. 
Events: 
    FirstSeen LastSeen Count From  SubobjectPath Type  Reason   Message 
    --------- -------- ----- ----  ------------- -------- ------   ------- 
    33m  33m  1 {petset }   Warning  FailedCreate  pvc: ml-data-ml-nodes-0, error: persistentvolumeclaims "ml-data-ml-nodes-0" not found 
    33m  33m  1 {petset }   Normal  SuccessfulCreate pet: ml-nodes-0 

Ich versuche, dies in einem minikube zu laufen Umgebung auf meinem lokalen Rechner. Nicht sicher, was ich hier vermisse ???

Antwort

2

Es gibt eine open issue auf minikube für diese. Die Unterstützung für die Unterstützung von permanenten Volumes scheint zu diesem Zeitpunkt im minikube noch nicht abgeschlossen zu sein.

Damit es mit lokalem Speicher funktioniert, benötigt es das folgende Flag auf dem Controller-Manager und das ist derzeit nicht auf Minikube aktiviert.

--enable-hostpath-provisioner [= false]: Aktivieren HostPath PV Provisioning, wenn ohne Cloud-Anbieter ausgeführt wird. Dies ermöglicht Testen und Entwickeln von Bereitstellungsfunktionen. HostPath Provisioning wird in keiner Weise unterstützt, funktioniert nicht in einem Cluster mit mehreren Knoten und sollte nicht für etwas anderes als Testen oder Entwicklung verwendet werden.

Referenz: http://kubernetes.io/docs/admin/kube-controller-manager/

Für die lokale Entwicklung/Prüfung, es würde funktionieren, wenn Sie hack/local_up_cluster.sh verwenden sind einen lokalen Cluster zu starten, nachdem eine Umgebungsvariable:

export ENABLE_HOSTPATH_PROVISIONER=true 
+0

Danke für die schnelle Antwort. Ich habe diesen Beitrag gesehen, aber ich weiß nicht, wie ich diese Flagge setzen soll. Könnten Sie uns eine Anleitung geben? – millerbill3

+0

@ user1568482 Wenn Sie das kubernetes-Repository klonen und "hack/local_up_cluster.sh" ausführen, ist das möglicherweise der einfachste Weg, um einen lokalen Cluster zu starten. Ich kenne Minikube nicht gut genug, um dir eine gute Antwort zu geben. Ich kann es später versuchen. –

0

Sie sollen Kann PetSets in der neuesten Version von minikube verwenden, da es kubernetes v1.4.1 als Standardversion verwendet.

Verwandte Themen